Attiny2313. Хочется чтобы при перепададе на ноге 19 с 1 на 0 оно впадало в состояние ИДЛЕ и просыпалось при любом другом перепаде на той же ноге

Добрых времен! Имеется attiny2313. Хочется чтобы при перепададе на ноге 19 с 1 на 0 оно впадало в состояние ИДЛЕ и просыпалось при любом другом перепаде на той же ноге.
Просьба просмотреть инструкции ниже на предмет все ли правильно иди я чего перепутал или пропустил

ISR (PCINT0_vect)//обработчик
{
if(!(digitalRead(sleep)) __asm__ __volatile__("SLEEP");//или asm (“sleep”);
}

void SETUP()
{
MCUCR=0b00100000;
GIMSK |=(1<<5);//разрешаем прерывание PCINT
PCMSK0 |= (1 << 6);//нога 18 как вход PCINT
}

Без магических чисел никак ???

Вы это имеете в виду? Я не профи, мне так проще

Что не получается то? Не засыпает?

Просто не знаю как это проверить

Так низзя! При засыпании прерывания должны быть разрешены, иначе она хрен проснётся.

Ну, и кроме того, разве там достаточно только sleep?

1 лайк

8,9 и 10 строки содержат МАГИЧЕСКИЕ числа !!!

MCUCR=(1 << SE);
GIMSK=(1 << PCIE);
PCMSK0 = (1 << PCINT6);

SE в MCUCR надо выставлять непосредственно перед SLEEP
При выходе из SLEEP надо сразу же сбросить SE в MCUCR

Проверять измеряя потребление до и во время …

2 лайка

Спасибо, спасибо всем кто откликнулся пошел дорабатывать

А можно полный список “любых других перепадов” кроме с 1 на 0?

с 1 на 0 с 0 на 1