Hola a todos, este tema esta genial. Pero disculpen mi ignorancia aun no logro entender el planificador:
hice un programa de esta forma:
#use rtos(timer=0,minor_cycle=100ms) // Configuración del RTOS
//***** Tarea#: Get GPS *************
#task(rate=900ms,max=100ms)
//***** Tarea#: Lectura de Comando ****
#task(rate=800ms,max=10ms)
//***** Tarea#: Alertas en entradas *****
#task(rate=700ms,max=10ms)
//***** Tarea#: Configuración GPRS ****
#task(rate=600ms,max=100ms)
//***** Tarea#: Reporte **************
#task(rate=200ms,max=10ms)
//***** Tarea#: PWM ****************
#task(rate=100ms,max=100ms)
Lo entiendo de esta forma:
1- Hay un tiempo mínimo de ejecución que es 100ms
2- La tarea se ejecuta cada "X" tiempo y toma "Y" tiempo de ejecución.
La duda es, ¿Cuando la tarea necesita mucho tiempo, más del tiempo especificado ahí que sucede?
¿Salta la siguiente tarea y la actual se queda a medias?
Mi confusión:
1- La tarea "configuración del modem GPRS" Estoy seguro que no se toma los 100ms...
en teoría debería tomar al redor de 5 segundos (por los retardos y demás procesos).
2 - La tarea "PWM" es básicamente tiempo off, on de un led para indicar el estado del programa.
lo tengo de esta forma, "blink_led(50,500); // time up , time down" 50ms en alto, 500ms en bajo,
pero se supone que esa tarea toma máximo 100ms.
¿Entonces como es la cosa?
Pero lo curioso es que así como esta, mi programa corre muy bien. ¿Cómo es eso?
¿A dónde voy? Quiero entender cómo debo configurar optimamente el planificador.