Четверг, 25.04.2024, 11:12
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Реклама Google
Форма входа
Категории раздела
Это нужно знать! [17]
Изучаем AVR [30]
Программаторы [12]
Необходимое ПО [8]
Готовые устройства [73]
Справочная [38]
Инструмент [0]
Технология [8]
Литература [0]
Arduino скетчи [18]
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Микроконтроллеры - это просто!
Главная » Статьи » Изучаем AVR

Оперативная память, краткий обзор
Оперативная память микроконтроллеров AVR реализована в виде статической памяти RAM (SRAM). Статической она называется потому, что регенерация находящихся в памяти данных не происходит. Данные, находящиеся в SRAM не сохраняются после отключения напряжения питания микроконтроллера, именно поэтому она и называется оперативной памятью. Объем ОЗУ микроконтроллеров AVR составляет от 128 байт (в моделях семейства tiny) до 4-8 кбайт в поздних представителях семейства mega. Ячейки ОЗУ адресуются побайтно, следовательно, для адресации, например 8 кбайт памяти, достаточно 2-байтного адреса.

ОЗУ микроконтроллеров AVR состоит из набора 8-разрядных регистров, пронумерованных по порядку, и делится условно на несколько областей. Порядковый номер регистра в области SRAM есть не что иное, как его адрес. Организация оперативной памяти представлена на рисунке 1.


Рисунок 1 — Организация оперативной памяти микроконтроллеров AVR


Регистры общего назначения

Первые 32 адреса SRAM занимают регистры общего назначения, те самые, что входят в состав CPU и непосредственно связаны с АЛУ. Данные регистры являются рабочей областью. Сначала сюда заносятся различные данные (это могут быть данные из какого-либо периферийного устройства или какая-то константа). Затем посредством АЛУ выполняются требуемые операции. Результат операции может быть отправлен из регистра общего назначения в периферийное устройство. Здесь также могут быть выделены регистры под промежуточные значения и буферные регистры. Шесть последних регистров общего назначения образуют три регистровых пары — 16-разрядные регистры X, Y и Z. Структура этих регистров представлена на следующем рисунке.


Рисунок 2 — Структура регистровых пар X, Y, Z

Как видно из рисунка, 16-разрядный регистр Х образован парой регистров общего назначения R26-R27, причем его младшим байтом XL (от low) является регистр R26, ну а старшим XH — регистр R27. Аналогичные заключения справедливы и для регистров Y и Z. При использовании специальных команд данные регистры можно использовать в качестве указателей адресов, например, при обращении к ячейкам памяти SRAM. С помощью регистра Z удобно извлекать различные константы, хранящиеся в памяти программ.

Регистры ввода/вывода

Непосредственно за регистрами общего назначения располагается область 64 регистров ввода/вывода. В данной области памяти располагаются регистры, посредством которых обеспечивается доступ ко всем периферийным устройствам. С помощью этих регистров осуществляется управление, настройка и запуск необходимых модулей, а также получение информации об их состоянии. Таблица регистров ввода/вывода может быть получена из технической документации на конкретный микроконтроллер. Для старших моделей Mega со сложной структурой (например, ATmega128) 64-х регистров ввода/вывода может оказаться недостаточно, поэтому для этих целей выделяется еще 160 дополнительных регистров (в адресном пространстве от $0060 до $00FF).

Внутреннее ОЗУ

Сразу за областью регистров ввода/вывода располагается непосредственно внутреннее ОЗУ данных микроконтроллера. Эта область памяти используется для временного хранения некоторых переменных и констант, использующихся во время работы. Следует уточнить, что регистры ввода/вывода не отнимают адресное пространство у области внутреннего ОЗУ. Адреса внутренней оперативной памяти располагаются сразу поле адресов регистров ввода/вывода. А вот объем подключаемого внешнего ОЗУ всегда ограничен адресом $FFFF, и если в конкретной модели используется большое число регистров ввода/вывода, то объем возможной подключаемой внешней памяти уменьшается. Конечный адрес области внутреннего ОЗУ зависит от конкретной модели микроконтроллера и обычно обозначается константой RAMEND для удобства при программировании. В конце оперативной памяти обычно располагают программный стек, при отсутствии аппаратного.

Внешнее ОЗУ

Возможность подключения внешней оперативной памяти имеется только у некоторых моделей (ATmega8515, ATmega162, ATmega128, ATmega2560 и др.). Внешняя подключаемая память может быть любой статической разновидностью (FLASH, RAM, EEPROM) с параллельным интерфейсом. При подключении внешнего ОЗУ необходимо учитывать, что максимальный адрес ячейки ОЗУ, которую может использовать микроконтроллер, составляет $FFFF.

Таким образом, ОЗУ микроконтроллеров AVR условно делится на несколько областей:
- регистры общего назначения;
- регистры ввода/вывода,
- внутреннее ОЗУ и внешнее ОЗУ.

Регистры общего назначения используются для совершения различных операций с рабочими переменными, поэтому эти регистры можно называть рабочими. Регистры ввода/вывода позволяют нам работать с периферией. Ну а внутреннее и внешнее ОЗУ необходимы для временного хранения данных в процессе работы микроконтроллера.
Категория: Изучаем AVR | Добавил: Alex (29.12.2013)
Просмотров: 5735 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024