Étape 5: Quels sont les interruptions
Les fonctions qui sont exécutées sont appelées Interrupt Service routine (ISR) et des fonctions plus ou moins simples, mais qui ne prennent pas d’arguments.
Voyons un exemple, quelque chose comme des impulsions de comptage. Le ATMega328P a un comparateur analogique possédant une interruption associée qui est activée lorsqu’un signal dépasse une tension de référence. Tout d’abord, vous devez définir la fonction qui sera exectuted :
ISR(ANALOG_COMP_vect)
{
compteur ++ ;
}
C’est vraiment simple, que l’instruction ISR() est une macro qui indique au compilateur que la fonction suivante est un Interrupt Service Routine. Alors que ANALOG_COMP_vect est appelé Le vecteur d’interruption et il indique au compilateur qu’interruption est associée à cette routine. Dans ce cas, c’est le comparateur analogique interrompre. Alors que le comparateur voit un signal à chaque fois plus grand qu’une référence il raconte le microcontrôleur d’exécuter ce code, id est dans ce cas d’incrémentation de cette variable.
La prochaine étape est de permettre l’interruption associée. Afin qu’il nous faut définir le bit ACIE (comparateur analogique interrompre activer) du Registre ACSR (Analog comparateur réglage Register) :
SBI(ACSR,ACIE) ;
Dans le site suivant, nous pouvons voir la liste de tous les vecteurs d’interruption :
http://www.nongnu.org/avr-libc/User-Manual/group__avr__interrupts.html