Микроконтроллеры AVR семейства Mega являются 8-разрядными микроконтроллерами с RISC-архитектурой. Они имеют электрически стираемую память программ (FLASH) и данных (EEPROM), а также разнообразные периферийные устройства. Следует отметить, что микро контроллеры семейства Mega имеют самый богатый набор периферийных устройств по сравнению с микроконтроллерами других семейств. Более того, состав этих устройств от модели к модели практически не меняется (меняются только их функциональные возможности). К устройствам, присутствующим не во всех моделях семейства, относятся АЦП, модуль двухпроводного интерфейса TW1 (Two Wire Interface, аналог шины 12С), а также модуль интерфейса JTAG. Структурная схема микроконтроллеров семейства Mega приведена на Рис.
Организация памяти
В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним. Способы адресации и доступа к этим областям памяти также различны. Такая структура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно ограничивает производительность. Каждая из областей памяти данных (ОЗУ и EEPROM) также расположена в своем адресном пространстве.
Память программ
Память программ предназначена для хранения команд, управляющих функционированием микроконтроллера. Память программ также часто используется для хранения таблиц констант, не меняющихся во время работы программы.
Как уже было сказано, память программ представляет собой электрически стираемое ППЗУ (FLASH-ПЗУ). В связи с тем что длина всех команд кратна одному слову (16 бит), память программ имеет 16-разрядную организацию. Соответственно, объем памяти микроконтроллеров семейства составляет 8К (8x1024) 16-разрядных слов. Логически память программ разделена на две неравные части — область прикладной программы и область загрузчика. В последней может располагаться специальная программа (загрузчик), позволяющая микроконтроллеру самостоятельно управлять загрузкой и выгрузкой прикладных программ. Если же возможность самопрограммирования микроконтроллера не используется, прикладная программа может располагаться и в области загрузчика.
Для адресации памяти программ используется счетчик команд (PC — Program Counter). Размер счетчика команд составляет 12разрядов
По адресу $0000 памяти программ находится вектор сброса. После инициализации (сброса) микроконтроллера выполнение программы начинается с этого адреса (по этому адресу должна размещаться команда перехода к инициализационной части программы). Начиная с адреса $001 памяти программ, располагается таблица векторов прерываний. Размер этой области 20 байт ($001…$014).
При возникновении прерывания после сохранения в стеке текущего значения счетчика команд происходит выполнение команды, расположенной по адресу соответствующего вектора. Поэтому по этим адресам располагаются команды перехода к подпрограммам обработки прерываний. В качестве этих команд используются команды относительного перехода (RJMP.
Если прерывания в программе не используются либо таблица векторов прерываний располагается в области загрузчика, то основная программа может начинаться непосредственно с адреса $0001.
Как известно, память программ может использоваться не только для хранения кода программы, но также и для хранения различных констант. Для пересылки байта из памяти программ в память данных имеется специальная команда — LPM. При использовании команды LPM адрес, по которому производится чтение, определяется содержимым индексного регистра Z. При этом старшие 15 разрядов содержимого регистра будут определять адрес слова (0...32К), а младший разряд будет определять, какой из байтов будет прочитан: «О» — младший байт, «1» — старший байт
В заключение следует отметить, что FLASH-ПЗУ, используемое в микроконтроллерах AVR, рассчитано как минимум на 1000 циклов стирания/записи.
Память данных
Память данных микроконтроллеров разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энерго независимое ЭСППЗУ (EEPROM).
Регистровая память включает 32 регистра общего назначения (РОН), объединенных в файл, и служебные регистры ввода/вывода (РВВ).
В обеих областях регистров ввода/вывода располагаются различные служебные регистры (регистр управления микроконтроллером, регистр состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера
Для хранения переменных программ помимо регистров общего назначения также может использоваться статическое ОЗУ объемом 512 байт.
Для долговременного хранения различной информации, которая может изменяться в процессе функционирования готовой системы (калибровочные константы, серийные номера, ключи и т. п.), в микроконтроллерах используется EEPROM-память. Ее объем составляет 512 байт. Эта память расположена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью определенных РВВ.
Статическое ОЗУ
Прежде всего, следует сказать, что в микроконтроллерах AVR используется линейная организация памяти. Объем статического ОЗУ составляет 512 байт
В адресном пространстве ОЗУ также расположены все регистры микроконтроллеров, под них отведены младшие 96 адресов. Остальные адреса отведены под 512ячеек статического ОЗУ
Каждый регистр имеет свой собственный адрес в пространстве памяти данных. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти), несмотря на то что физически эти регистры не являются ячейками ОЗУ. Такое решение является еще одной отличительной особенностью архитектуры AVR, повышаю щей эффективность работы микроконтроллера и его производительность.
. Регистры ввода/вывода
Все регистры ввода/вывода условно можно разделить на две группы — служебные регистры микроконтроллера и регистры, относя щиеся к конкретным периферийным устройствам (в т. ч. регистры портов ввода/вывода).
Во всех микроконтроллерах семейства Mega (как и в микроконтрол лерах остальных семейств) регистры ввода/вывода располагаются в так называемом пространстве ввода/вывода размером 64 байта
К РВВ, расположенным в основном пространстве ввода/вывода, можно напрямую обратиться с помощью команд IN и OUT, выполняющих пересылку данных между одним из 32-х РОН и пространством ввода/вывода. В системе команд имеется также четыре команды поразрядного доступа, использующие в качестве операндов регистры ввода/вывода: команды установки/сброса отдельного бита (SBI и CBI) и команды проверки состояния отдельного бита (SBIS и SBIC). К сожалению, эти команды могут обращаться только к 1-й половине основных регистров ввода/вывода (адреса $00...$1F).
Помимо непосредственной адресации (с помощью команд IN и OUT), к РВВ можно обращаться и как к ячейкам ОЗУ с помощью соответствующих команд ST/SD/SDD и LD/LDS/LDD
В первом случае используются адреса РВВ, принадлежащие основному пространству ввода/вывода ($00...$3F). Во втором случае адрес РВВ необходимо увеличить на $20.
Среди всех РВВ есть один регистр, используемый наиболее часто в процессе выполнения программ. Этим регистром является регистр состояния SREG. Он располагается по адресу $3F ($5F) и содержит набор флагов, показывающих текущее состояние микроконтроллера. Большинство флагов автоматически устанавливаются в «1» или сбрасываются в «О» при наступлении определенных событий (в соответствии с результатом выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи; после сброса микроконтроллера все разряды регистра сбрасываются в «О».
Дата: 2019-07-24, просмотров: 240.