Étape 4: Implémentation du Code ATTiny USI I2C - aperçu
Pour cette préface, le jury montré sur la photo principale de cette étape est un contrôleur de moteur pas à pas unipolaire personnalisé que j’ai conçu dans le cadre de mon projet senior ce printemps. La Commission est capable de piloter un moteur pas à pas unipolaire unique avec PWM, vitesse variable et trois modes de progression (single-stepping, pouvoir marcher et marcher à moitié). Elle exploite également en rafales, tel que le contrôleur ne fonctionnera que le moteur pendant le nombre d’étapes. Pour un fonctionnement continu, le compteur de pas à pas doit être rechargé par tout ce qui est le moteur de la Commission avant qu’elle atteigne zéro. Rien de tout cela est important pour le tutoriel.
L’élément important ici est que le robot ces power planches a trois roues (roues omnidirectionnelles, disposés selon un schéma triangulaire). Je voulais construire trois cartes identiques, mais seulement utiliser une unique interface série RS-232 de l’ordinateur principal du robot (un ordinateur portable) pour contrôler tous les trois. L’idée que je suis venu avec était d’utiliser le port série pour l’interface de l’ordinateur et le bus I2C pour connecter tous les trois conseils. Dans cette configuration, le Conseil d’administration connecté au PC prend le rôle de maître en plus d’être un nœud de l’esclave. Le PC envoie alors qu'i2c formaté messages dans le bus pour les trois conseils à exploiter sur.
Pour cette tâche, mes tableaux devra soutenir des modes tant I2C, être en mesure d’agir comme un esclave et un maître selon opérations de port série. Connaissant très peu de choses sur le matériel de l’USI et seulement un peu plus d’infos sur le protocole I2C en général, j’ai énoncé à maîtriser le protocole I2C, pour rendre mon esclave et commande à faire mes transmissions de données. Et que je l’ai fait, et cela a fonctionné ainsi pour le projet.
Tout cela jusqu'à ce que j’ai obtenu mon Raspberry Pi au moins, parce que quand j’ai enfin eu le temps de jouer avec le Pi, j’ai essayé d’accrocher mes tableaux moteur I2C à son port I2C dans le but d’avoir un robot alimenté par Pi. Malheureusement, peu importe quelles commandes que j’ai envoyé, la Pi ne pourrait pas arriver communication. Étant donné que j’avais jamais validé mon protocole au-delà de mon propre code maître parler à mon propre code d’esclave, j’ai pensé que je n’était pas de mettre en œuvre le protocole juste droit et s’assit pour que tout fonctionne correctement. Que j’ai fait, avec le nouveau code beaucoup plus profilée, organisé et compréhensible (commentaires à gogo pour tous ceux qui veulent apprendre!). Depuis mon voyage dans le monde de I2C était agitée, j’ai décidé de poster ici pour tout voir et d’entrer dans autant de détails que j’ai pu pour clarifier les fonctionnalités de I2C.
Dans le prochain quelques pas je vais parler du matériel de l’USI et comment il fonctionne comme un maître et un esclave. J’ai également joint mes fichiers de code USI. Je veux que les gens ont une bonne mise en œuvre de l’USI et je tiens aussi à lire comment ça marche, sachant exactement ce qui se passe est crucial quand portant sur un système complex, à basse altitude, alors j’ai commenté mes fichiers soigneusement.