Question

J'utilise un MSP430f5438 avec la version 5.4 de FreeRTOS.

J'ai un problème drôle que je ne peux pas comprendre.

En principe, lorsque je me mis configTICK_RATE_HZ à des valeurs différentes, la LED clignote rapidement ou plus lentement; il devrait rester le même taux. Il clignote plus lent Plus je mis configTICK_RATE_HZ, et plus vite quand je mis bas TICK_RATE.

vTaskDelayUntil (& xLastFlashTime, xFlashRate); est telle que seule la LED doit clignoter une fois par seconde, peu importe ce que le configTICK_RATE_HZ est. J'ai vérifié et suivi pas à pas le xFlashRate pour vous assurer. Il est toujours à la = 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.
}

Le clignotement conduit avec une période supérieure à 1 seconde lorsque je mets le configtick_rate_hz à 1000 et le led clignote avec une période beaucoup moins que 1s quand je a fixé le taux de tiques à quoi que ce soit moins ~ 200

configTICK_RATE_HZ ne devrait pas affecter la blinktime LED.

Je me rends compte plus d'informations est nécessaire et fournirai facilement ce que des extraits de code sont nécessaires pour aider.

Était-ce utile?

La solution

La tique RTOS est générée par une interruption de la minuterie. La minuterie a été réglée (mal) telle qu'elle a toujours provoqué une tique fixe à 400kHz, peu importe ce que vous définissez configTICK_RATE_HZ aussi. Étant donné que la fréquence de clignotement est réglé en supposant que le taux de tiques RTOS est correctement représentée par la configTICK_RATE_HZ (portTICK_RATE_MS = 1000 / configTICK_RATE_HZ), les problèmes se sont ensuivies.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top