Режимы пониженного энергопотребления
Режимы отличаются числом периферийных устройств микроконтроллера, функционирующих в «спящем» режиме и степенью уменьшения энергопотребления. Для управления «спящим» режимом используетсяется регистр ввода/вывода MCUCR, формат которого показан на Рис.2.6.
Рис. 2.6. В общей сложности для управления «спящим» режимом в микроконтроллерах семейства используется четыре разряда регистров ввода/вывода. Назначение этих разрядов приведено в Таб.2.6
Таблица 2.6. Разряды регистров MCUCR для управления «спящим» режимом
Переключение в любой из режимов пониженного потребления осуществляется командой SLEEP. При этом флаг SE должен быть установлен в «1». Во избежание непреднамеренного переключения микроконтроллера в «спящий» режим рекомендуется устанавливать этот флаг непосредственно перед выполнением команды SLEEP. Режим, в который перейдет микроконтроллер после выполнения команды SLEEP, определяется состоянием разрядов SM2…SM0. . Соответствие между содержимым этих разрядов и режимом пониженного энергопотребления приведено в Табл. 2.7.
Таблица 2.7. Выбор режима пониженного энергопотребления
Выход из «спящего» режима может быть осуществлен в результате прерывания и сброса. При генерации прерывания микроконтроллер переходит в рабочий режим, останавливается на 4 машинных цикла, выполняет подпрограмму обработки прерывания и возобновляет выполнение программы с инструкции, следующей за командой SLEEP. Содержимое РОН, ОЗУ и РВВ при этом не изменяется. После перехода микроконтроллера в рабочий режим управление передается по адресу вектора сброса. Idle (ждущий режим) В режиме Idle прекращается формирование тактовых сигналов clkCPU и clk FLASH. При этом ЦПУ микроконтроллера останавливается, а все остальные периферийные устройства (интерфейсные модули, таймеры/счетчики, аналоговый компаратор, АЦП, сторожевой таймер), а также подсистема прерываний продолжают функционировать. Поэтому выход из режима Idle возможен как по внешнему, так и по внутреннему прерыванию. Если разрешена работа АЦП, то преобразование начнет выполняться сразу же после перехода в этот «спящий» режим.. Основным преимуществом режима Idle является быстрая реакция на события, приводящие к «пробуждению» микроконтроллера. Другими словами, выполнение программы начинается сразу же после перехода из режим Idle в рабочий режим. ADC Noise Reduction (режим снижения шумов АЦП) Данный режим имеется только в моделях, содержащих в своем составе модуль АЦП. В этом режиме прекращает работу ЦПУ микроконтроллера и подсистема ввода/вывода (отключаются тактовые сигналы clkCPU, clkFLASH и clkI/O), а АЦП, подсистема обработки внешних прерываний, сторожевой таймер и блок сравнения адреса модуля TWI продолжают функционировать. За счет этого уменьшаются помехи на входах АЦП, вызываемые работой системы ввода/вывода микроконтроллера, что, в свою очередь, позволяет повысить точность преобразования. Если АЦП включен, преобразование начинается сразу же после перехода в этот «спящий» режим. Поскольку тактовый сигнал подсистемы ввода/вывода clkI/O в этом режиме не формируется, возврат микроконтроллера в рабочий режим может произойти только в результате сброса (аппаратного, от сторожевого таймера, от схемы BOD) или в результате генерации следующих прерываний • прерывания по совпадению адреса от интерфейса TWI; • внешнего прерывания (обнаруживаемого асинхронно); • прерывания от EEPROM_памяти и SPM_прерывания; • прерывания от АЦП. Power Down (режим микропотребления) В режиме Power Down отключаются все внутренние тактовые сигналы, соответственно прекращается функционирование всех систем микроконтроллера, работающих в синхронном режиме. Единственными узлами, продолжающими работать в этом режиме, Поскольку тактовый генератор микроконтроллера в режиме Power Down останавливается, между наступлением события, приводящего к «пробуждению» микроконтроллера и началом его работы проходит некоторое время, в течение которого тактовый генератор микроконтроллера выходит на рабочий режим. Эта задержка определяется теми же конфигурационными ячейками, которые определяют задержку сброса микроконтроллера Выход из режима Power Down возможен либо в результате сброса (аппаратного, от сторожевого таймера) или в результате генерации внешнего прерывания. Power Save (экономичный режим) Этот режим идентичен режиму Power Down, за одним исключением: если таймер/счетчик микроконтроллера, поддерживающий работу в асинхронном режиме, сконфигурирован для работы в этом режиме, то он будет работать во время «сна» микроконтроллера. Поэтому выход из режима Power Save возможен не только в результате событий, перечисленных при рассмотрении режима Power Down, но и по прерываниям от таймера/счетчика. Разумеется, эти прерывания должны быть разрешены. Extended Standby (расширенный режим ожидания) Как и режим Standby, этот режим доступен только при использовании генератора с внешним резонатором. Режим Standby полностью идентичен режиму Power Save, за исключением того что тактовый генератор продолжает функционировать.
Сброс Реинициализация, или так называемый «сброс», переводит микроконтроллер в исходное состояние. Сброс может быть вызван следующими событиями: • включение напряжения питания микроконтроллера; • подача сигнала НИЗКОГО уровня на вывод RESET (аппаратный сброс); • тайм-аут сторожевого таймера; • падение напряжения питания ниже заданной величины; • сброс по интерфейсу JTAG. При наступлении любого из перечисленных событий во все регистры ввода/вывода заносятся их начальные значения, а в счетчик команд загружается значение адреса вектора сброса. По этому адресу должна находиться команда безусловного перехода JMP на начало программы. Если же прерывания в программе не используются, то она может начинаться непосредственно с адреса вектора сброса. Вектор сброса располагается в самом начале памяти программ по адресу $0000. Логика схемы сброса микроконтроллера следующая. При наступлении события, приводящего к сбросу микроконтроллера, формируется внутренний сигнал сброса. Одновременно запускается таймер формирования задержки сброса. По истечении определенного промежутка времени внутренний сигнал сброса снимается и начинается выполнение программы. Микроконтроллер позволяют определить событие, в результате которого произошел сброс устройства. Для этой цели используется регистр управления и состояния микроконтроллера MCUCSR, расположенный по адресу $34 ($54). Помимо всего прочего, этот регистр содержит набор флагов, состояние которых зависит от события, вызвавшего сброс устройства. Формат регистра MCUCSR приведен на Рис. 2.7 (разряды, не относящиеся к подсистеме сброса, выделены серым цветом). Описание флагов, используемых для определения источника сброса, приведено в Табл. 2.8 .
Рис. 2.8. Формат регистра MCUCSR
|