Лекции - Микропроцессорная техника
скачать (4640.4 kb.)
Доступные файлы (14):
Лекция_09_Режимы энергосбережения.doc | 77kb. | 29.04.2009 23:18 | ![]() |
Лекция_10 Конфигурационные биты.doc | 127kb. | 29.04.2009 23:20 | ![]() |
Лекция_11_ ФИД.doc | 275kb. | 28.04.2009 02:30 | ![]() |
Лекция_12_клавиатура (без прерывания).doc | 399kb. | 27.05.2009 01:01 | ![]() |
Лекция_13_клавиатура (с прерыванием).doc | 281kb. | 27.05.2009 01:02 | ![]() |
Лекция_14_дисплей.doc | 568kb. | 18.05.2009 23:32 | ![]() |
Лекция_1.doc | 603kb. | 11.02.2009 10:21 | ![]() |
Лекция_2.doc | 920kb. | 22.02.2009 20:24 | ![]() |
Лекция_3.doc | 1478kb. | 03.03.2009 23:46 | ![]() |
Лекция_4.doc | 455kb. | 31.03.2009 22:23 | ![]() |
Лекция_5 Таймеры.doc | 1912kb. | 07.04.2009 18:59 | ![]() |
Лекция_6 Таймеры_продолжение.doc | 1318kb. | 21.04.2009 22:34 | ![]() |
Лекция_7 Сторож_таймер.doc | 543kb. | 14.04.2009 21:04 | ![]() |
Лекция_8 Прерывания_итог.doc | 538kb. | 23.04.2009 00:20 | ![]() |
содержание
- Смотрите также:
- Раннев Г.Г. Информационно-измерительная техника и технологии [ документ ]
- История развития процессоров Intel.Процессоры Intel atom.Ноутбуки на базе технологии Intel atom [ документ ]
- Каталоги продукции ОАО КАМАЗ Б. Спецавтотехника [ документ ]
- Техника делового общения [ лекция ]
- Техника и технологии в нефтегазовой отрасли [ документ ]
- Микропроцессорная централизация ЭЦ-ЕМ [ лекция ]
- Техника удара по мячу [ реферат ]
- Исследование сложных систем [ лекция ]
- Методика и техника социологических исследований [ лекция ]
- Социальный портрет русской молодежи [ реферат ]
- Криогенная техника [ лекция ]
- Основы метрологии и электроизмерительная техника. Часть 1 [ лекция ]
Лекция_09_Режимы энергосбережения.doc
Лекция №9"Спящие" режимы центрального процессора
Микроконтроллеры нередко применяются в приборах с питанием от аккумуляторов и батарей. В таких случаях особенно важно, чтобы потребление тока микроконтроллером было как можно меньшим. Микроконтроллеры семейства АVR изготовлены по технологии КМОП, и потому для их работы необходим ток небольшой силы. Благодаря выбору более низкого уровня питающего напряжения, потребление тока снижается еще больше. Если и этого недостаточно, то можно выбрать настолько низкую тактовую частоту, насколько позволяет прикладная задача, поскольку из-за токов перезарядки паразитных емкостей ток потребления КМОП-схем почти пропорционален тактовой частоте. В дополнение к перечисленным мерам, центральный процессор микроконтроллеров семейства АVR можно перевести в режим пониженного энергопотребления или "спящий режим" (Sleep Mode). В таком режиме потребление тока резко снижается.
В табл. 9.1 показано типичное потребление тока центральным процессором модели А T90S1200 для различных режимов работы при температуре окружающей среды 250С, отключенном аналоговом компараторе и заблокированном сторожевом таймере.
Таблица 9.1. Типичное потребление тока Icc центральным процессором модели АT90S 1200 для различных режимов работы
Vcc | Ф | Icc/ Активный | Icc/ Ждущий | Icc/ Пониженное потребление |
5 В | 12МГц | 9 мА | 2,4 мА | 0,75 мкА |
5 В | 2МГц | 4 мА | 1 мА | 0,75 мкА |
3,3 В | 6МГц | 2,5 мА | 0,7 мА | 0,1 мкА |
3,3 В | 2МГц | 1,8 мА | 0,4 мА | 0,1 мкА |
Для перевода микроконтроллера семейства АVR в один из режимов пониженного потребления энергии необходимо разряд SE (Sleep EnabIe) регистра управления MCUCR установить в лог. 1, а затем выполнить команду sleep. Благодаря связи команды sleep с разрядом SE, центральный процессор не может быть непреднамеренно переведен в режим пониженного энергопотребления.
Когда во время режима пониженного энергопотребления происходит прерывание, центральный процессор выходит из "спящего" режима, выполняет подпрограмму обработки прерывания и продолжает выполнение программы с команды, следующей после команды sleep. Если во время режима пониженного энергопотребления поступает сигнал сброса, то центральный процессор выходит из "спящего" режима и продолжает выполнение программы с команды, расположенной по адресу $000 области команд.
Содержимое рабочих регистров и регистров ввода/вывода в течение режима пониженного энергопотребления остается неизменным. В том случае, если режим пониженного энергопотребления должен быть отключен в результате прерывания по уровню сигнала, низкий уровень должен сохраняться дольше, чем 16 мс, которые необходимы для перехода осциллятора в рабочий режим. В противном случае, соответствующий флаг прерываний снова должен быть сброшен прежде, чем центральный процессор возобновит работу.
Для микроконтроллеров семейства АVR может быть выбран один из двух "спящих" режимов:
в ждущем режиме (Idle Mode) работа центрального процессора приостанавливается, но таймер/счетчик, сторожевой таймер, система прерываний и тактирования остаются активными. Благодаря этому, центральный процессор может быть возвращен в обычный режим работы с помощью сторожевого таймера, таймера/счетчика или внешнего прерывания. Если нет необходимости в том, чтобы выход из ждущего режима осуществлялся с помощью аналогового компаратора, то компаратор отключается посредством установки в лог. 1 разряда АСО регистра ACSR. Это еще более снижает потребление тока в ждущем режиме, как это показано в табл. 9.2.
В режиме пониженного энергопотребления (Power Down Mode) системный осциллятор (а значит и весь микроконтроллер) находится в отключенном состоянии. В таком режиме с помощью внутреннего RC-генератора колебаний может включаться лишь сторожевой таймер со своим собственным обеспечением тактовой частотой. Для этого используется разряд WDE регистра WDTCR. Активный сторожевой таймер по истечении времени задержки опять переводит микроконтроллер в нормальное состояние. Если сторожевой таймер также отключен, то в нормальное состояние его может перевести только сигнал сброса на выводе /RESET или внешнее прерывание, активизированное по достижению определенного уровня сигнала.
Таблица 9.2. Типичное потребление тока Icc процессором модели AT90S1200 в ждущем режиме при активном и отключенном аналоговом компараторе
Vcc | | Icc/ Аkтивный | ^ | Icc / Ждущий |
Ф | Аналоговый компаратор | Аналоговый компаратор | ||
включен | отключен | |||
58 | 12 МГц | 9мА | 2,9мА | 2,4мА |
58 | 2МГц | 4мА | 1,5 мА | 1 мА |
3,38 | 6МГц | 2,5 мА | 0,9 мА | 0,7 мА |
3,3 8 | 2МГц | 1,8 мА | 0,5 мА | 0,4мА |
В табл. 9.3 показано потребление тока центральным процессором модели А T90S 1200 в режиме пониженного энергопотребления при активном и отключенном сторожевом таймере.
Таблица 9.3. Типичное потребление тока lee центральным процессором модели AT90S1200 в режиме пониженного энергопотребления при активном и отключенном сторожевом таймере
Vcc | Icc / Пониженное потребление | Icc / Пониженное потребление |
Сторожевой таймер включен | Сторожевой таймер отключен | |
58 | 80 мкА | 0,75 мкА |
3,38 | 18мкА | 0,1 мкА |
Выбор одного из "спящих" режимов осуществляется с помощью разряда SM регистра MCUCR. Если разряд SM установлен в лог. 1, то микроконтроллер переводится в режим пониженного энергопотребления последующей командой sleep, если же разряд SM сброшен в лог. О, то последующей командой sleep микроконтроллер переводится в ждущий режим в том случае, если ранее в регистре MCUCR был установлен разряд SE.
^
Режимы энергосбережения нужны для того, чтобы экономить питание. Применять их следует при питании от автономного источника - как правило, любой МК большую часть времени простаивает в ожидании событий. Например, процедура динамической индикации, повторяющаяся с частотой сотни герц, сама по себе выполняется всего за несколько десятков микросекунд, т. е. занимает сотые доли общего времени работы МК и даже меньше. Если считать, что в активном режиме МК потребляет порядка 10-15 мА, то ввод его в режим энергосбережения в паузах между событиями позволяет снизить суммарное потребление до -100 мкА и повысить временной ресурс работы схемы в сотни раз.
Но правильно организовать работу МК в режиме энергосбережения не так-то просто. Следует учитывать внешние соединения - один забытый в "нулевом состоянии" выход с подсоединенным подтягивающим резистором способен испортить всю картину. Переключение всех выводов на вход также может не дать нужного эффекта, если часть из них "висит в воздухе" - наводки будут переключать входную логику (если она не отключена) и тем самым повышать потребление. Отключение логики происходит автоматически при вводе в режим энергосбережения, но не для всех контактов - остаются включенными, например, выводы внешних прерываний, если они разрешены в программе, а также некоторые другие, если они используются в режиме альтернативных функций. Следует также не забывать выключать аналоговый компаратор, который включен по умолчанию.
Не имеет большого смысла заниматься энергосбережением, если у вас в схеме имеются другие элементы с большим потреблением, которые невозможно отключить. Большинство стандартных устройств, ориентированных на подключение к МК (EEPROM, часы, tlasll-карты, современные преобразователи уровня RS-232), автоматически (или по команде извне) устанавливаются в режим пониженного энергопотребления, когда находятся в ожидании команд. Но могут быть и компоненты, для отключения которых приходится изобретать специальные способы.
Нужно учитывать и нюансы внутренней работы МК. Скажем, когда вы посылаете байт через UART, то собственно передача после окончания операции записи в регистр данных начнет выполняться аппаратно, и может длиться порядка миллисекунды, в то время как GPU уже формально свободен для других операций. Если в этот момент ввести МК в режим энергосбережения, то вместе со всеми остальными модулями выключится и UART, и передача не будет выполнена. Поэтому в таком случае следует либо организовать задержку выключения, либо (что более грамотно) использовать прерывание"передача завершена" (ТХ complete), либо просто в цикле ожидать, пока бит ТХС регистра UCSRA не окажется в состоянии логической единицы.
^
В различных моделях МК АVR имеется от 2-3 (семейства Classic и Tiny) до 5-6 (старшие Mega) режимов энергосбережения.
Два базовых режима общие для всех моделей: Idle mode и Power Down mode. Отметим, что к режимам энергосбережения также относят стоящий несколько особняком специальный режим АDС Noise Reduction, который имеет иное назначение, и мы его рассмотрим далее. При практическом использовании режимов энергосбережения следует учесть, что их нельзя вызывать из процедуры прерывания - только из основной программы.
В МК АVR имеются следующие разновидности режимов энергосбережения.
В Idle mode (режиме ожидания) останавливается GPU (а также устройство управления выборкой команд из памяти). Все периферийные устройства таймеры, АЦП, порты - продолжают функционировать. Поэтому значительной экономии не получается: потребление снижается лишь на 30-50%. Очевидно, что режим Idle mode имеет смысл использовать тогда, когда общее потребление устройства лимитируется именно МК, который при этом обязательно должен находиться в состоянии постоянной готовности. Во всех остальных случаях следует выбирать режимы "глубокого" энергосбережения, когда собственное потребление МК снижается до единиц или десятков микроампер.
К таким режимам относится, в первую очередь, общий для всех моделей ^ . В нем останавливаются все узлы МК, за исключением сторожевого таймера (если он включен), системы обработки внешних асинхронных прерываний и модуля TWI. Соответственно, выход из этого режима возможен либо по сбросу МК (в том числе и от сторожевого таймера), либо от прерывания TWI, либо от внешнего прерывания (причем, только того, которое обнаруживается асинхронно). В роли "будящего" устройства может выступать и модуль универсального последовательного интерфейса USI (в тех моделях, в которых он заменяет TWI). Потребление в этом режиме может составить до нескольких десятков микроампер.
Важная особенность ^ - то, что в этом режиме останавливается тактовый генератор. Это означает, что при выходе из спящего режима тактовый генератор потратит время на "раскрутку", причем этот интервал будет тем же самым, что задается конфигурационными ячейками SUT1..0 для задержки сброса (см, раздел Конфигурационные биты). По умолчанию оно составляет 16384 такта (около 4 мс при тактовой частоте 4 МГц), что следует учитывать при разработке программы; при необходимости это время для случая кварцевого резонатора можно сократить до 1024 тактов установкой при программировании кристалла ячейки CKSEL0 в состояние лог. 0. Если это время критично, то применение RC-генератора или тактирование от внешнего источника (при соответствующей установке ячеек СКSЕL3..1) позволяет сократить время выхода на режим до минимума, когда задержка составит всего 6 тактов (+ 8 тактов на переход к выполнению "разбудившего" прерывания). Установка ячеек CKSEL0 и SUT1..0 при этом не имеет значения.
^ отличается от Power Down тем, что если в МК имеется таймер, могущий работать в асинхронном режиме от отдельного тактового генератора, и этот таймер включен, то он продолжит работу и в этом режиме. Это несколько увеличивает потребление, зато выход из режима Power Save возможен по прерываниям от таймера-счетчика. Практически это удобно при реализации часов реального времени.
^ отличается от Power Down тем, что в этом режиме продолжает работать тактовый генератор (только при установке внешнего резонатора). Режим полезен тем, что позволяет выходить из "спящего" состояния всего за 6 тактов. В некоторых моделях есть еще режим Extended Standby, который объединяет в себе Standby и Power Save.
^
Само по себе программирование режима энергосбережения - без учета всех отмеченных нюансов - очень простое.
Некоторую сложность здесь представляет только выбор режима из-за того, что в разных моделях МК АVR управляющие биты SMx (в младших Tiny и в семействе Classic всего один такой бит SM, выбирающий между двумя режимами Idle и Power Down, в остальных их больше) "разбросаны" по разным регистрам, и приходится смотреть в описание, чтобы не ошибиться. В большинстве младших моделей Mega, а также в Tiny и Classic, эти биты находятся в регистре MCUCR – в том же, который отвечает и за внешние прерывания. Но вот, например в АTmega8515 (в отличие от сделанного на его же основе А Tmega8535, где также один регистр MCUCR), три бита SM0..2 разбросаны по трем регистрам MSUCR, MCUCSR и IEMCUCR. Есть и другие варианты: в АTmega16 все эти биты также в одном регистре MCUCR, но бит SM2 почему-то поменялся местами с битом разрешения slеер -режима SE.
По умолчанию все биты установки ^ , сколько их есть (три SM0..2, два SM0..1 или один SM), установлены в нулевое состояние, что означает режим Idle. Тогда достаточно установить бит разрешения SE (он-то всегда находится в регистре MCUCR) и вызвать команду sleep.
Как мы уже отмечали, команду sleep нельзя вызывать из прерывания (она попросту не сработает). Инструкция рекомендует устанавливать бит разрешения непосредственно перед вызовом команды sleep: фактически это предохранитель, как и в некоторых других случаях (см., например, запись в EEPROM или обращение со сторожевым таймером далее), дублирование одной и той же операции во избежание самопроизвольного "ухода" МК в спящее состояние при наличии помех. Обратите внимание, что первым делом после выхода из режима "сна" выполнится обработчик прерывания, "разбудившего" компьютер, а после него - команда, следующая после sleep.
На практике чаще всего применяют общий для всех моделей МК режим ^ . Он определяется установкой бита SM1 (либо SM, если бит установки единственный) в единичное состояние. Удобен режим Standby (в тех МК, где он доступен), когда тактовый генератор продолжает работать, и потому для выхода из состояния "сна" требуется гораздо меньше времени всего шесть машинных циклов, в то время как выход из режима Power Down по времени аналогичен запуску МК после сброса.
Скачать файл (4640.4 kb.)