Решил подключить модуль uCOS View к проекту на LPC2148, и обнаружил, что 2 ф-ции описанные в os_view.h:
OSView_TickHook
OSView_TimeGetCycles
Не имеют реализации, которая согласно доке, должна быть в OS_VIEWc.C.
В обшем-то пример их реализации есть в доке, но вот там меня смущает реализация OSView_TickHook:
Код
void OSView_TickHook (void)
{
INT16U cnts16;
INT16U delta;
cnts16 = OSView_TmrRd();
delta = cnts16 - OSView_TmrCntsPrev;
OSView_CyclesCtr += delta;
OSView_TmrCntsPrev = cnts16;
}
Я так понял, они ее дают для 16-ти битнога таймера с периодом от 0xFFFF. А если мой таймер имеет период 0x1D4C0 то нужно честно считать дельту в 32-х битном варианте, при этом учесть момент сброса таймера? Если можно покажите какой вы используете код для этой ф-ции, а то мне кажется я чего-то не учел и в результате показатели загружености процессора немного не так выглядят.
И еще вопрос, если OSView_TickHook вызывается при каждом прерывании по таймеру, то почему переменную delta не брать жестко равную периоду таймера? Или тут важно время которое прошло с момента срабатывания прерывания до прихода в OSView_TickHook ?