Здравствуйте!
Следуя примерам из документации на ОС не смог воспользоваться сервисом OS_Delay(). Проект пишу под AVRStudio4. Код у меня примерно следующий:
... __task void T_1(void) { while (1) { LCDClear(); LCDPutSR("Привет МИР"); OS_Delay(1000); } } ... int main(void) { OS_Init(); OS_Task_Create(T_1, &task1); OS_Task_Create(T_2, &task2); TCCR0 = (1 << CS01); // timer tick = 2000 instruction cycles TIMSK |= (1 << TOIE0); OS_Ena_Int(); // enable interrupts DDRC=0xff; DDRA = 0x00; LCDInit(); LCDClear();
while (1) { OS_Scheduler(); } }
SIGNAL(SIG_OVERFLOW0) { OS_Timer_Tick_Set(); OS_Timer(); }
Визуально переключение задач происходит быстрее, чем за 1000мс. Вернее ГОРАЗДО быстрее. Не могу понять в чём ошибка. Пока принялся за изучение таймеров в WinAVR. До этого с таймерами и прерываниями не работал вообще.
С уважением, Вячеслав.
--------------------
|