Étape 9: Firmware - microcontrôleur primaire
Maintenant, on peut programmer le microcontrôleur primaire. Placer les autres MSP430G2553 dans le Launchpad et connectez-le à votre ordinateur. Energia devrait être déjà tous ensemble vers le haut.
Le microcontrôleur principal est responsable de la lecture des différents boutons, le reste des contrôles analogiques (6 au total), interprétant l’entrée de l’encodeur rotatif et en passant données série du microcontrôleur secondaire à travers l’ordinateur connecté.
Comprendre le Code
J’aborderai tout d’abord ce que le microcontrôleur principal fait avec messages du microcontrôleur secondaire parce qu’il est le plus simple. Messages de microcontrôleur secondaire déjà venu en sur la broche RXD pré-formatée, donc le microcontrôleur principal renvoie simplement le message reçu sur son propre broche TXD vers l’ordinateur. Le code pour que cela se trouve dans la boucle principale en bas. C’est tout ce qu’il est pour les messages de clavier pour l’instant.
Maintenant, si nous regardons vers le haut du programme, vous remarquerez que je définis une classe appelée AnalogControl. Cette classe est presque identique à la SPI_Control dans le firmware du microcontrôleur secondaire, mais il lit l’ADC bord au lieu de demander les MCP3008 une valeur. Il a intégré en moyenne et le lissage de code. Ce qui en fait une classe permet de configurer facilement n’importe quel nombre de contrôles analogiques. Vous pouvez définir ce que le contrôle ID est la tige qui la valeur de l’ADC est prélevée et la sensibilité du contrôle.
Suivant est la classe de l’encodeur rotatif. Cela vous permet de configurer facilement n’importe quel nombre d’encodeurs rotatifs ainsi, mais pour moi, on est assez dans ce projet. La classe de l’encodeur rotatif doit simplement savoir ce qui épingle à utiliser. Les deux premiers sont la molette réelle et le troisième est l’entrée du bouton intégré.
Dans la boucle, nous appeler isNew pour chaque contrôle et utiliser sa valeur de retour pour déterminer si nous devons envoyer un changement de contrôle ou non. La fonction isNew contient un lissage intégré analogique des contrôles afin qu’une nouvelle valeur n’est pas envoyée à chaque boucle (résistances mesurées peuvent être légèrement instables pour diverses raisons comme la température et des vibrations), cela empêche le contrôle gigue.
Nous vérifions également un tableau de valeurs booléennes qui indiquent si un contrôle numérique a changé d’État. Cet indicateur est défini dans les routines de service d’interruption pour certains un bouton. Encore une fois, ceci est fait parce que l’envoi de données en série dans un rapport de recherche internationale est inefficace.
Pour obtenir une explication du fonctionne du code de l’encodeur rotatif, consulter ce tutoriel.
Merci pour le tutoriel de bildr ci-dessus, qu’est ce que j’ai basé mon code molette hors de !
Télécharger le Code
Maintenant que vous comprenez le code principal microcontrôleur, nous pouvons transférer au microcontrôleur ! Copiez mon code dans votre fenêtre de Energia et cliquez sur le bouton vérifier. Lorsque le processus de génération est complet et sans erreurs, vous pouvez télécharger le code pour le microcontrôleur.
Ce microcontrôleur reste dans la zone de lancement dans le projet, donc vous pouvez juste le laisser où il est une fois que vous avez terminé de programmation il.