Использую IAR C/C++ Compiler for AVR 4.21A/W32.
Процессор MEGA128.
В прерывании по таймеру опрашиваю два канала АЦП попеременно.
Для определения какой канал измеряется, объявил переменную в прерывании: volatile unsigned char which;
Ни в какую не хочет работать.
Вынес из обработчика прерывания - работает.
Оптимизацию отключил.
По моему, после выхода из прерывания значение which должно сохранятся.
Но не сохраняется.
По листингу, похоже работает с ячейкой памяти:
\ In segment NEAR_Z, align 1, keep-with-next
\ 00000000 REQUIRE `?`
9 volatile unsigned char which;
\ which:
\ 00000000 DS 1
10
11
В чем я не прав?