Как я могу разбудить микроконтроллер ATtiny84 в определенное время дня?

Я пытаюсь создать будильник, который просыпается в определенное время и выполняет ряд инструкций. Чтобы установить время пробуждения, я собираюсь использовать наушники Android-устройства для отправки последовательных данных в MCU о времени пробуждения. Я просто включу его, сделаю передачу и отключу разъем. Затем время устанавливается на MCU. Передача также синхронизирует время, чтобы установить таймер соответствующим образом.

Я могу установить прерывание по таймеру с помощью предварительного делителя, чтобы дать мне 4 секунды на каждое прерывание. Затем используйте 2 байта в качестве вторичного счетчика. Это дало бы мне 72 часа, которые я мог бы ждать, а мне нужно только 24, так как я могу сбросить настройки, когда день закончится.

Итак, мой вопрос возникает, когда устройство сбрасывается. Я могу сохранить текущее время в EEPROM, а затем прочитать его при загрузке, но сколько накладных расходов при текущем использовании? Я хочу, чтобы батарея работала как можно дольше.

Мой вопрос, возможно, нуждается в уточнении, но мне было интересно, есть ли лучший способ или я иду по этому пути правильно.

Есть ли особая причина, по которой устройство будет сброшено? При выходе из спящего режима ОЗУ будет сохранено, поэтому, если нет другой причины, по которой он будет сброшен (отключение питания и т. д.), вы сможете сохранить свой счетчик в ОЗУ и не использовать EEPROM.

Ответы (2)

Используйте RTC, который поддерживает линию сигнализации, например. ДС1375 . Чип может управлять линией прерывания в заданное время/дату. Вы должны выбрать соответствующий спящий режим AVR, который «слушает» выбранное прерывание. Нет необходимости использовать таймеры AVR.

Это правильно, но трудно сказать, лучше или хуже у него время автономной работы, чем у исходного предложения.

Я использую внутренний сторожевой таймер в attiny44 в аналогичном случае. Его можно настроить на выдачу прерывания (не сброса) каждые 8 ​​секунд. Что хорошо, так это то, что прерывание WDT может вывести чип из самого глубокого спящего режима «отключение питания».