LPC2478. Третий раз наблюдаю такую фигню при отладке - контроллер висит в прерывании UART, при этом в VICADRESS находится вектор прерывания по таймеру.
Инициализация прерывания таймера:
Код
T0IR_bit.MR0INT = 1; // clear pending interrupt
VIC_SetVectoredIRQ(Timer0IntrHandler,0,VIC_TIMER0);
VICINTENABLE |= 1UL << VIC_TIMER0;
T0TCR_bit.CE = 1; // counting Enable
Инициализация прерывания уарт:
Код
__disable_interrupt();
VIC_SetVectoredIRQ(UART0Interrupt,1,VIC_UART0);
VICINTENABLE |= 1UL << VIC_UART0;
U0IER=1; // receiver only // U0IER=2; transmitter only
__enable_interrupt();
В конце обоих обработчиков VICADDRESS обнуляется, поэтому ситуация, когда в VIC записан один вектор, а контроллер висит в другом прерывании, мне непонятна.
Причем устройства работают днями, отправка в терминал идет по прерываниям, и ничего не сбоит. Эта ситуация наблюдается очень редко, только при старте под JTAGом.
Забить или у меня что-то не то?
Уходя, оставьте свет...