
Las interrupciones se utilizan para manejar eventos que no ocurren durante la ejecución secuencial de un programa.
Por ejemplo, queremos realizar ciertas tareas y estas tareas se ejecutan secuencialmente en su programa Arduino. En ocasiones, hay unas tareas que solo se ejecutarán cuando ocurre un evento especial, como una señal de activación externa al pin de entrada digital de un microcontrolador.
Una interrupción externa o una «interrupción de hardware» es causada por el módulo de hardware externo. Por ejemplo, Un Sensor de efecto Hall que detecta la vuelta en un cigueñal, o un botón táctil que envía una señal con un toque. En este caso, una interrupción GPIO sucede cuando se realiza dicha acción.
La idea es que interrupción se activará cuando se detecte el movimiento.
Con la interrupción, no necesitamos verificar continuamente el estado del pin de entrada digital. Cuando ocurre esta interrupción (se detecta un cambio), el procesador detiene la ejecución del programa principal y llama a una función conocida como ISR o Rutina de Servicio de Interrupción (Interruption Service Routine en inglés).
Luego, el procesador trabaja temporalmente en una tarea diferente (ISR) y luego regresa al programa principal después de que finaliza la rutina de con la que estaba trabajando (el loop).
Muy buena explicación. Siempre tuve dudas sobre cómo funciona la ISR en la práctica. ¿Hay diferencias importantes entre interrupciones externas y las internas del microcontrolador, o se manejan igual en el código?
¡Gracias por tu comentario! En general, las interrupciones externas e internas se configuran de forma parecida en el código, pero tienen diferencias clave:
✅ Interrupciones externas suelen venir de pines GPIO. Se usan para eventos externos (botón, sensor, señal de otro dispositivo). En el código se configura el pin y el tipo de activación (flanco de subida, bajada, cambio).
✅ Interrupciones internas son generadas por periféricos del microcontrolador (temporizadores, UART, ADC, etc.). Se habilitan a nivel de registro o librería, y suelen tener controladores o ISR específicos.
En muchos entornos (como Arduino) la función ISR se define igual, pero la fuente de la interrupción y su configuración cambian.