Portada » Informática » Implementación y Gestión de Temporizadores e Interrupciones en Sistemas Empotrados
La gestión por encuesta es un método que utiliza un temporizador (timer) como base para la medición del tiempo en sistemas computacionales, similar a los relojes de los computadores:
Raspberry Pi System Timer: Contador de 64 bits que opera a 1 MHz.
El temporizador tiene 6 registros (o «7» considerando los dos registros de lectura del contador) para la gestión de eventos:
Los dispositivos pueden «avisar» de que se ha producido un evento mediante interrupciones. Para gestionar las interrupciones, las procesaremos como excepciones.
Una excepción es una petición que se hace a la CPU para que detenga, de forma temporal, la tarea que está ejecutando y pase a ejecutar otra.
Para atender una excepción, esta no puede estar enmascarada. Se detiene el código que se estaba ejecutando y se salta a la rutina de atención. Una vez finalizada la rutina, hay que garantizar la ejecución del programa interrumpido.
Para garantizar que se podrá seguir ejecutando el programa interrumpido, «salvamos su contexto».
La CPU tiene registros específicos según la excepción a ejecutar.
En el proceso de identificación de la excepción, la CPU guarda el contexto, salta a la rutina de atención, y esta última guarda el resto del contexto que se vaya a modificar.
La rutina de atención debe recuperar el estado original y retornar el control al programa interrumpido.
La Raspberry Pi consta de un controlador de interrupciones con las siguientes características:
Los registros del controlador de interrupciones se agrupan de tres en tres (IRQ Basic, IRQ1, IRQ2) y los registros de control FIQ (Pending, Enable, Disable).
Al usar interrupciones, debemos separar el algoritmo en una función de arranque y otra de atención a la interrupción.
Esta función también inicializará el temporizador.
Esta rutina realiza el resto del proceso:
Una interrupción es un suceso asíncrono, consecuencia de un evento externo, que se atenderá mediante la ejecución de una rutina específica.
Por ello, la gestión de interrupciones requiere separar la rutina en dos partes: