He estado trabajando principalmente con MCU de 8 bits, donde la mayoría de los RTOS tienen demasiada sobrecarga.
La mayoría de las aplicaciones en las que he trabajado, solo han sido una interrupción periódica con if / else encadena toda la lógica de procesamiento, y luego la MCU vuelve al modo de suspensión.
Esto ha funcionado bien para muchas cosas y tiene una sobrecarga mínima. Pero para un sistema, estoy llegando al punto en que hay tantos indicadores de control que estoy listo para llamar a mi propio sistema "espagueti". Sería horrible para alguien nuevo elegir este sistema e implementar alguna nueva funcionalidad.
(Tengo un LED de dos colores, que debe tener como 8 estados diferentes y patrones de parpadeo dependientes del tiempo, dependiendo de en qué estado se encuentre el resto del sistema. Es un ejercicio horrible, por lo que debería ser tan simple ...)
Estaba mirando tal vez haciendo una máquina de estados finitos, y tratando de eliminar tantas banderas de control.
Un problema conceptual que estoy viendo es el uso de temporizadores en una máquina de estados. Actualmente, tengo un temporizador de hardware y luego un grupo de contadores de temporizadores definidos que incrementan / deincremento, una variable de indicador de control va a 0/1, por lo que vamos a través de la cadena if / else.
En mi etapa de planificación para una máquina de estado más estricta, ¿utilizaría más cronómetros de hardware y desencadenaría interrupciones externas como eventos para volver a la máquina de estado?
Mi reacción intestinal (sea correcta o no) es usar tantas interrupciones externas como sea posible para la máquina de estado si usted 1) introduce todo tipo de problemas de prioridad de interrupción potenciales que traen su propio conjunto de problemas, donde actualmente el tiempo es muy determinista pero la lógica de control es simplemente confusa y 2) está usando más corriente ejecutando un montón de temporizadores en lugar de manejar la lógica del temporizador como variables.
Veo cómo todavía puedes incrementar / eliminar los temporizadores de variables en tu máquina de estado, pero ¿no es eso anti-ético al patrón de la máquina de estado?
Me siento bastante cómodo con los punteros de función frente al debate de las declaraciones de cambio sobre cómo codificar la máquina de estados, o si desea usar una tabla de transición, etc.
Me pregunto específicamente cómo las personas han manejado el aspecto de la administración del temporizador de sus máquinas de estado de una manera elegante.