elchupanibrei (elchupanibrei) wrote,
elchupanibrei
elchupanibrei

Category:

Как правильно загнать Arduino в сон с пробуждением по watchdog таймеру.

Понадобилось мне загнать Arduino (ATtiny85/ATmega168/Atmega328 и тд) в сон для уменьшения энергопотребления. В поиске полно примеров, но смущал один факт - все они не похожи друг на друга.



Анализ форумов показал, что не только мне интересно -  "почему у Васи так, а у Пети по другому?". К сожеление внятного ответа на форумах не оказалось. Потратив вечер на бесполезные поиски и окончательно опухнув от зоопарка примеров и некомпетентности пришлось уйти на три дня в мануалы на ATtiny85 и Atmega328.

Приведенный ниже код  переводит любую ардуино (спасибо встроенным библиотекам AVR) в глубокий сон с отключением всей переферии: ЦАП, компараторов, таймеров и тд. приблизительно на 30 секунд. После выходит из сна моргает светодиодом, подключенным к нулевому пину и уходит в сон на следующие 30 секунд. Код подробно откоментирован на все случаи жизни с подробным описанием что сделано и зачем. Не содержит лишних операций и циклов, которыми грешат все примеры из интернета.

Ток потребления ATtiny85 в режиме сна с отключенной переферией и работующей от 3-х вольт составила 3мкА.

Полезная информация по AVR библиотекам можно найти тут.

Забирать как всегда отсюда - GitHub.
Tags: #arduino, arduino
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 6 comments