Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
ГЛ А В А 1 4 Режимы э нергосбережения и сторожевой таймер В различных моделях МК AVR имеется от 2-3 (семейство Tiny) до 5--6 (старшие Mega) режимов энергосбережения . Оrметим, что к режимам энергосбережения иногда относят специальный режим ADC Noise Reduction, который мы упоминали в главе 1 1 , хотя он не совсем связан именно с энергосбережением. При его выборе, как только контроллер «уснет», АЦП заработает, сделает преобразование и «про снется» на прерывании АЦП, т. е. преобразование теоретически произойдет в от сутствие цифровых шумов. Так что цель этого режима совсем другая . При практическом использовании режимов энергосбережения следует учесть, что команду s leep нельзя вызывать из процедуры прерывания - только из основной программы (подробнее см. описание команды в главе 7). Есть два базовых режима энергосбережения, общие для всех моделей АVR: Idle mode и Power Down mode. В большинстве моделей МК АVR имеются и другие разновидности режимов энер госбережения, рассмотренные далее. Изо всех без исключения режимов контроллер может выводиться некоторыми прерываниями, в том числе прерыванием готовно сти TWI, которое мы не применяли (см. главу 13), потому далее оно среди прочих не упоминается. В ldle mode (режиме ожидания) останавливается GPU, а также устройство управ ления выборкой команд из памяти. Все периферийные устройства: таймеры, АЦП, порты - продолжают функционировать . Поэтому значительной экономии не по лучается - потребление снижается лишь на 30--50%. Для ввода в режим Idle mode в программе достаточно просто вызвать команду s leep, больше ничего делать не требуется . Из этого состояния контроллер выводится прерыванием от многих источников : Timer2, внешних выводов INTO/INT l , готовности АЦП и др. Очевидно, что с точки зрения экономии энергии режим Idle имеет смысл использо вать тогда, когда контроллер обязательно должен находиться в состоянии постоян ной готовности, а общее потребление устройства лимитируется именно им . Кроме того, это самый простой способ предохранить контроллер от выполнения «недо пустимых» операций при снижении питания (жаль только, не во всех случаях воз можный). Во всех остальных ситуациях следует выбирать режимы «глубокого» энергосбережения, когда собственное потребление МК снижается до единиц или десятков микроампер.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==