Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ср авг 22, 2018 20:09:49
Здравствуйте, недавно написал програмку для прибора с батарейным питанием. Контроллер mega168. Включается и выключается он с помощью тумблера. Хотелось бы при длительном нажатии на кнопку уволить мк в спящий режим, и при длительном нажатии будить его,точно так же как и в телефоне. Подскажите как это грамотно реализовать?
Ср авг 22, 2018 20:18:28
сие вполне разумно дерза1
но тумблеру там где есть мк не место...
Ср авг 22, 2018 20:19:31
варианты:
1) кнопку садить на пин с внешним прерыввнием, прерывание настраивать на низкий уровень и настроить глубокий спящий режим.
2) иногда просыпаться от собаки и проверять кнопку из глубокого спящего режима.
3) использовать неглубокий сон, при этом почти вся периферия остается в работе - кнопку можно опрашивать по таймеру или по прерыванию по фронту/спаду (энергопотребление будет выше).
4) сделать полное самоотключение (управляемый кнопкой и контроллером ключ в питании) контроллер сохраняет параметры в еепром и самовырубается, включается кнопкой.
Ср авг 22, 2018 20:54:23
По первому варианту. При удерживание кнопки тикает переменная, когда она достигнет какого то значения, уснуть. А как проснутся при удержании? По четвертому варианту можно взглянуть на схему?
Добавлено after 1 minute 44 seconds:
Можно и триггер сделать по питанию, но больше интересен программный вариант
Добавлено after 2 minutes 58 seconds:
Или например при удержании кнопки заряжать конденсатор через резистор,и при достижении 5 вольт будет подан сигнал на прерывание,и разбудит мк
Ср авг 22, 2018 21:01:34
Пробуждение из сна по прерыванию.
А во время исполнительной части обработчика прерывания по пробуждению отменяем прерывание и выходим из обработчика.
Далее программный опрос той же линии и соответствующая обработка.
Я такую закладку в проекте firefly сделал, но доводить до обработки кнопы за пределами задачи по пробуждению не стал.
Ср авг 22, 2018 21:29:47
Это как так отменить прерывание?
Добавлено after 53 seconds:
То есть в обработке считать время, если оно не достигнуто,опять уснуть. Так получается?
Ср авг 22, 2018 22:36:06
А кнопка многозадачная или только ON/OFF?
Чт авг 23, 2018 05:13:43
по 1) настраиваешь энергосбережение по максимуму,
настраиваешь прерывание от кнопки по низкому уровню, но не разрешаешь его
делаешь функцию (или дефайн) засыпания, в ней:
|сбрасываешь флаг прерывания кнопки
|разрешаешь прерывание от кнопки
|усыпляешь контроллер
эта функция должна вызываться из основного цикла по установленному флагу "засыпания"
обработчик прерывания:|задержка
|проверка кнопки
|если не нажата: ставим флаг "засыпания" убираем флаг этого прерывания и выходим из прерывания
|если нажата: отключаем прерывание кнопки и выходим из прерывания
по 4) Спойлер
по рис1.: кнопка нажата - питание приходит в любом случае. контроллер запущен, у него включена подтяжка порта, её тока хватает для удержания включенными цепей питания, пин читается при отпущенной кнопке 1, при нажатой 0. если отключить подтяжку - питание контроллера выключится.
по рис2.: применен более распространенный н канальный мосфет, но рвет схема минус питания, а значит от этой батареи больше ничего не запитать (кроме того, что отключается) т.к. по общему минусу ток обойдет транзистор. т.к. авр не умеет подтяжку к минусу - сделан отдельный резистор подтяжки. для выключения надо настроить порт на выход и подать в него 1. так кнопка и включает контроллер и сама видна в нём, и тем же портом позволяет управлять питанием.
Последний раз редактировалось
Ivanoff-iv Чт авг 23, 2018 10:01:44, всего редактировалось 1 раз.
Чт авг 23, 2018 08:10:52
Во время исполнения обработчика прерывания сбрасываем флаги и изменяем режим работы прерывания, которое в данный момент обрабатывается.
По выходу из обработчика режим работы у аппаратной схемотехники уже иной.
И вместо прерывания сканируем линию программно.
Чт авг 23, 2018 20:58:28
Делал триггер на cd4093 и мосфете. Включение 1сек, выключение 3сек. Спасало от зависания контроллера. Кнопку можно было использовать в МК как например "назад".
Пт авг 24, 2018 21:55:37
Я наверное все таки сделаю кнопку с конденсатором, и глубокое засыпание
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.