Вопрос по "правильности" программирования, наверное. Делаю девайс, который 99% времени находится в спячке. По нажатию кнопки просыпается, обрабатывает это нажатие в прерывании, делает свои грязные делишки и снова баиньки до следующего раза. В основной программе только инициализация девайса и собственно sleep. Вот вопрос: как правильнее выйти из прерывания и снова уснуть? Мне видится 2 варианта:
1. По окончании всех своих грязных делишек (а это всё идёт в подпрограмме обработки прерывания) выставить GIE в 1, разрешив вновь прерывания и собственно sleep.
2. Возвращатся из прерывания с помощью retfie в то место откуда оно произошло. Посколько происходит оно в спячке, то возвращаемся на +2 команды после спячки. Примерно так будет заканчиватся код основной программы:
Код: Выделить всё
...
sleep
nop ; после выхода из спячки по прерыванию первым делом исполнится следующая за sleep команда - подстраховались
goto $-2 ; вернувшись в это место из прерывания выполняется переход снова к спячке
...Вобщем как опытные коты видят более правильное решение?
Заранее спасибо

