Pregunta

Estoy utilizando un MSP430f5438 con la versión 5.4 de FreeRTOS.

Estoy teniendo un problema divertido que no puedo entender.

Básicamente, cuando me puse configTICK_RATE_HZ a diferentes valores, el LED parpadea rápido o más lento; debe mantenerse al mismo ritmo. Parpadea más lento cuanto mayor me puse configTICK_RATE_HZ, y más rápido cuando me puse tick_rate inferior.

vTaskDelayUntil (y xLastFlashTime, xFlashRate); es tal que el LED sólo debe parpadear una vez por segundo, no importa lo que el configTICK_RATE_HZ es. Di un paso a través y comprobado el xFlashRate para asegurarse. Siempre es = a la configTICK_RATE_HZ. Código:

xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals

/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/ 
xLastFlashTime = xTaskGetTickCount();
for(;;) { 
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED ); 
flashled();//this should happen every 1 second.
}

El parpadeo del LED con un período mayor de 1 segundo cuando me puse la configtick_rate_hz a 1000 y parpadea el LED con un período mucho menos de 1s cuando i fijar el tipo de garrapata a nada menos de ~ 200

configTICK_RATE_HZ no debe afectar a la blinktime LED.

Me doy cuenta de más información es necesaria y proporcionará fácilmente cualquier fragmentos de código son necesarios para ayudar.

¿Fue útil?

Solución

La garrapata RTOS es generado por una interrupción de temporizador. se estableció el temporizador (incorrectamente) de tal manera que siempre se produce una garrapata fijada en 400 kHz no importa lo que se propuso configTICK_RATE_HZ también. Puesto que la velocidad de parpadeo se fija bajo la suposición de que la tasa de garrapata RTOS está correctamente representado por la configTICK_RATE_HZ (portTICK_RATE_MS = 1000 / configTICK_RATE_HZ), problemas sobrevinieron.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top