Pour continuer l’utilisation de l’assembleur pour commander
le GPIO, le programme suivant va simuler un feu tricolore. Son démarrage
s’effectuera par appui sur un bouton poussoir. Pour le schéma électrique nous
utiliserons le montage précédent avec une LED rouge reliée au pin 18 et nous
ajoutons une LED orange reliée au pin 23 et une LED verte reliée au pin 25
(avec bien entendu une résistance de protection). Le bouton poussoir sera relié
au pin 4 au travers d’une résistance de 10k. Les autres extrémités seront
reliées au pin 3 (ground).
Dans le programme, les informations concernant ces N° de
pins seront mises sous forme de constantes, ce qui permet de les modifier
facilement. Ensuite le programme reprend l’ouverture du périphérique et son
mappage en mémoire. Il reprend les routines de sélection d’allumage et
d’extinction des pins. Nous avons rajouté une routine de lecture de l’état de
chaque pin (etatPin) qui exploite l’information contenue dans les registres GPLEV0
du GPIO. Cette routine servira pour lire l’état du bouton poussoir. Nous avons
aussi ajouté une routine pour gérer plusieurs temps d’attente en appelant la
fonction système déjà vue sleepnano.
Les instructions du fonctionnement se retrouvent dans la
routine traitement. Pour les 3 pins concernant les leds, nous leur attribuons
la fonction de sortie (output) et pour le pin 4 lié au bouton poussoir la
fonction entrée (input).
Puis dans une boucle, nous testons l’état du bouton poussoir
que nous terminerons lorsque son état aura changé. Puis nous allumerons
successivement les 3 led en laissant des temps d’allumage de 25, 5 et 30
secondes.
Ces allumages font partie d’une boucle sans fin. Il faudra
donc arrêter le programme par un ctrl-C ce qui laissera une LED toujours
allumée. Il serait donc utile d’ajouter un autre bouton poussoir pour arrêter
proprement la boucle et terminer le programme.
Aucun commentaire:
Enregistrer un commentaire