
- •1. Общие принципы построения микропроцессорных систем.
- •2. Обобщенная структура микропроцессорной системы.
- •3. Архитектурные особенности и функциональные возможности 8-разрядных микропроцессоров.
- •4. Архитектурные особенности и функциональные возможности 16-разрядных микропроцессоров.
- •5. Особенности системы команд языка Ассемблер для разных типов микропроцессоров.
- •6. Принципы программирования однокристального 8-разрядного микропроцессора.
- •7. Организация устройств ввода/вывода информации в микропроцессорных системах.
- •7. Продолжение
- •8. Современные микроконтроллеры. Архитектура, особенности различных типов микроконтроллеров.
- •8. Продолжение.
- •9. Этапы проектирования микро-эвм на базе микропроцессорных устройств.
- •10. Методы диагностирования микропроцессорных устройств.
8. Продолжение.
ровые пары (X, Y, Z), получаемые объединением двух восьмиразрядных регистров в один 16-разрядный, используются для косвенной адресации. Регистр состояния по функциональному назначению аналогичен регистру флажков RF в структуре МП, он содержит признаки результатов при выполнении некоторых команд (нуль, знак, перенос, половинный перенос и т.д).
Генератор синхросигналов имеет внешние выводы для подключения кварцевого или иного резонатора либо внешнего тактирующего сигнала. Кроме основного синхрогенератора микроконтроллер имеет и дополнительный встроенный RC-генератор с фиксированной частотой 1 МГц (при напряжении питания 5 В) для тактирования сторожевого таймера. Вход RESET (L-активный) служит для сброса микроконтроллера (приведения его в исходное состояние), а также перевода его в режим программирования при подаче на этот вход специального повышенного напряжения 12 В. Выход ALE имеет то же назначение, что и одноименный выход рассмотренного ранее микропроцессора и используется при подключении к микроконтроллеру внешнего ЗУ. В этом случае реализуется режим мультиплексируемой шины: старший полуадрес выводится в течение всего цикла через один восьмиразрядный порт, а младший - через второй восьмиразрядный порт загружается в начале цикла во внешний регистр-защелку, где сохраняется на все время цикла. После загрузки внешнего регистра-защелки этот же порт используется для передачи данных и сигналов управления.
Рис. 2 - Структура порта ввода/вывода МК AVR
Модуль прерываний служит для приема и обработки запросов прерывания основной программы, как внутренних, так и внешних. Предусмотрено наличие 10 внутренних и двух внешних запросов.
Структура одного из четырех портов ввода/вывода МК AVR приведена на рисунке 2. Порт представляет собою набор из восьми линий. Каждая из восьми линий любого порта конфигурируется как входная или выходная индивидуально с помощью управляющего слова, загружаемого в регистр направления передачи. Каждый бит этого слова задает конфигурацию своей линии. Выводимые или вводимые данные поступают в регистр данных. Входные и выходные сигналы проходят через буферные каскады (драйверы).
Последовательный периферийный интерфейс SPI применяется как для программирования микроконтроллера в последовательном режиме, так и для обмена данными с периферийными устройствами или между микроконтроллерами. Протокол обмена для SPI предусматривает работу МК в режиме ведущего (Master), либо ведомого (Slave). Скорости передачи задаются синхросигналами, получаемыми делением тактовой частоты МК, и имеют четыре программируемых значения: 1/4, 1/16, 1/64 и 1/128 от этой частоты.
Асинхронный последовательный интерфейс между микроконтроллером и внешними устройствами обеспечивается блоком UART. Этот блок преобразует параллельные данные от микроконтроллера в последовательные для внешнего устройства и наоборот, работает по асинхронному протоколу.
Аналоговый компаратор сравнивает напряжения, подаваемые на две специально выделенные линии порта В. Одно из этих напряжений сигнальное, другое опорное. Выходной сигнал компаратора имеет логический характер, показывает, какое из двух напряжений больше, доступен программе и поступает на блок прерываний. С помощью аналогового компаратора можно, например, измерять длительность входных импульсов, поскольку начало и конец импульса могут быть отмечены изменением состояния компаратора, а эти события могут служить источниками команды захвата для таймера, позволяют зафиксировать цифровые значения моментов начала и конца импульса.
Организация памяти и функционирование МК. Распределение памяти в МК AVR.
Адресные пространства микроконтроллера показаны на рисунке 3. Согласно Гарвардской архитектуре, адресные пространства (АП) для памяти программ и памяти данных разделены. Память данных организована линейно и имеет два АП. В первом находятся адреса регистровой памяти и статического 3У (SRAM). Во втором размещены адреса энергонезависимой репрограммируемой памяти EEPROM. Кроме того, возможно подключение к микроконтроллеру внешнего ОЗУ, для которого шина адреса и мультиплексируемая шина адресов/данных организуются с помощью портов ввода/вывода РА и PC. Линии этих портов формируют 16-разрядные адреса для paботы с внешней памятью большой емкости (до 64 Кбайт). При отсутствии внешней памяти достаточно использовать девятиразрядные адреса.
В регистровой области памяти данных размещены адреса регистров общего назначения РОН (32 адреса для адресации 32 байтов памяти) и регистров ввода/вывода РВВ (64 адреса для адресации 64 байтов памяти). Для косвенной адресации используются регистры X, Y, Z, представляющие собою 16-разрядные пары байтовых регистров. Общая емкость регистровой памяти составляет 96 байтов. Для адресов статической памяти SRAM отведены следующие 512 адресов. Подключение внешнего ОЗУ может довести емкость памяти до 64 Кбайт. Обращение к внешнему ОЗУ увеличивает время выполнения команды на 1-2 такта для каждого обрабатываемого байта.
При обращении к разным областям памяти данных используются команды с различными способами адресации. Адреса области РВВ являются операндами команды (прямая адресация). В пространстве РВВ размещены служебные регистры микроконтроллера и регистры, относящиеся к внешним устройствам. В их числе 12 регистров для работы с портами ввода/вывода (таких портов 4, для каждого предусматриваются регистр данных, регистр направления данных и регистр выводов. Имеется регистр - указатель стека. Глубина стека определяется наличием свободной области памяти программ. Многочисленные регистры обеспечивают работу модулей SPI, UART, таймеров, стека, имеются регистры состояния и управления микроконтроллером, регистр флагов и масок запросов прерывания, управления памятью EEPROM. Для управления микроконтроллером служит регистр с битами разрешения внешнего ОЗУ, разрешения перехода к режиму пониженного
энергопотребления и выбора конкретного варианта из таких режимов, условий генерации запросов внешних прерываний (по фронту сигнала, по уровню и др.). К РОН и РВВ возможны обращения как по командам ввода и вывода IN и OUT, так и как к ячейкам ЗУ. При этом для разных способов обращения диапазоны адресов РВВ смещены (на 32 адреса).
Энергонезависимая память EEPROM, рассчитанная на хранение редко изменяющихся данных и имеющая длительные операции записи, отличается особой организацией. Доступ к ней происходит с использованием трех регистров области РВВ - регистры адреса, данных и управления. Так как емкости памяти в 512 байт соответствует девятиразрядный адрес, для адреса нужна пара регистров РВВ. Регистр данных служит для размещения данных, подлежащих записи в память или считываемых из нее. В регистре управления задействованы три бита: один определяет наличие или отсутствие разрешения записи, второй разрешает саму запись, третий разрешает чтение. Установка второго и третьего битов вызывает выполнение соответствующих процессов Длительность цикла записи при напряжении питания 5В составляет 2мс, при 2,7 В - 4 мс. Чтение выполняется за один такт синхронизации.
Программы хранятся во флэш-памяти, разрядность которой соответствует формату команд и равна 16.
Способы адресации, используемые в микроконтроллере
В микроконтроллере применяются прямая и косвенная адресации.
Прямая используется в следующих случаях:
- при адресации одного РОН, что занимает в слове команды 5 бит, или при адресации двух РОН с занятием 10 бит (по 5 бит для адресов источника и приемника данных);
- при пересылке между РВВ и РОН с занятием 11 бит в слове команды (6 на адрес РВВ и 5 на адрес РОН);
- при обращении ко всему адресному пространству ОЗУ с использование двух слов команды, из которых второе целиком отдается под адрес ячейки памяти.
Косвенная с использованием индексных регистров X, Y, Z применяется в таких вариантах:
- простая (адрес находится в индексном регистре);
- относительная (адрес вычисляется как сумма содержимого индексного регистра и константы, содержащейся в команде);
- с преддекрементом (до обращения к ячейке памяти адрес в индексном регистре уменьшается на единицу);
- с постинкрементом (после обращения по адресу в индексном регистре его содержимое увеличивается на единицу).
Два последних варианта косвенной адресации позволяют эффективно сбрасывать массивы данных.
Выполнение команд при работе микроконтроллера
Повышению производительности МК способствует выполнение почти всех команд за один такт машинного времени. Такая возможность – следствие конвейерной обработки информации и непосредственного подключения АЛУ ко всем РОН. В нормальном режиме работы конвейера параллельно выполнению текущей команды производится выборка и декодирование следующей. При нарушении естественного следования команд (выполнении команд переходов) в работе конвейера возникает разрыв. В этом случае уже выбранная для очередной операции команда не может быть использована и приходится возвращаться к выбору новой, нарушая нормальный ритм работы конвейера. Время выполнения команды увеличивается на 2-4 такта.
Начало выполнения программы инициируется сигналом сброса, после которого МК обращается к адресу стартовой команды. Сброс вызывается несколькими причинами - включением питания, внешним сигналом, сигналом от сторожевого таймера, снижением питающего напряжения ниже допустимого уровня. После события, вызывающего сброс, запускается таймер задержки сброса и лишь после отработки таймером интервала задержки формируется внутренний сигнал сброса. Задержка позволяет микроконтроллеру принять определенное исходное состояние, необходимое для нормального начала работы. Таймер задержки сброса работает от внутреннего RC-генератора, основной генератор за время задержки выходит на стационарный режим. Относительно большое время выхода на стационарный режим характерно, в частности, для генератора с кварцевой стабилизацией частоты.
В ходе выполнения программы контроллер выполняет команду за командой, пока не дойдет до команды останова. Все множество команд, выполняемых контроллером, можно разбить на следующие группы: команды пересылки данных; команды арифметических операций и сдвигов; команды логических операций; команды операций с битами; команды передачи управления; команды управления системой.
Специфичная группа команд операций с битами содержит команды установки или сброса заданного разряда в регистре РОН или РВВ. Для удобства программирования задействованным разрядам регистров РВВ присваиваются символические имена, определение которых дается в специальном файле, подключаемом в начале программы.
Режимы различного потребления мощности
Микроконтроллер может находиться в нескольких режимах потребления мощности. В активном режиме потребляется полная мощность, кроме того, имеются режимы покоя (Idle) и глубокого понижения мощности (Роwer Down). В режимы пониженного потребления мощности ("спящие") МК переходит по команде SLEEP, которая устанавливает в регистре управления контроллером два флажка - флажок перехода к режиму пониженного потребления мощности и флажок, задающий конкретный тип такого режима.
В режиме покоя останавливается работа процессора, а периферийные устройства и система прерывания функционируют. Выход из режима покоя возможен по запросам прерывания от внутренних и внешних источников, в частности, от таймера. "Пробуждение" микроконтроллера из состояния покоя является быстрым.
В режиме глубокого понижения мощности прекращается работа всех блоков контроллера кроме сторожевого таймера и подсистемы обработки внешних прерываний. Выход из этого режима возможен по внешнему сигналу сброса, сигналу сброса от сторожевого таймера или внешним прерываниям. "Пробуждение" из режима глубокого понижения мощности является медленным, для него требуется интервал времени, соответствующий задержке таймера сброса.
"Спящие" режимы позволяют резко уменьшить потребляемые токи в периоды бездействия микроконтроллера. Это особенно полезно при использовании МК в устройствах с автономным питанием. Если выход из "спящего" режима происходит по событию прерывания, МК переходит в рабочий режим выполнения соответствующей подпрограммы и затем возобновляет выполнение основной программы с той команды, которая стояла после команды SLEEP. Если же "пробуждение" является результатом процесса сброса, происходит реинициализация контроллера.