Из за наличия многоуровневых прерываний в Хмеге столкнулся с проблемой инициализации контроллера прерываний.
Приоритет HI имеет всего одно прерывание (пропадание питания) по нему нужно уйти в слип.
Поскольку и MED и LO прерывания тоже имеются и заканчивать их в случае пропадания питания нет необходимости а регистр статуса
необходимо сбросить то мне пришлось нагородить вот такой код.
Гляньте Ув. знатоки. Не перемудрил ли я , может можно проще?
Код
INT_TO_SLEEP:
cli
lds RA,(PMIC_STATUS)
sbrs RA,PMIC_MEDLVLEX_bp
rjmp END1
ldi RA, LOW(END1)
push RA
ldi RA,HIGH(END1)
push RA
reti
END1:
lds RA,(PMIC_STATUS)
sbrs RA,PMIC_LOLVLEX_bp
rjmp END2
ldi RA, LOW(END2)
push RA
ldi RA,HIGH(END2)
push RA
reti
END2:
ldi RA, LOW(SLEP)
push RA
ldi RA,HIGH(SLEP)
push RA
reti
SLEP:
sei
SLEEP
cli
...