====== Utiliser les interruptions externes ====== ===== Exemple 1 : Comptabilise les interruptions sur INT0 ===== #include #include //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. {{:avr:winavr:avr_int0.gif|:avr:winavr:avr_int0.gif}} ==== Vidéo ==== [[http://www.jelectronique.com/video.php?nom=avr_int0|{{ :projets:devmodavr:avr_int.jpg |:projets:devmodavr:avr_int.jpg}}]]