В этой версии оси появилось такое вообщем-то нужное средство как переключение стека во время выполнения isr на стек прерываний. Решил попробовать эту фичу. Объявил объект TISRW_SS в обработчике, залил в проц. На первый взгляд вроде бы все работает. Но... Посмотрел листинг обработчика и впал в некоторое недоумение. Перед переключением стека выполняется сохранение некоторых регистров в "старый" стек, чего в данном случае, насколько я понимаю, быть не должно. Ладно. Изменил макрос OS_INTERRUPT на __raw __interrupt. Сохранение регистров перед переключением стека соответственно исчезло, но программа работать перестала.
Вопрос к тем, кто глубоко копал эту ось. Описанное выше это нормально или это ошибка в коде или что-то еще? Может кто прокомментировать?
|