Estoy aprendiendo a usar un RTOS, CMSIS RTOS en este caso, por lo que mi pregunta es básica. Quiero saber cuál es la mejor manera de compartir información entre dos tareas.
Lo que estoy tratando de hacer es básicamente un controlador con alguna comunicación externa. Este sistema tiene dos tareas.
Tarea 1. Tarea del controlador:
- Se ejecuta a intervalos fijos, cada X ms, lo más rápido posible
- Tiene un punto de ajuste
- Lee varios sensores
- Calcula y establece varias salidas
Tarea 2. Tarea de comunicación:
- Es un esclavo en una comunicación maestro / esclavo (Modbus). Por lo tanto, solo se comunica cuando recibe una solicitud del maestro
- Debe poder establecer el punto de ajuste
- Debe poder leer el valor / estado de los sensores y las salidas
¿Cómo deben comunicarse estas dos tareas? Si no estaba usando un RTOS, usaré variables globales privadas, envueltas con algunas funciones públicas de obtener / establecer. Pero hasta donde entiendo, esa no es la manera de hacerlo en un RTOS.
¿Debo usar una cola donde la tarea de comunicación escribe un mensaje de solicitud, que la tarea del controlador verificará cada iteración? El problema que veo con esta solución es que la tarea del controlador debe ejecutarse lo más rápido posible, por lo que la tarea del controlador solo responde a una solicitud en cada iteración que hace que la tarea de comunicación sea menos receptiva o responde a todas las solicitudes que hacen que su tiempo de ejecución sea mayor .