Энергосберегающие режимы работы

 

2.18.1. МК 80C51 имеют два энергосберегающих режима работы: режим холостого хода (idle mode) и режим пониженного энергопотребления (power down mode). В режиме холостого хода (IDL=1) внутренний тактовый генератор МК работает, осуществляя синхронизацию контроллера прерываний, последовательного порта и таймеров, но блокируется поступление импульсов синхронизации в центральный процессор (рис. 2.17). В режиме пониженного энергопотребления (PD=1) тактовый генератор останавливается и импульсы синхронизации не вырабатываются.

2.18.2. В режим холостого хода МК переводится программной установкой бита IDL (PCON.0) регистра управления мощностью (см. табл. 2.10).

В этом режиме приостанавливается работа CPU, благодаря чему снижается энергопотребление МК приблизительно в 4 раза [ 2 ]. Кроме того, дополнительно снижается энергопотребление всей микропроцессорной системы за счет резкого уменьшения тока потребления микросхем внешней памяти.

 

Рис. 2.17. Внутренняя синхронизация МК в режимах Idle и Power Down

 

Тактовый генератор МК, а также таймеры, последовательный порт и контроллер прерываний в режиме холостого хода продолжают работать. Содержимое внутренней памяти данных и всех регистров специальных функций (в том числе, SP, PC, PSW, ACC), а также логические сигналы на выходах всех портов сохраняются неизменными. На выходах ALE и PSEN’ поддерживаются логические сигналы 1.

Вывести МК из режима холостого хода можно с помощью любого разрешенного прерывания или с помощью аппаратного сброса.

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

Для того, чтобы выйти из режима холостого хода с помощью аппаратного сброса МК, достаточно подать внешний сигнал RST на время, равное длительности двух машинных циклов, поскольку в этом случае (в отличие от сброса при включении электропитания) тактовый генератор не нуждается в запуске. Бит IDL сбрасывается сигналом RST асинхронно, и CPU сразу же возобновляет выполнение программы с того места, где она была приостановлена переходом в режим холостого хода. Следует помнить о том, что внутренний сигнал сброса формируется не мгновенно, а с некоторой задержкой относительно переднего фронта сигнала RST (около двух машинных циклов), причем, до тех пор, пока не произошел сброс МК, аппаратно запрещается доступ процессора к внутренней памяти данных, но не запрещается доступ к буферным регистрам параллельных портов. Для того, чтобы исключить появление неожиданных сигналов на выходах портов, не следует использовать в программе сразу вслед за командой, которая переводит МК в режим холостого хода, команду записи в регистр параллельного порта или команду обращения к внешней памяти данных.

2.18.3. Перевод МК в режим пониженного энергопотребления осуществляется программной установкой бита PD (PCON.1) регистра управления мощностью (см.
табл. 2.10). В этом режиме тактовый генератор МК не работает, вследствие чего синхронизация всех внутренних функциональных узлов прекращается. Содержимое внутренней памяти данных и регистров специальных функций сохраняется неизменным, выходные сигналы портов соответствуют содержимому буферных регистров, на выходах ALE и PSEN’ формируются сигналы 0. Потребляемый ток снижается приблизительно до 15 мкА [ 2 ].

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

После перевода МК в режим пониженного энергопотребления напряжение питания может быть снижено до 2 В, однако, перед выходом из данного режима напряжение питания должно быть восстановлено до нормального уровня.

 


3. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ

3.1. Общие положения

 

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

3.1.2. Для повышения производительности и качества программирования микроконтроллеров на уровне системы команд широко используется язык ассемблера, который позволяет сделать исходный текст программы более наглядным и понятным для программиста, чем колонка двоичных чисел. Принципиальное отличие языка ассемблера от всех других языков программирования состоит в том, что этот язык оперирует только командами, которые непосредственно распознает центральный процессор микроконтроллера. По исходному тексту программы, написанной на языке ассемблера, всегда можно определить время ее исполнения и объем программной памяти, необходимый для хранения программы, так как точно известны длина (количество байтов) и время выполнения каждой команды.

Кроме языка ассемблера опытные разработчики применяют языки программирования высокого уровня (например, С51 и PL/M51), которые в данном учебном пособии не рассматриваются. Это сделано по двум причинам. Во-первых, учебное пособие является узко специализированным, и в число его задач не входит повышение эрудиции читателей в вопросах выбора языка программирования.
Во-вторых, по мнению автора, для начинающих разработчиков программирование на языке ассемблера значительно полезнее, чем на языках высокого уровня, поскольку дает возможность лучше изучить архитектуру микроконтроллеров.

3.1.3. В настоящее время широко применяются технологии программирования микроконтроллеров с помощью персональных компьютеров, позволяющих автоматизировать многие трудоемкие процессы. Ниже рассмотрена одна из компьютерных технологий программирования, при использовании которой разработка программы состоит из следующих основных этапов (рис. 3.1):

1) декомпозиция программы,

2) разработка исходных текстов всех модулей программы с помощью текстового редактора,

3) трансляция исходных текстов модулей программы в объектные модули с помощью программы-транслятора,

4) компоновка объектных модулей вместе с библиотечными модулями в единый загрузочный модуль,

5) отладка программы с помощью эмулятора ПЗУ,

6) запись отлаженной программы в ПЗУ или внутреннюю программную память микроконтроллера с помощью программатора.

Для выполнения перечисленных выше работ достаточно иметь следующие аппаратные и программные средства:

* любой IBM-совместимый персональный компьютер с операционной системой MS DOS версии 3.30 или более поздней,

* эмулятор ПЗУ,

* программатор ПЗУ,

* текстовый редактор,

* транслятор,

* компоновщик.

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

 

Рис. 3.1. Алгоритм программирования МК

 

3.1.4. Декомпозицией (decomposition) называется разбиение программы на модули (или другие структурные единицы), которые в дальнейшем будут разрабатываться параллельно. Этот этап работы не автоматизирован. Он выполняется на основе общего алгоритма функционирования микропроцессорной системы. Один из модулей программы является главным (в нем содержится программа, запускаемая при сбросе микроконтроллера), а остальные модули обеспечивают работу главного модуля (в них содержатся подпрограммы, которые могут вызываться как из главного, так и из других модулей программы). На этапе декомпозиции разрабатывается структурная схема программы, показывающая взаимосвязи отдельных модулей, а также производится распределение адресного пространства памяти данных между модулями.