Autor Tema: Delay con freeRTOs toma mucho más tiempo.  (Leído 16339 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HumbertoVarela

  • PIC10
  • *
  • Mensajes: 4
Delay con freeRTOs toma mucho más tiempo.
« en: 05 de Diciembre de 2021, 14:49:28 »
Hola comunidad.

Estoy aprendiendo un poco de freeRTOs con el PIC32 y MPLAB Harmony.

Estoy haciendo un delay simple para encender un led así en un tarea

Código: C++
  1. const TickType_t delay500ms = 500 / portTICK_PERIOD_MS;
  2.  
  3.      for( ;; )
  4.      {
  5.        
  6.          GPIO_RE3_Toggle() ;
  7.          vTaskDelay( delay500ms );
  8.      }

Al principio funcionaba muy bien, pero ahora que he agregado nuevos procesos, toma más tiempo el encendido y pagado del led.

Puede ser un problema del oscilador?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Delay con freeRTOs toma mucho más tiempo.
« Respuesta #1 en: 05 de Diciembre de 2021, 14:57:20 »
Hola comunidad.

Estoy aprendiendo un poco de freeRTOs con el PIC32 y MPLAB Harmony.

Estoy haciendo un delay simple para encender un led así en un tarea

Código: C++
  1. const TickType_t delay500ms = 500 / portTICK_PERIOD_MS;
  2.  
  3.      for( ;; )
  4.      {
  5.        
  6.          GPIO_RE3_Toggle() ;
  7.          vTaskDelay( delay500ms );
  8.      }

Al principio funcionaba muy bien, pero ahora que he agregado nuevos procesos, toma más tiempo el encendido y pagado del led.

Puede ser un problema del oscilador?

Si lo haces con vTaskDelayUntil así:

Código: C
  1. const TickType_t delay500ms = 500 / portTICK_PERIOD_MS;
  2.      portTickType xLastExecutionTime;
  3.      for( ;; )
  4.      {
  5.        
  6.          GPIO_RE3_Toggle() ;
  7.          xLastExecutionTime = xTaskGetTickCount();
  8.          vTaskDelayUntil(&xLastExecutionTime,delay500ms);
  9.      }

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado HumbertoVarela

  • PIC10
  • *
  • Mensajes: 4
Re:Delay con freeRTOs toma mucho más tiempo.
« Respuesta #2 en: 05 de Diciembre de 2021, 15:08:22 »
Si, funciona. gracias,  :-/

pero que tiene de especial vTaskDelayUntil??????

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Delay con freeRTOs toma mucho más tiempo.
« Respuesta #3 en: 05 de Diciembre de 2021, 15:15:28 »
Si, funciona. gracias,  :-/

pero que tiene de especial vTaskDelayUntil??????

Hola. También soy novato en freeRTOs, apenas tengo 3 meses de estar usándolo.

Yo entiendo así.

vTaskDelay le dice al  scheduler vuelve a ejecutarme en 500ms. En ese instante el scheduler ejecuta otra tarea de igual prioridad o superior, pero mientras que existan tareas de mayor prioridad, tu tarea de menor prioridad tendrá que esperar el tiempo que deba. Y puede ser más de 500ms.

Mientras que  vTaskDelayUnti es mucho más precisa, debe tener algún inconveniente o defecto, pero hasta ahora trabaja muy bien en un proyecto que estoy haciendo.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado HumbertoVarela

  • PIC10
  • *
  • Mensajes: 4
Re:Delay con freeRTOs toma mucho más tiempo.
« Respuesta #4 en: 05 de Diciembre de 2021, 15:31:50 »
Si, funciona. gracias,  :-/

pero que tiene de especial vTaskDelayUntil??????

Hola. También soy novato en freeRTOs, apenas tengo 3 meses de estar usándolo.

Yo entiendo así.

vTaskDelay le dice al  scheduler vuelve a ejecutarme en 500ms. En ese instante el scheduler ejecuta otra tarea de igual prioridad o superior, pero mientras que existan tareas de mayor prioridad, tu tarea de menor prioridad tendrá que esperar el tiempo que deba. Y puede ser más de 500ms.

Mientras que  vTaskDelayUnti es mucho más precisa, debe tener algún inconveniente o defecto, pero hasta ahora trabaja muy bien en un proyecto que estoy haciendo.

Muchas gracias, por a seguir aprendiendo, ya iba como 2 días con el problema y no sabía que estaba pasando.