Управление питанием и спящие режимы

Микроконтроллеры / Для начинающих / Архитектура /

Микроконтроллеры для начинающих Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2017 года составляет 80 000 рублей). Подробнее...

Я изучил множество книг по микроконтроллерам, и, к моему удивлению, сведений о спящих режимах в этих книгах крайне мало. Поэтому думаю, что перевод документации из этого раздела будет многим полезен.

Высокая производительность и ведущая в отрасли эффективность кода делают микроконтроллеры AVR наилучшим выбором для приложений с низким энергопотреблением. Кроме того, спящие режимы позволяют приложению отключать неиспользуемые модули в микроконтроллере, тем самым экономя электроэнергию. AVR обеспечивает различные режимы энергосбережения, позволяя пользователю приспосабливать потребление энергии к требованиям приложения.

Переход в энергосберегающий режим происходит с помощью команды SLEEP, если разряд SE регистра MCUCR (0х35) установлен в единицу.

Выбор режима энергосбережения определяется состоянием разрядов SM регистра MCUCR (подробнее об этом см. ниже).

Выход из спящего режима происходит при поступлении разрешённого запроса прерывания или перезапуске микроконтроллера.

Спящие режимы AVR

Вот здесь показаны различные тактовые сигналы в ATtiny13A и их распределение. Этот рисунок будет вам полезен при выборе спящего режима. Ниже в таблице 7-1 показаны спящие режимы и источники выхода из спящего режима.

Таблица 7-1. Активные потребители тактовой частоты и источники пробуждения из различных спящих режимов.

Чтобы войти в любой из трех спящих режимов, бит SE в MCUCR должен быть записан в логическую единицу и инструкция SLEEP должна быть выполнена. Биты SM[1:0] в регистре MCUCR определяют, какой режим энергосбережения (холостой ход - бездействие, подавление шума АЦП или выключение питания) будет задействован командой SLEEP. Подробнее об этом будет рассказано в следующих статьях.

Если прерывание происходит, когда микроконтроллер находится в спящем режиме, то микроконтроллер просыпается. Затем микроконтроллер останавливается на четыре такта в дополнение к времени запуска, выполняет процедуру прерывания и возобновляет выполнение инструкции, которая следует за командой SLEEP. Содержимое файла регистра и SRAM остаются неизменными, когда устройство выходит из спящего режима. Если сброс происходит во время спящего режима, MCU просыпается и начинает выполнение от вектора сброса (Reset Vector).

Обратите внимание, что если прерывание срабатывания по уровню используется для пробуждения из режима отключения питания, измененный уровень должен удерживаться в течение некоторого времени, чтобы разбудить микроконтроллер. Подробнее об этом можно прочитать в документации в разделе “Внешние прерывания” на стр. 46 (на этом сайте также будет в следующих статьях).

Режим холостого хода микроконтроллера (Idle Mode)

Когда биты SM[1:0] записываются в 00, команда SLEEP переводит устройство в режим ожидания, останавливая процессор, но позволяя аналоговому компаратору, АЦП, таймеру/счетчику, сторожевому таймеру и системе прерываний продолжать работать. Этот спящий режим в основном останавливает тактовые генераторы CPU и FLASH, позволяя другим генераторам работать.

Режим ожидания (режим холостого хода) позволяет микроконтроллеру просыпаться от внешних прерываний, а также внутренних, таких как переполнение таймера (Timer Overflow). Если пробуждение от прерывания аналогового компаратора не требуется, аналоговый компаратор можно отключить, установив бит АЦП в регистре ACSR - регистре управления и состояния аналогового компаратора. Это позволит снизить энергопотребление в режиме ожидания. Если АЦП включен, преобразование начинается автоматически при входе в этот режим.

В режиме холостого хода процессор остановлен, периферийные устройства продолжают работать, данные в регистрах общего назначения, ячейках SRAM и регистрах ввода-вывода, расположенных в пассивных периферийных устройствах, сохраняются неизменными.

Ток потребления (в зависимости от модели микроконтроллера) уменьшается в 2...4 раза.

Режим подавления шума АЦП (ADC Noise Reduction Mode)

Если в битах SM[1:0] записано 01, то команда SLEEP заставляет микроконтроллер войти в режим шумоподавления АЦП, останавливая процессор, но позволяя АЦП, внешним прерываниям и сторожевому таймеру продолжать работать (если это включено). Этот спящий режим останавливает генераторы тактовой частоты для ввода-вывода (I/O), процессора (CPU) и FLASH-памяти, позволяя при этом работать другим генераторам.

Это улучшает шумовую среду для АЦП, позволяя проводить измерения с более высоким разрешением. Если АЦП включен, преобразование начинается автоматически при входе в этот режим. Кроме прерывания завершения преобразования АЦП, только внешний сброс, сброс сторожевого таймера, сброс системы слежения за питанием (Brown-out), прерывание готовности SPM/EEPROM, внешнее прерывание уровня INT0 или прерывание изменения сигнала на выводе, могут вывести микроконтроллер из режима шумоподавления АЦП.

Режим пониженного энергопотребления (Power-down Mode)

Если в битах SM[1:0] записано 10,то после выполнения команды SLEEP микроконтроллер переходит в режим пониженного энергопотребления. В этом режиме генератор останавливается, в то время как внешние прерывания и сторожевой таймер продолжают работать (если они включены). Только внешний сброс, сброс сторожевого таймера, сброс системы слежения за питанием (Brown-out), внешнее прерывание уровня INT0 или прерывание изменения сигнала на выводе могут вывести микроконтроллер из этого режима. Этот спящий режим останавливает все тактовые генераторы, позволяя работать только асинхронным модулям.

В этом режиме периферийные устройства (кроме сторожевого таймера и блока прерываний) не работают. Данные в регистрах общего назначения, ячейках SRAM и регистрах ввода-вывода сохраняются неизменными.

Ток потребления (в зависимости от модели микроконтроллера) имеет величину от нескольких единиц до нескольких десятков мкА. Напряжение питания может быть снижено до 2В.


Вступить в группу "Основы программирования"

Подписаться на RUTUBE-канал

Подписаться на Дзен-канал

Подписаться на рассылки по программированию

Микроконтроллеры для ЧАЙНИКОВ Микроконтроллеры для ЧАЙНИКОВ

Бесплатная рассылка о микроконтроллерах. Рассылка содержит как бесплатную информацию для начинающих, так и ссылки на платные продукты (книги, видеокурсы и др.) для тех, кто захочет вникнуть в тему более глубоко. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su