Режимы пониженного энергопотребления
Режимы пониженного энергопотребления позволяют отключать неипользуемые модули микроконтроллера, уменьшая потребляемый ток. В AVR имеется несколько таких режимов, позволяющих подстроить потребление тока под требования к устройству.Для разрешения "спящих" режимов необходимо установить 1 в бите SE регистра MCUCR. Биты SM1 и SM0 того же регистра определяют какой именно "спящий" режим будет использоваться.
Переход в режим понижеенного энергопотребления осуществляется командой SLEEP.
Если в "спящем" режиме сработает прерывание, контроллер будет переведён в нормальный режим работы, остановится на 4 такта, обработает прерывание и продолжит выполнение программы с команды, следующей за командой SLEEP.
Если во время "сна" произойдёт сброс контроллера, он перейдёт к обработке прерывания по сбросу.
Регистр MCUCR
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | MCUCR |
PUD | SM1 | SE | SM0 | ISC11 | ISC10 | ISC01 | ISC00 | ||
Чтение(R)/Запись(W) | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Начальные значения | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Биты 6, 4 - SM1, SM0 - определяют "спящий" режим.
SM1
| SM0 |
Режим
|
0 | 0 |
Idle
|
0
| 1 |
Power-Down
|
1
| 0 |
Standby
|
1
| 1 |
Power-down
|
Примечание: режим Stendby рекомендуется только при использовании внешнего кварца.
Бит 5 - SE - разрешение перехода в режим пониженного энергопотребления.
Во избежание непреднамеренного перехода в "спящий" режим рекомендуется устанавливать данный бит непосредственно перед командой SLEEP и сбрасывать сразу после перехода в обычный режим работы.
Режим Idle (режим холостого хода)
В этом режиме прекращается формирование сигналов clkCPU и clkFLASH. При этом остаются работать UART, аналоговый компаратор, АЦП, USI, таймеры/счётчики, сторожевой таймер и прерывания. Выход из режима Idle возможен как по внешнему, так и по внутреннему прерыванию (переполнение таймера/счётчика, окончание передачи по UART и т.п.).Если не используются прерывания от аналогового компаратора, то он может быть выключен установкой бита ACD регистра ACSR. Это снизит потребление тока контроллером в режиме Idle.
Преимущество этого режима - быстрая реакция на события, "пробуждающие" микроконтроллер. Другими словами выполнение программы начнётся сразу же после выхода на нормальный режим работы.
Режим Power Down (режим микропотребления)
В этом режиме отключается тактирование контроллера. Остаются работать только обработка внешних прерываний, обнаружение состояния Старт модуля USI и сторожевой таймер (если он включен). Разбудить микроконтроллер в этом режиме могут только внешний сброс, сброс от сторожевого таймера, сброс от Brown-out Reset, прерывание по состоянию Старт модуля USI и внешнее прерывание.В режиме Power Down пробуждение происходит не мгновенно, поэтому длительность сигнала, его вызывающего, должна быть не меньше времени запуска контроллера. Это время определяется теми же конфигурационными ячейками (фьюзами), которые задают задержку сброса микроконтроллера.
Режим Standby
Этот режим рекомендуется задействовать при использовании внешнего резонатора - кварца.Режим Standby идентичен режиму Power Down с тем исключением, что остаётся работать тактовый генератор, поэтому выход в рабочий режим происходит быстрее - за 6 тактов.