наехал телнетом на опеносд посмотрел значения регистров связанных с таймером систик
0xE000E010 - 0х00010007 - прерывания разрешены
(не понял пока назначение 16-го бита пробовал его сбрасывать с помощью mww команды, этот бит все равно устанавливается в единицу)0хЕ000Е014 - 0х0002903f - значение регистра перезагрузки
0хЕ000Е018 - все время разные значения - таймер тикает
это прерывание не вызывается
CODE
extern "C" OS_INTERRUPT void Default_SystemTimer_ISR()
{
scmRTOS_ISRW_TYPE ISR;
#if scmRTOS_SYSTIMER_HOOK_ENABLE == 1
system_timer_user_hook();
#endif
Kernel.system_timer();
#if scmRTOS_SYSTIMER_NEST_INTS_ENABLE == 0
DISABLE_NESTED_INTERRUPTS();
#endif
}
нашел разницу между работающей и нерабочей системой
в работающей системе регистр 0xe000ed04 равен 0
когда система залипла то значение 1400e84d выходит что pendsv, равно как и систик отложены поэтому прерывание систик больше не генерируется, так? и что с этим делать?
Сообщение отредактировал сарматъ - Oct 19 2013, 17:11