Управление переходом в спящий режим
- Войдите на сайт для отправки комментариев
Здравствуйте! Хотел бы обратиться за конструктивной помощью. Схема следующая: На ардуино висят кнопка и светодиод. Светодиод по стандарту горит постоянно. Счетчик отсчитывает 60 секунд, после прохождения которых ардуино уходит в сон в режим Power down. На кнопке лежит 2 задачи: в активный период работы ардуино при нажатии на неё должен сбрасываться счётчик, тем самым откладывая на неопределённое время уход в сон; во-вторых, кнопка служит для пробуждения из сна и возобновления "активного" режима работы. Вопрос в том, какими путями можно реализовать обработку таких двух действий одной кнопкой, учитывая, что приоритетным у неё является именно обработка прерывания, через которое реализовано пробуждение? Надеюсь, не слишком сумбурно. Заранее спасибо!
Реализовать такую логику можно. От нас чо нада?
путем использования переменной, наверно
То же самое прерывание которое пробуждает, может использоаться для обрабоки кнопки и в нормальном режиме.
На ардуино висят кнопка и светодиод. Светодиод по стандарту горит постоянно.
Зачем постоянно горящему светодиоду "висеть" на ардуино? Чем ему батарейка не угодила (или какое там питание)? Почему б прямо на неё не повеситься?
уходит в сон в режим Power down.
Смысл уходы в сон, когда засыпает устройство, потребляющее около 1-2% от общего потребления схемы?
Евгений П, светодиод тут висит постоянно просто для демонстрации модели. В реальном проекте логика следующая. Есть таймер, который измеряет время между двумя срабатываниями датчиков и выводит это на LED дисплей. Та самая кнопка используется для сброса показаний таймера до нуля. Так вот необходимо на эту же кнопку повесить те самые задачи, что я уже описал. То есть вместо светодиода подразумевается работа таймера.
По поводу потребления. Необходимо отказаться от кнопки вкл/выкл устройства и не ставить ее в разрыв с батарейкой, а реализовать вот такой вот режим сна во время неиспользования устройства. Потребление там меньше 1мка.
DetSimen, может как-то блок-схемно увидеть пути реализации, или как-то на словах. Может схемы похожие есть. Для меня пока что остаётся непонятным в связи с небольшим опытом работы как одной ноге атмеги, а конкретно 2-м цифровом входе, одновременно обрабатывать пробуждения, когда устройство уже спит, и одновременно сбрасывать счётчик, когда устройство активно.
То же самое прерывание которое пробуждает, может использоаться для обрабоки кнопки и в нормальном режиме.
Вы имеете в виду в обработчик прерывания все запихнуть?
при запуске таймера некой переменной bool isStart присвоить true
в обработчике соответственно проверять if isStart {сбросить счетчик и присвоить isStart=false}
Тебе нужна нога(и) INTx - только они имеют вектор во сне.
Кнопку можно "поделить" делителями и использовать одновременно (попеременно) в качестве входа и выхода.
То же самое прерывание которое пробуждает, может использоаться для обрабоки кнопки и в нормальном режиме.
Вы имеете в виду в обработчик прерывания все запихнуть?
Что все? Похоже вы не понимете как спящий режим работает. Вот вы подали команду, например, на Power-down Mode. Грубо говоря при этом почти все выключается, а исполнение команд останавливается ровно на этой команде. Затем происходит событие будящее процессор. Например прерывание по нажатию кнопки. Процессор просыпается и видит "обана, да у меня тут прерывание INT0!" и передает управление туда. То есть обработчик прерывания всегда срабатывает когда процессор уже не спит. По окончанию прерывания управление передается на команды следующие за командой на усыпление.
Тебе нужна нога(и) INTx - только они имеют вектор во сне.
Кнопку можно "поделить" делителями и использовать одновременно (попеременно) в качестве входа и выхода.
Опять гонишь. Во сне вектор имеют всегда Pin Change (то есть почти все входы) TWI и WDT. Плюс могут быть и другие, например Timer2, ADC итд в зависимости от режима сна.
Опять гонишь.
Опять? гдеетты меня ещё в гоневе заметил? Предъяви!!!
И по поводу INTофф то-же предъяви из даташита!!!
Опять гонишь.
Опять? гдеетты меня ещё в гоневе заметил? Предъяви!!!
И по поводу INTофф то-же предъяви из даташита!!!
Да регулярно. Копаться лень, посмотри сам свои посты.
по поводу интов - http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
Раздел 9.1 Sleep Modes, Table 9-1.
Есть портативное устройство на Atmega368 (условно счётчик импульсов). Иногда (редко) не хочет просыпаться из power_down, приходится дёргать питание. Куда копать?