Столкнулся с проблемой.
Долго мучался и ветаки поборол, но как-то странно!
Опишу кратко.
Используется два прерывания:
1:0x01A Timer/Counter1 Compare Match A - режим CLC (частота 44100 Hz)
2:0x020 Timer/Counter0 Compare Match - режим CLC ( частота 500 Hz)
У второго прерывания приоритет ниже и первая команда его обработчика SEI.
Все регистры и флаги сохраняются в каждом обработчике.
Проблема в том что во втором прерывании необходимо читать состояние PIND.4
Состояние пина иногда считывается 0-м в то время как он в 1-це.
В таком виде глючило:
CBI PORTB,7
SBI PORTB,7
ROL RTMP
SBIC PIND.4
ANDI RTMP,$01
добавил запрет и разрешение прерываний и глюк ПОЛНОСТЬЮ пропал:
CLI
CBI PORTB,7
SBI PORTB,7
ROL RTMP
SBIC PIND.4
ANDI RTMP,$01
SEI
Что это, глюк меги или я чегото не понимаю?
Ктонибудь сталкивался с подобным?