winavr:interruption_externe
Table des matières
Utiliser les interruptions externes
Exemple 1 : Comptabilise les interruptions sur INT0
#include <avr/io.h> #include <avr/interrupt.h> //Librairie pour la gestion des interruptions ISR(INT0_vect) //Vecteur d'interruption de INT0 { PORTA++; //Incrémente PORTA } int main (void) { DDRD &=~_BV(2); //INT0 en entrée PORTD |= _BV(2); //Active la résistance de tirage sur l'entrée INT0 DDRA = 0xFF; //Port A en sortie GICR |= _BV(INT0); //Interruption sur INT0 MCUCR |= _BV(ISC01); //Interruption sur front descendant donc dans le registre MCUCR ISC01 = 1 ISC00 =0 //Vu que MCUCR à comme valeur par defaut 0 on a juste à mettre ISC01 à 1 Cf : datasheet sei(); //Active les interruptions while(1); //Boncle sans fin return 1; }
Proposition de montage
C1 sert à supprimer les rebonds
A chaque pression sur S1, les leds afficheront la valeur binaire de PORTA.
Vidéo
winavr/interruption_externe.txt · Dernière modification : 2017/12/06 16:54 de 127.0.0.1