Рефераты. 8-разрядные КМОП RISC микроконтроллеры с внутрисистемно программируемым Flash ПЗУ

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

Для хранения переменных программ помимо регистров общего назначения также может использоваться статическое ОЗУ объемом 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» или сбрасываются в «О» при наступлении определенных событий (в соответствии с результатом выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи; после сброса микроконтроллера все разряды регистра сбрасываются в «О».

Способы адресации памяти данных

Микроконтроллеры поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ,ОЗУ).

Вообще говоря, в действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обращение (при прямой адресации) или какие дополнительные действия выполняются над индексным регистром (при косвенной адресации).

Прямая адресация

При прямой адресации адреса операндов содержатся непосредственно в слове команды. В соответствии со структурой памяти данных существуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, прямая адресация ОЗУ.

Косвенная адресация

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

Адресация ОЗУ

Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с постинкрементом: LD Rd, X+/Y+/Z+ (пересылка байта из ОЗУ в РОН) и ST X+/Y+/Z+, Rd (пересылка байта из РОН в ОЗУ). Адрес регистра общего назначения содержится в разрядах 8... 4 слова команды.

Энергонезависимая память данных (EEPROM)

Все микроконтроллеры семейства Mega имеют в своем составе энергонезависимую память (EEPROM-память). Объем этой памяти 512 байт. EEPROM-память расположена в своем адресном пространстве и так же, как и ОЗУ, организована линейно. Для работы с EEPROM-памятью используются три регистра ввода/вывода: регистр адреса, регистр данных и регистр управления.

Регистр адреса

Регистр адреса EEPROM-памяти EEAR (EEPROM Address Register) физически размещается в двух РВВ EEARH:EEARL, расположенных по адресам $1F (S3F) и $1Е ($ЗЕ) соответственно. В этот регистр загружается адрес ячейки, к которой будет производиться обращение. Регистр адреса доступен как для записи, так и для чтения. При этом в регистре EEARH задействуются только младшие разряды (количество задействованных разрядов зависит от объема EEPROM-памяти). Незадействованные разряды регистра EEARH доступны только для чтения и содержат «О».

Регистр данных

Регистр данных EEPROM-памяти EEDR (EEPROM Data Register) расположен по адресу $1D ($3D). При записи в этот регистр загружаются данные которые должны быть загружены в EEPROM. При чтении помещаются данные считанные из EEPROM.

Регистр управления

Регистр управления EEPROM-памяти EECR (EEPROM control Register) расположен по адресу $1С ($3C). Этот регистр используется для управления доступом к EEPROM-памяти

Прерывания

Общие сведения

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

Поскольку источниками прерываний, в частности, являются различные периферийные устройства микроконтроллеров, количество прерываний зависит от конкретной модели.

Таблица векторов прерываний

Как и все микроконтроллеры AVR, микроконтроллеры семейства Mega имеют многоуровневую систему приоритетных прерываний. Младшие адреса памяти программ начиная с адреса $0001 отведены под таблицу векторов прерывания. Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания. Размер вектора прерывания зависит от объема памяти программ микроконтроллера и составляет 1 байт. Соответственно для перехода к подпрограммам обработки прерываний используются команды RJMP.

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

Управление размещением таблицы прерываний осуществляется двумя младшими разрядами регистров GICR: IVSEL (1-й разряд) и IVSE (0-й разряд). Состояние флага IVSEL определяет положение таблицы в памяти программ. Если флаг сброшен в «О», таблица векторов прерываний располагается в начале памяти программ, если флаг установлен в «1» -- в начале области загрузчика. Конкретное значение начального адреса области загрузчика зависит от установок конфигурационных ячеек BOOTSZ1 и BOOTSZO. Разряд IVСЕ предназначен для разрешения изменения флага IVSEL.

Для изменения положения таблицы векторов прерываний необходимо установить разряд IVСЕ в «1» и затем в течение следующих четырех машин-ных циклов занести требуемое значение в разряд IVSEL. При этом разряд IVCE сбрасывается в «О». В противном случае разряд IVСЕ будет сброшен аппаратно по истечении четырех машинных циклов, запрещая дальнейшее изменение флага IVSEL.

На время выполнения описанной последовательности прерывания автоматически запрещаются и разрешаются только после сброса флага IVCE. Состояние флага I регистра SREG при этом не меняется. Если прерывания в работе микроконтроллера не предусматриваются, то на месте таблицы векторов прерываний может быть размещена часть основной программы

Счетчик команд и выполнение программы

Счетчик команд

Счетчик команд представляет собой регистр, в котором содержится адрес следующей исполняемой команды. Напрямую из программы он недоступен. Размер счетчика команд зависит от объема имеющейся памяти программ и составляет 12 разрядов.

При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Этот порядок нарушается при вы-полнении команд перехода, вызова и возврата из подпрограмм, а также при возникновении прерываний.

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

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.