Soms kan het voorkomen dat er iets afgehandeld moet worden in een microcontroller dat absolute voorrang heeft t.o.v. een ander proces dat de microcontroller op dat moment aan het regelen is. Het lukt de microcontroller niet om dat in de snelheid van het lopende programma te regelen. Een goed voorbeeld hier van is: Het uitlezen van een rotary encoder. Bij het uitlezen van een rotary-encoder mag de microcontroller nooit een puls missen. Zou de microcontroller wel een puls missen dan is de positie van de encoder bij de microcontroller niet gelijk aan de werkelijke positie van de encoder zelf!! In het voorbeeld hier onder wordt een schakelaar gebruikt in plaats van een rotary encoder:
![]() Het programma: // Dit voorbeeld laat zien hoe je werkt met external interrupts. // Wiring supports external interrupts 0-7, which are // triggered by digital i/o pins 0-3 and 36-39. Arduino // supports external interrupts on pins 2 and 3. int n = 0; // n = Aantal interrupts die geteld worden void setup() { Serial.begin(9600); // start serial communication pinMode(2, INPUT); // maak van pin 2 een input pin // koppel myRoutine() to ext interrupt 0, en zorg er voor // dat de subroutine wordt aangeroepen zodra pin 2 falls van // HOOG naar LAAG. // Alternatieven zijn LOW, CHANGE, RISING. attachInterrupt(0, myRoutine, FALLING); } void loop() { Serial.println(n); // print de huidige waarde van n delay(200); } void myRoutine() { n++; // tel deze interrupt }
|