La programación de los microcontroladores es relativamente sencilla, pues el conjunto de instrucciones disponible funciona más o menos de manera por demás lineal. No es fácil hacer multitareas y la única forma quizás de hacer semejantes procesos “al mismo tiempo” es usando interrupciones. Para ponerlo en lenguaje sencillo: el programa revisa cada cierto tiempo (que puede ser muy corto) que ocurrió una interrupción, a la cual hay que hacerle caso. Entonces se ejecuta esa parte del código que resuelve la interrupción y regresa el sistema a hacer lo que estaba haciendo. Simula, es la verdad, multiprocesos, pero es lo que práticamente hacen todos.

S1axter, un ingeniero en electrónica, con muchos hobbies y aficiones, hizo un gran trabajo explicando esta idea de las interrupciones y del cómo define los campos de bits para poder hacer, en alguna medida, multiprocesos, particularmente con eventos que se disparan en ciertos tiempos. Básicamente usa una estructura de C para ir llevando cuenta de una bandera que le obliga simplemente un bit de almacenamiento (en los microcontroladores, la necesidad de ahorrar almacenamiento es a veces crítica). Vale la pena echarle un vistazo a cómo declara la estructura como volátil, de manera que el sistema no tenga un comportamiento inesperado al probarlo.

Slaxter tiene un interesante blog que vale la pena seguir.

Referencias:

Blog de S1axter