FreeRTOS configTICK_RATE_HZ - PullRequest
       28

FreeRTOS configTICK_RATE_HZ

2 голосов
/ 12 февраля 2010

Я использую MSP430f5438 с версией 5.4 FreeRTOS.

У меня странная проблема, которую я не могу понять.

Обычно, когда я устанавливаю configTICK_RATE_HZ на разные значения, светодиод мигает быстрее или медленнее; это должно остаться той же самой скоростью. Он мигает медленнее, чем выше я устанавливаю configTICK_RATE_HZ, и тем быстрее, когда я устанавливаю TICK_RATE ниже.

vTaskDelayUntil (& xLastFlashTime, xFlashRate); таков, что светодиод должен мигать только раз в секунду, независимо от того, что такое configTICK_RATE_HZ. Я прошел и проверил xFlashRate, чтобы убедиться. Его всегда = в configTICK_RATE_HZ. Код:

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.
}

Светодиод мигает с периодом, превышающим 1 секунду, когда я устанавливаю configtick_rate_hz на 1000, и светодиод мигает с периодом, значительно меньшим, чем 1сек, когда я устанавливаю частоту тиков на значение, меньшее ~ 200

configTICK_RATE_HZ не должен влиять на время мигания светодиода.

Я понимаю, что необходима дополнительная информация, и с готовностью предоставлю любые фрагменты кода, необходимые для помощи.

1 Ответ

4 голосов
/ 15 февраля 2010

Тик RTOS генерируется прерыванием таймера. Таймер был установлен (неправильно) так, что он всегда вызывал фиксированный тик на частоте 400 кГц, независимо от того, что вы установили configTICK_RATE_HZ. Поскольку частота мигания установлена ​​в предположении, что частота тиков RTOS правильно представлена ​​в configTICK_RATE_HZ (portTICK_RATE_MS = 1000 / configTICK_RATE_HZ), возникли проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...