¿Cuánto tiempo debe retrasarse una tarea FreeRTOS en cada ciclo?


7

Estoy trabajando en un proyecto de AWS IoT donde las rutinas MQTT, las llamadas de retorno de llamada y todo lo demás, aparte de la inicialización, están dentro de una tarea creada por xTaskCreatePinnedToCore().

Esta tarea hace algunas cosas: conecte a AWS, suscribirse a los temas y luego se entra en un bucle infinito en el que llama aws_iot_mqtt_yieldcomprueba los errores etc. En cada bucle También llamo: vTaskDelay(10 / portTICK_RATE_MS);. Es de un proyecto de ejemplo donde el retraso fue de 1 segundo que luego disminuí a 10 ms. ¿Qué es un retraso "saludable"? ¿Por qué necesitamos un retraso aquí? ¡Gracias!

Respuestas:


7

No deberías necesitar un retraso, o al menos no uno que siga despertando.

Si, como sugiere, ha iniciado un subproceso que se desencadena por una devolución de llamada, entonces no hay necesidad de un bucle principal. A menos que ese ciclo esté haciendo algo útil cada vez que se ejecute, solo está usando tiempo de CPU y energía eléctrica cada vez que se activa y vuelve a entrar.

O bien establecería un retraso del valor entero máximo, para retrasar efectivamente para siempre, o simplemente terminar ese hilo.

Si hay algo útil en el bucle, entonces el retraso sensible dependerá completamente de lo que ese algo es.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.