Здравствуйте!
Следуя примерам из документации на ОС не смог воспользоваться сервисом 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. До этого с таймерами и прерываниями не работал вообще.
С уважением, Вячеслав.