FreeRTOS configTICK_RATE_HZ
Frage
Ich verwende eine MSP430F5438 mit Version 5.4 von FreeRTOS.
Ich bin ein komisches Problem mit, dass ich nicht herausfinden kann.
Grundsätzlich, wenn ich gesetzt configTICK_RATE_HZ auf verschiedene Werte, blinkt die LED schneller oder langsamer; es sollte die gleiche Rate bleiben. Sie blinkt langsamer die höher i Satz configTICK_RATE_HZ und schneller, wenn ich gesetzt TICK_RATE senken.
vTaskDelayUntil (& xLastFlashTime, xFlashRate); einmal pro Sekunde nicht so ist, dass die LED nur Materie sollte blinken, was die configTICK_RATE_HZ ist. Ich trat durch und überprüfte die xFlashRate sicher zu machen. Sein = immer auf die configTICK_RATE_HZ. Code:
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.
}
Die LED blinkt mit einer Dauer von mehr als 1 Sekunde, wenn ich die configtick_rate_hz auf 1000 gesetzt und die LED blinkt mit einem Punkt weit weniger als 1 s, wenn ich die Tick-Rate auf etwas weniger als ~ 200
configTICK_RATE_HZ sollte die LED blinktime beeinflussen.
wird mir klar, weitere Informationen benötigt wird, und wird leicht liefern werden, was Code-Schnipsel zu Hilfe benötigt wird.
Lösung
Die RTOS Zecke durch eine Timer-Interrupt erzeugt wird. Der Timer eingestellt wurde (falsch), so dass es immer ein fester Haken bei 400 kHz nicht verursacht Rolle, was Sie Satz configTICK_RATE_HZ auch. Da die Blinkrate unter der Annahme festgelegt wird, dass die RTOS Tick-Rate richtig durch die configTICK_RATE_HZ (portTICK_RATE_MS = 1000 / configTICK_RATE_HZ) dargestellt wird, kam es Probleme.