После OStimDly(x) задача больше не просыпается! При этом в обработчике прерывания таймера периодически запускается OSTimeTick(); А в ядре счётчик обратного отсчёта времени ожидания для задачи уменьшается до 0 и срабатывает условие перевода задачи в состояние Ready (но возврата в задачу не происходит, других приоритетныхзадач нет) --------------------------------------------------------------- ptcb = OSTCBList; /* Point at first TCB in TCB list */ while (ptcb->OSTCBPrio != OS_IDLE_PRIO) { /* Go through all TCBs in TCB list */ OS_ENTER_CRITICAL(); if (ptcb->OSTCBDly != 0) { /* No, Delayed or waiting for event with TO */ if (--ptcb->OSTCBDly == 0) { /* Decrement nbr of ticks to end of delay */ /* Check for timeout */ if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) { ptcb->OSTCBStat &= ~OS_STAT_PEND_ANY; /* Yes, Clear status flag */ ptcb->OSTCBPendTO = TRUE; /* Indicate PEND timeout */ } else { ptcb->OSTCBPendTO = FALSE; }
if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) { /* Is task suspended? */ ----------------------------------->OSRdyGrp |= ptcb->OSTCBBitY; /* No, Make ready */ OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX; } -------------------------------------------------------------------------------------------------------- Кто-нибудь успешно использовал порт uC/OS-II для MSP430? Заранее спасибо. shanti_shanti@mail.ru P.S. В аттаче main.c и os_cfg.h
|