ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
147773 Топик полностью
diper (09.02.2009 23:06, просмотров: 157) ответил diper на scmRTOS + MSP430 + TISRW_SS не работает
Похоже выловил в чем дело Обработчик прерывания: #pragma vector = XXX_VECTOR OS_INTERRUPT void XXX_ISR() { OS::scmRTOS_ISRW_TYPE ISRW; //... Flag.SignalISR(); } При выполненииvoid OS::TEventFlag::SignalISR() { TCritSect cs; //... } TCritSect cs; создается на стеке по адресу 0x600 за пределами RAM Поэтому при выполнении ~TCritSect() в SR записывается какято хрень в том числе разрешаются прерывания которые при входе были запрещены... дальше разбираться не стал. Подправил строчку INLINE inline void SetISRStackPointer() { __set_SP_register( reinterpret_cast<word>(__segment_end("CSTACK"))); } наINLINE inline void SetISRStackPointer() { __set_SP_register( reinterpret_cast<word>(__segment_end("CSTACK")) - 2); }Девайс ожил.