Las interrupciones son una función fundamental en cualquier sistema informático y, por ello, también son esenciales en la programación de microcontroladores como Arduino. En términos generales, una interrupción es una señal que indica al procesador que debe interrumpir temporalmente la tarea que está realizando para atender otra tarea de mayor prioridad. En este sentido, las interrupciones son una herramienta clave para el control de eventos en tiempo real y para la gestión eficiente de los recursos de la CPU.
En el contexto de la arquitectura de la computadora, las interrupciones son una forma de comunicación entre los dispositivos periféricos y la CPU. Cuando un dispositivo necesita la atención de la CPU, envía una señal de interrupción que detiene temporalmente la tarea que está realizando la CPU para atender la solicitud del dispositivo. Una vez que se ha atendido la interrupción, la CPU reanuda su tarea principal. Este proceso se realiza de manera transparente al programador, quien solo debe preocuparse por definir las rutinas de interrupción adecuadas.
En Arduino, las interrupciones se utilizan para controlar eventos externos, como la detección de un botón pulsado, la llegada de un dato por el puerto serie o el cambio de estado de un pin. Para identificar el nivel de prioridad de las interrupciones, se utilizan las llamadas «interrupciones de hardware» y «interrupciones de software». Las interrupciones de hardware son aquellas que se activan por una señal eléctrica en un pin específico, mientras que las interrupciones de software son aquellas que se activan por una instrucción de software.
El proceso de interrupción se da cuando se produce una señal de interrupción. En ese momento, la CPU detiene temporalmente la tarea que está realizando y ejecuta la rutina de interrupción correspondiente. Una vez que se ha atendido la interrupción, la CPU retoma la tarea principal. Por otro lado, la suspensión del proceso se da cuando una tarea se detiene temporalmente para esperar la finalización de otra tarea. Esto se puede dar, por ejemplo, cuando se espera la llegada de un dato por el puerto serie.
En cuanto a las clases de interrupciones necesarias al programar un microcontrolador, se pueden distinguir dos tipos: las interrupciones de hardware y las interrupciones de software. Las interrupciones de hardware se utilizan para detectar eventos externos como la pulsación de un botón o la llegada de un dato por el puerto serie. Las interrupciones de software se utilizan para implementar funciones de temporización, como la generación de pulsos de reloj o la medición de tiempos. En ambos casos, las interrupciones son una herramienta clave para la programación eficiente de microcontroladores como Arduino.
El microcontrolador ATmega328 de Arduino tiene tres fuentes de interrupción: interrupciones externas, interrupciones de temporizador y la interrupción de comunicación serie (USART).
El conjunto de interrupciones secuenciales en Arduino funcionan de manera que cada interrupción se ejecuta en orden, una después de la otra, en lugar de ser ejecutadas al mismo tiempo. Esto se logra mediante la programación adecuada de los tiempos y prioridades de las interrupciones. De esta manera, se pueden manejar múltiples eventos o tareas en el microcontrolador de forma más eficiente y sin conflictos.
Para hacer una pausa en Arduino se puede utilizar la función delay(milisegundos). Esta función detiene la ejecución del programa por la cantidad de milisegundos especificada como argumento. Por ejemplo, si se desea hacer una pausa de un segundo se debe escribir delay(1000), ya que 1000 milisegundos equivalen a un segundo.