Interruzioni hardware.
attachInterrupt(pin, ISR, mode);
Collega l'interruzione al numero di interruzione pin, assegna la funzione ISR come gestore e imposta la modalità di interruzione su mode:
- LOW - attivato da un segnale LOW sul pin.
- RISING - attivato quando il segnale sul pin cambia da LOW ad HIGH.
- FALLING - attivato quando il segnale sul pin cambia da HIGH a LOW.
- CHANGE - attivato quando il segnale cambia (da LOW ad HIGH e viceversa).
Non tutti i pin possono avere Interrupt:
MCU/numero di interrupt INT 0 INT 1 INT 2 INT 3 INT 4 INT 5
ATmega 328/168 (Nano, UNO, Mini) D2 D3 - - - -
ATmega 32U4 (Leonardo, Micro) D3 D2 D0 D1 D7 - ATmega 2560 (Mega) D2 D3 D21 D20 D19 D18
digitalPinToInterrupt(pin);
In base alla scheda selezionata in ArduinoIDE, restituisce il numero di interrupt in base al numero di pin, quindi puoi dichiarare interrupt come questo: attachInterrupt(digitalPinToInterrupt(pin), ISR, mode).
detachInterrupt(pin);
Disabilita l'interruzione sul pin.
interrupts()
Abilita tutti gli interrupt (funzione macro su sei()).
noInterrupts()
Disabilita tutti gli interrupt (funzione macro su cli()).
Collegare l'interruzione leggi di più qui.