Спящий режим микроконтроллеров AVR

Просмотров: 25944Комментарии: 4
Электроника. СхемотехникаAVR.Начинающим

Спящий режим и управление питанием микроконтроллеров AVR может оказаться очень полезным, если микроконтроллер какое-то время ничего не делает, а просто тикает и ожидает какого-нибудь события. А также, для выключения не используемой периферии МК в целях экономии ресурсов батареи питания. Для перевода МК в режим сна в WinAVR нужно установить нужные биты регистра управления микроконтроллером и  воспользоваться инструкцией SLEEP таким образом
asm("sleep");
Вообще у разных микроконтроллеров биты управления режимами энергосбережения могут быть разбросаны по разным регистрам. А также количество режимов может изменяться от 2 до 6 у разных моделей МК. Чтобы посмотреть регистры конкретного микроконтроллера загляните в даташит в раздел "Power management and sleep modes". В данной статье мы рассмотрим МК mega8.
Рассмотрим регистр управления режимами питания микроконтроллера.
MCUCR
Бит 7 - SE: Разрешение спящего режима. Этот бит должен быть установлен в "1", чтобы МК смог войти в один из режимов сна.
Биты 6:4 - SM2:0: Выбор спящего режима
А теперь давайте кратко рассмотрим все спящие режимы, а также способы выхода из этих режимов.
  • Idle Mode. Режим ожидания (общий для всех моделей). В этом режим останавливается ЦПУ, а периферия - SPI, USART, Аналоговый компаратор, ADC, TWI, таймеры/счетчики, сторожевой таймер и система прерываний продолжает работать.
  • ADC Noise Reduction Mode. В этом режиме останавливается процессор, но АЦП, внешние прерывания, TWI, таймер/счетчик2, сторожевой таймер (если включен) продолжают работать. Этот режим служит для уменьшения разных наводок во время преобразования АЦП. Кроме прерывания по завершению преобразования АЦП, микроконтроллер из этого режима энергосбережения может вывести внешний сброс, сброс сторожевым таймером, прерывание TWI, прерывание таймера/счетчика2, прерывание готовности EEPROM, изменение уровня на INT0 или INT1.
  • Power-down Mode. Общий для всех микроконтроллеров AVR. В этом режиме останавливается все что есть в микроконтроллере, кроме сторожевого таймера (если его включить), внешних прерываний и TWI. Только внешний сброс, сброс сторожевым таймером, прерывание TWI или изменение уровня на INT0 или INT1 может разбудить микроконтроллер. Следует учесть, что в этом режиме останавливается тактовый генератор, поэтому чтобы проснуться микроконтроллеру может понадобиться какое-то время. Учитывайте это при разработке программ. Самый экономный режим.
  • Power-save Mode. Этот режим похож на Power-down mode. Отличается он тем, что если Таймер/счетчик2 работает асинхронно, то он продолжит свою работу и во время сна. Это может пригодиться при реализации часов реального времени на микроконтроллере.
  • StandbyMode. Этот режим также похож на режим Power-down mode. Но в этом режиме тактовый генератор продолжает работать (если установлен внешний кварц). Из этого режима МК просыпается за 6 тактов.
Да, еще отмечу, что нужно быть аккуратным при вызове режима энергосбережения из обработчика прерывания. Может оказаться так, что вы усыпляете МК, а он сразу просыпается и таким образом он не будет находиться в режиме энергосбережения.  На этом закончу описание режимов сна. Пример приведу в ближайшее время.

Комментариев: 4 RSS

3 Dmitry 16-01-2014 19:46

здесь пример в проекте http://samou4ka.net/page/binarnye-chasy-na-ds1302-i-mikrokontrollere-avr

4 Сергей 17-10-2014 03:38

Если я ставлю подтяжку на напряжение питания на вход прерывания INT0, будет ли она работать в powerdown mode(просыпаться при низком уровне на INT0), или же МК сразу же проснется после перехода в спящий режим, т.к. напряжение на вход прерываний подаватся перестанет?

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)