Страница 1 из 1

спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 10:20:30
yusmat
к примеру в спящий режим тинька уходит в преривании
также и пробуждаеться в нем
соответственно возникает ряд вопросов
допустим в основном коде возникает преривание в котором тинька ушла в сон
затем это же преривание вызываеться вновь но уже как выход из сна
меня интересует вопрос куда вернется програма после окончания преривания выхода из сна
ведь первый вызов преривания в котором тинька ушла в сон не было закончено до конца
собственно оно было прервано сном
режим сна самый легкий idle
преривание по фронтам на ножках

Re: спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 11:14:26
uk8amk
Есть один нюанс. При входе в обработчик снимается флаг глобального разрешения прерываний. После этого вы входите в сон, но выйти из сна уже не сможете. Прерывания то запрещены.

Re: спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 11:21:10
ibiza11
Честно сказать, я не знаю. Не пробовал так делать, у меня команда sleep была вне обработчиков прерываний. Я почитал документацию, мои рассуждения ниже.
в даташите про режимы сна написано :
If an enabled interrupt occurs while the MCU is in a sleep mode, the MCU wakes up
(если произойдет разрешенное прерывание, пока микроконтроллер находится в спящем режиме, микроконтроллер проснется)
в даташите в разделе внешних прерываний в описании регистра GIMSK бит INT0 написано :
When the INT0 bit is set (one) and the I-bit in the Status Register (SREG) is set (one), the external pin interrupt is enabled.
(Когда бит INT0 установлен и флаг I установлен, прерывание от внешнего вывода разрешено)
следовательно когда бит I не установлен, то прерывание не разрешено.
поскольку при входе в обработчик прерывания флаг I сбрасывается, можно полагать, что прерывание INT0 во время выполнения обработчика не разрешено. Следовательно, если мы усыпим микроконтроллер в обработчике прерывания, то он не проснется от прерывания, поскольку флаг I не установлен.
:)))

Re: спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 12:22:00
a_skr
даже если разрешить прерывания в обработчике прерывания ;), то все накроется медным тазом. про стек не забываем.

Re: спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 12:23:43
ibiza11
при необходимости можно написать так, что не накроется)

Re: спящий режим и преривания в attiny

Добавлено: Пн апр 29, 2013 21:00:34
yusmat
значит мне тоже придеться сделать так чтоб сон вызывался из основной
проги