Всем доброго времени суток, у меня такой вопрос. Хочу, чтобы после загрузки скетча, Arduino сначала входил в спящий режим и выходил только при нажатии кнопки. Для выхода просто нужно прицепить кнопку к пину, отвечающиму за приерывание? А чтобы Arduino сам зашел в этот режим при загаузке кода?
void EnterSleep() { attachInterrupt(0, wakeUp, LOW); //Если на 0-вом прерываниии - ноль, то просыпаемся. delay(100); sleep_enable(); //Разрешаем спящий режим sleep_mode(); //Спим (Прерывания продолжают работать.) Программа останавливается. sleep_disable(); //Запрещаем спящий режим } Правильно я понял, если прицепить кнопку к 0 прерыванию, то должно сработатть?
абсолютно верно! (цифровой вывод 2) вот только для этого примера дребезг не страшен так как в функции wakeUp() контроллер уходит в бесконечный пустой цикл , ну а вам естественно надо позаботится о предотвращения дребезга контактов ,программный способ не совсем походит здесь (хотя можно ввести задержку функций delayMicroseconds() но главное правило работы с прерываниями это - как можно меньшие затратить времени на его обработку ) поэтому лучше всего здесь подходит аппаратное подавление дребезга!
Если не ошибаюсь, в прерывании функции delay и delayMicroseconds будут возвращать всегда одинаковое значение, т.е. не будет приращения времени.
delayMicroseconds не использует таймерные прерывая вроде... задержка происходит за счет машинного времени контроллера!может конечно путаю с наносекундной задержкой...