HardWareMan писал(а):
Маскирование через EOR задействует АЛУ. АЛУ испортит все флажки (т.е. регистр SREG). Портить флажки в прерывании - вселенское зло и мегаграбли, которые даже некоторые гуру распознают только после десятикратного наступания на них. И да, PUSH SREG не работает. Хотя можно и не в стеке, конечно.
Ничего не понял.
А что, сохранение контекста в АВР не происходит автоматически при переходе по вектору прерывания?
И причем тут команда EOR? Все арифметические команды и все команды сравнения изменяют регистр состояния, так что, через это их нельзя применять в прерываниях?
У меня есть смутное ощущение, что Вы излагаете... ммм, какгбэ помяхше... Ерунду.
Сохранение контекста, ПРЕЖДЕ ВСЕГО регистра состояний, а так же базовых РОНов определяющих системную адресацию и данные, - это АЗЫ работы с прерываниями и в большинстве контроллеров производится автоматически, как и его восстановление. Либо описано специально в виде примеров из даташита.
PS. Полюбопытствовал, действительно не сохраняется. Ну да не беда. Значит нужно сохранять РУЧКАМИ.
И не только SREG. Вообще то сохранять нужно ВСЕ РОНы, которые используются в прерываниях...