HACKGYVER HACK GUY VERS L ÉLECTRONIQUE. M1.10 INTERRUPTIONS Les interruptions sont des demandes urgentes adressé au processeur. Merci pour vos participations, retours, corrections et insultes à l adresse : jyropp@mail.com objet : [hackguy] Je décline bien sur toute responsabilité, etc
SOMMAIRE Rappel : Architecture Interne du µp Concept Interruption logiciel Interruption matériel (IRQ) «Masquable» ou «non masquable»? Liste des interruptions du MSP430 Et Energia? A quoi cela sert? 2
RAPPEL : ARCHITECTURE DU MSP430 2553G 3
CONCEPT : INTERRUPTION LOGICIELLE Selon leur cheminement, on distingue des interruptions matérielle et logicielle. Les logicielles sont déclenché explicitement par l instruction ASM «int». Elles correspondent à des «sous programmes» avec comme seule particularité de faire partie de la table des vecteurs d interruptions. En X86, les exemples sont nombreux, il suffit de voir les appels systèmes en assembleur : INT 21h (interruption DOS), INT 80h (Linux), INT 2Eh (Windows) INT 13h (BIOS HDD); 4
CONCEPT : INTERRUPTION MATÉRIELLE (IRQ) Les interruptions «Matérielles» nous concernent beaucoup plus. Se sont des informations directement adressé au contrôleur d interruption, qui en informe le processeur. Par exemple : «RST» RESET sur la PIN16. Le processeur interrompt alors le programme en cours pour exécuter la fonction choisie. (dans notre exemple, il redémarre. 5
MASQUAGE? une interruption matérielle correspond a une entrée physique du CPU. Quant celle-ci est activée, une recherche dans la table des vecteurs permets de lancer la routine correspondante. Mais parfois, dans certaine opération complexe (exclusion mutuelle par ex) on doit éviter le plus possible l interruption, car on risque une perte de contexte, ou pire un blocage du système. Dans ce cas précis, on «masque» les interruptions. Attention, si on masque trop, on perd des infos. 6
MASQUABLE / NON MASQUABLE (NMI)? Certaine interruption ne doivent pas être masqué, le Watchdog, le RESET ou des erreurs graves par exemple. Elles sont notées «non masquable» NMI. 7
LISTE DES INTERRUPTIONS DU MSP430 8
ET ENERGIA? ET A QUOI CELA SERT? Imaginons un Robot : Celui-ci est dans une boucle logicielle qui contrôle un pont en H. le robots avance. Mais un obstacle surgit. Le contact de collision envoie l information au microcontrôleur. Celui-ci est dans une boucle, si on utilise pas les interruptions, il continue sa boucle, et prendras en compte l évènement trop tard En activant les interruptions sur la PIN du contact de collision, en cas de «rencontre» on peut exécuter une routine (blocage des moteurs ou marche arrière dans notre exemple). 9
ET ENERGIA? A QUOI CELA SERT? Dans Energia (comme dans Arduino ) : http://arduino.cc/fr/main/referenceetendue Assigne nos routines dans la table des vecteurs d interruptions. Masquage / démasquage 10
ET ENERGIA? Exemple (arduino.cc.fr) : volatile int state = LOW; // déclaration d'une variable volatile Une variable devra être déclarée volatile chaque fois que sa valeur pourra être changée par quelque chose d'autre que le code dans laquelle elle apparaît, tel qu'un fil d'exécution concurrent. (arduino.cc) Source de l interruption. void setup() { pinmode(pin, OUTPUT); attachinterrupt(push2, blink, FALLING); // attache l'interruption de l interrupteur à la fonction blink } void loop() { digitalwrite(pin, state); // la LED reflète l'état de la variable } void blink() // la fonction appelée par l'interruption externe n 0 { state =!state; // inverse l'état de la variable Arduino : LOW = L entrée est au niveau bas RISING = L entrée passe d un niveau bas à un niveau haut FALLING = L entrée passe d un niveau haut à un niveau bas CHANGE = L entrée a changé de niveau. } 11 Energia ne gère que FALLING & RISING, pour l instant (http://forum.43oh.com/topic/3214-how-to-usingattachinterrupt/)
PROCHAINES ÉTAPES? Test de notre 1 er robot. Conception d un capteur infrarouge 18Khz pour le robot. Mesure signal analogique (tension, température, etc ) 12