INTERRUPCIONS
INTERRUPCIONS
Les interrupcions són esdeveniments que fan que el microcontrolador aturi l'execució del programa principal per executar una altra tasca. En finalitzar aquesta, retorna a l'anterior i continua a partir del punt on s'ha produït la interrupció.
Amb interrupcions no cal comprovar constantment el valor del pin corresponent. Quan es detecta un canvi en aquest, es desencadena un esdeveniment (es crida una funció). Això és especialment útil per activar una acció sempre que es detecti moviment o quan es prem un polsador sense necessitat de comprovar-ne constantment l'estat.
Pins d'interrupció de l'ESP32
Podem utilitzar tots els GPIO com a interrupcions, excepte els GPIO 6 a GPIO 11.
Veure diagrama de pins de l'ESP32 👉
La configuració d'una interrupció requereix dos elements:
Un disparador/activador (trigger) i un controlador (handler).
El trigger informa al microcontrolador de què ha de mirar per saber quan ha d'interrompre el que està fent; el handler és el codi que s'executa després d'activar la interrupció.
La configuració d'una interrupció es realitza utilitzant el mètode irq() aplicat a un pin concret:
pin.irq (trigger=condició, handler=callback)
pin: número o nom del pin que dispara la interrupció.
trigger: Especifica en quines condicions es dispararà la interrupció externa:
Pin.IRQ_FALLING: El disparo se produce en el flanco de bajada (cuando el pin cambia de 1 a 0)
Pin.IRQ_RISING: El disparo se produce en el flanco de subida (cuando el pin cambia de 0 a 1)
Estas dos condiciones se pueden combinar con la función “OR” para que el disparo se produzca en ambos flancos (ascendente O descendente).
handler: Es la función que atiende a la interrupción. Esta función tiene un único parámetro de entrada que es el número de pin que disparó la interrupción.