Есть МК ATTiny13. К ноге PB1/INT0 подключена кнопка (еще через резистор эта ножка подключена к GND, чтобы создавать лог. "0", пока кнопка не нажата). Требуется по нажатию этой кнопки переводить МК в спящий режим (Power down), а при последующем нажатии выводить из него.
Код: Выделить всё
if(bit_is_set(PINB,1))
{
while(bit_is_set(PINB,1))
{}
DDRB=0xFF;
PORTB=0;
TCCR0A=0;
TCCR0B=0;
GIMSK=64;
MCUCR=3;
sei();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
}
В таком случае МК как бы отрубается(но не факт), но через мгновение снова включается (если верить дебагеру AVRStudio, то после пробуждения программа начинает работать с самого начала). Если убрать sei(), то МК засыпает и уже ни на что, кроме сброса питания не реагирует. Помогите пожалуйста, что я делаю не так?