En general, las interrupciones se desactivan cuando el procesador ingresa en un controlador de interrupciones y se vuelven a habilitar automáticamente cuando regresa el controlador de interrupciones. (Consulte las instrucciones de CLI
, SEI
y RETI
en el manual para obtener más información).
Cuando se dispara la interrupción externa, el indicador de interrupción INTF0
en EIFR
se establece en 1. Cuando las interrupciones están habilitadas y este bit es 1, el procesador ingresa al controlador de interrupciones. Dentro del manejador de interrupciones, este bit podría nuevamente establecerse en 1, pero la interrupción no volverá a ocurrir hasta que las interrupciones se vuelvan a habilitar. También puede borrar explícitamente este bit a 0 escribiendo un 1 en el registro. Si estaba dentro del controlador de interrupción, un evento externo establece el bit y borra el bit antes de regresar del controlador de interrupción, entonces la interrupción no se activará nuevamente.
Sin embargo, tenga en cuenta que en realidad no puede establecer o borrar INTF0
si está utilizando interrupciones activadas por nivel, solo coincide con el estado del pin en todo momento. Si el pin está bajo y las interrupciones están habilitadas, volverá a activar la interrupción. La única forma de detenerlo es deshabilitar las interrupciones (ya sea globalmente, o ocultando el bit INT0
en particular en EIMSK
).