Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Глава 14. Режимы энергосбережения и сторожевой таймер 383 Все, что сказано ранее касательно соотношения периода «пробуждения» контрол­ лера по WDT и времени его работы в активном состоянии, действительно и в этом случае : либо позаботиться о том, чтобы время работы не превышало установлен­ ный интервал WDT, либо, не дожидаясь его истечения, сбрасывать таймер коман­ дой wdr. В расширенном варианте WDT это дело, правда, облегчается увеличенным максимальным интервалом, который здесь равен 8 секундам. Обе рассмотр е нные в этом разделе программы вы найдете в архиве по адресу, ука­ занному во введении (файлы WDT_ sleep_test.asm и WDT_int_sleep_test .asm ) . О правильном построении малопотребляющих схем Правильно организовать работу схемы в режиме энергосбережения не так-то про­ сто. Начнем с того, что в спящем режиме у контроллера отключается буфер вывода порта (т. е. входная логика), но в документации не поясняется, что при этом само состояние выводов остается неизменным. Потому, если к выводу- подсоединен включенный светодиод, который потребляет 1 О мА, то и после «засыпания» он будет гореть и потреблять те же 1 О мА. Вы можете долго ловить блох (учитывать возможность дребезга на аналоговых входах, отключать аналоговый компаратор и BOD вместе с АЦП и т. п. ) и при этом намного больше потерять из-за забытого в нулевом состоянии входа с подключенным внутренним подтягивающим резисто­ ром - он ведь тоже так и останется подключенным. Забота о предотвращении таких ситуаций - целиком на совести программиста и разработчика схемы. Очевидный прием с переключением оптом всех выводов на вход может не дать нужного эффекта не только в случае подтягивающего резистора, но и в случае, если часть из них «висит в воздухе», - наводки будут переключать входную логику и тем самым повышать потребление . Да, я знаю, что отключение логики происходит автоматически при вводе в режим энергосбережения, но это действительно не для всех контактов: остаются включенными, например, выводы внешних прерываний, если они разрешены в программе, а также некоторые другие, если они используют­ ся в режиме альтернативных функций . Если же при включенном входном буфере вывод микроконтроллера останется неподключен . ным, или на нем будет присутст­ вовать аналоговый сигнал с напряжением, близким к половине питания, то буфер будет потреблять чрезмерный ток. Потому нужно внимательно просмотреть все режимы, в которых остаются выводы контроллера при вводе его в «сою> . Кроме того, надо не забывать об остальных компонентах схемы. Некоторые микро­ схемы (как, например, память серии АТ24) в неактивном режиме сами практически не потребляют тока. Со многими другими удается справиться, если они имеют режим s leep, инициируемый обычно через определенный уровень на отдельном выводе. Но надо не забывать, что бывают и неочевидные случаи. Так, продолжат по­ треблять наши часы реального времени, если у них выход частоты SQW подключен к выводу RESET контроллера с подтягивающим резистором (см. рис. 1 3 .3 в гла­ ве 13), - ведь, в отличие от простого выключения, мы питание 5 вольт не снимаем.

RkJQdWJsaXNoZXIy MTExODQxMg==