После 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