Режимы пониженного энергопотребления

Для применений, где потребление энергии критично, например, при питании от батарей, МК51 имеет два режима пониженного энергопотребления: режим ожидания Idle (холостого хода) и режим микропотребления PD (Power Down). Для активизации этих режимов требуется установить соответствующие биты PCON.0 (IDL) или PCON.1 (PD) (таблица 4.9)

Режим ожидания. При поступлении команды, которая установит бит IDL, МК переходит в режим ожидания (холостого хода). В контроллере работает внутренний тактовый генератор, работает схема прерываний, таймеры и последовательный порт. Останавливается процесс выборки команд, сохраняются данные в регистрах и на разрядах портов.

Для выхода из режима ожидания можно воспользоваться одним из двух способов:

1. аппаратный сброс. Используется сигнал сброса Режимы пониженного энергопотребления - student2.ru . При этом переопределяются многие регистры блока специальных функций, но сохраняется содержимое РПД;

2. прерывание. Активизация любого разрешенного прерывания приведет к сбросу бита IDL, вызову программы обслуживания прерывания и возврату в основной программе к команде, следующей за командой, которая включила режим ожидания.

Режим пониженной мощности. При выполнении команды, которая установит бит PD, МК перейдет в режим низкого потребления Power Down. В этом режиме выключается работа тактового генератора, все функции МК замораживаются, но РПД и блок регистров специальных функций сохраняют свои значения. Напряжение питания схемы при этом можно понизить до +2 В. Важно не понижать напряжение до самого момента включения режима Power Down, иначе может произойти аппаратный сброс.

Для выхода из данного режима можно использовать аппаратный сброс, или разрешенное прерывание от внешнего источника. Перед выходом из режима необходимо восстановить нормальный уровень питания и удержать его не менее 10-3 с. В этом случае успеет запуститься тактовый генератор, и его частота станет стабильной к моменту активизации МК.

Система прерываний

Источники прерываний

МК51 имеет пять источников прерываний (внешние прерывания Режимы пониженного энергопотребления - student2.ru , Режимы пониженного энергопотребления - student2.ru , прерывания от таймеров Т0, Т1 и прерывания от последовательного порта).

Внешние прерывания. Прерывания Режимы пониженного энергопотребления - student2.ru и Режимы пониженного энергопотребления - student2.ru могут быть вызваны либо уровнем, либо отрицательным перепадом на одноименных входах МК. Выбор определяется состоянием программно изменяемых бит IT0 и IT1 регистра TCON (TCON.0, TCON.2). При значении соответствующего бита «1», данное внешнее прерывание вызывается отрицательным перепадом.

Для генерации внешних прерываний используются флаги IE0 и IE1, находящиеся в регистре TCON (TCON.1, TCON.3). Если прерывание было вызвано отрицательным перепадом, то биты прерывания сбрасываются при вызове программы обслуживания прерываний. Если прерывание вызвано низким уровнем внешнего сигнала, то сброс флагов прерывания связан со снятием активного уровня запроса прерывания.

При формировании запроса прерывания по перепаду высокий и низкий уровни входных сигналов должны удерживаться не менее одного машинного цикла.

Если внешние прерывания Режимы пониженного энергопотребления - student2.ru или Режимы пониженного энергопотребления - student2.ru вызываются низким уровнем сигнала, внешний источник должен удерживать активный уровень до вызова программы обслуживания прерывания. Запрос необходимо снять до завершения программы прерывания.

Прерывания таймеров. Прерывания вызываются флагами TF0 и TF1 регистра TCON (TCON.5, TCON.7). Флаги устанавливаются при переполнении соответствующего таймера/счетчика. Флаги сбрасываются аппаратно при вызове программы прерывания.

Прерывания последовательного порта. Прерывание от последовательного порта вызывается при единичном значении одного из флагов RI или TI регистра SCON (SCON.0, SCON.1). Значения флагов проверяются по логическому условию ИЛИ. Программа обслуживания прерывания от последовательного порта должна сама определить флаг, вызвавший прерывание, и сбросить его программно.

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

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

Таблица 4.10 - Адреса векторов прерываний



Источник прерывания Бит запроса прерывания Сбрасывается аппаратно Адрес вектора
INT0 IE0 Нет (уровень) Да (переход) 0003H
Таймер 0 TF0 Да 000BH
INT1 IE1 Нет (уровень) Да (переход) 0013H
Таймер 1 TF1 Да 001BH
Последователь-ный порт RI, TI Нет 0023H

В системе прерываний МК51 имеется возможность индивидуально разрешать и запрещать реакцию системы на любое прерывание. Кроме этого имеется возможность группового запрета всех прерываний, независимо от индивидуального разрешения/запрета.

Для управления процессом разрешения и запрета используется специальный регистр масок прерываний IE (таблица 4.11).

При разрешении некоторого прерывания требуется отменить запрет всех прерываний (EA=1), и установить нужный бит. Если сбросить бит (EA=0), все прерывания запрещаются, независимо от индивидуального разрешения.

Таблица 4.11 - Регистр IE

Режимы пониженного энергопотребления - student2.ru

Такой способ группового запрета позволяет быстро и просто на заданное время сделать систему нечувствительной к запросам прерываний (например, для выполнения важной процедуры, чувствительной к времени выполнения).

Приоритеты прерываний

Есть возможность индивидуально управлять приоритетом источников прерываний при помощи регистра приоритетов IP (таблица 4.12).

Таблица 4.12 - Регистр IP

Режимы пониженного энергопотребления - student2.ru

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

Прерывание с низким приоритетом может быть прервано прерыванием с более высоким приоритетом. Прерывание с наивысшим приоритетом не может быть прервано никаким другим источником прерывания.

Если два или более запросов с разными уровнями приоритетов принимаются одновременно, запрос высокого уровня приоритета обслуживается первым.

Если одновременно принимаются запросы с одинаковыми уровнями приоритета, то порядок обслуживания определяется внутренней последовательностью опроса. Если все прерывания имеют одинаковый приоритет, то обслуживание запросов предполагает следующий порядок: Режимы пониженного энергопотребления - student2.ru , Т0, Режимы пониженного энергопотребления - student2.ru , Т1, TI+RI. Данный порядок соблюдается внутри каждой группы запросов с одинаковым приоритетом.

Процесс прерывания

Флаги прерываний опрашиваются в фазе S5P2 каждого машинного цикла. При обнаружении запроса прерывания, в следующем машинном цикле выполняется опрос по уровням приоритетов.

Если один из флагов прерывания равен «1», система аппаратно генерирует команду вызова подпрограммы по фиксированному адресу вектора прерывания. При этом в стек загружается адрес следующей команды, после текущей, а в программный счетчик грузится вектор прерываний (адрес программы обслуживания).

Вызов подпрограммы может быть блокирован одним из условий:

1. В данный момент обслуживается прерывание равного или более высокого уровня приоритета.

2. Текущий цикл опроса не является последним циклом выполняемой команды.

3. Выполняется любая команда записи в регистр масок IE или регистр приоритетов IP.

Условие 2 гарантирует, что выполняемая команда будет завершена полностью. Условие 3 гарантирует, что если выполняется любая команда записи в указанные регистры, то по крайней мере еще одна команда будет выполнена после нее до вызова любой программы обслуживания.

Опрос повторяется в каждом машинном цикле. Каждый цикл опроса является новым, т.е. флаг прерывания, не дождавшийся обслуживания, не запоминается. Для возврата из подпрограммы обслуживания прерывания должна использоваться команда RETI, которая считывает из стека адрес возврата, записывает его в программный счетчик и информирует систему, что завершена программа обслуживания прерывания, что восстанавливает всю систему прерываний.

В случае использования для возврата из программы обслуживания команды RET система прерываний будет считать, что продолжается обслуживание данного прерывания.

Наши рекомендации