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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top