Оперативная память микроконтроллеров AVR
Память данных микроконтроллеров AVR представляет собой отдельное адресное пространство с адресами от $0000 до $FFFF. То есть максимальный объем адресуемой памяти составляет 64 Кбайта. Однако большинство микроконтроллеров имеет гораздо меньшую память. В таких микроконтроллерах часть адресов не используется. Структура же памяти всегда одинакова. В графическом виде эта структура изображена на рис.
Оперативная память микроконтроллеров AVR делится на три области.
$0000 –$001F – область памяти, совмещенная с регистрами общего назначения (РОН).
$0020 –$005F – область памяти, совмещенная с регистрами ввода- вывода (РВВ).
$0060 –$FFFF – не совмещенная ни с чем область памяти.
Эта последняя область предназначена просто для хранения данных. Эту область в свою очередь можно разделить на
- область внутреннего ОЗУ ($0060 –RAMEND)
- область внешнего ОЗУ (RAMEND+1 –$FFFF).
Под RAMEND понимается адрес последней ячейки внутреннего ОЗУ конкретного микроконтроллера. Рассмотрим каждую область памяти подробнее.
Область памяти, совмещенная с набором регистров общего назначения (РОН).
Эта область существует во всех микроконтроллерах AVR. Она занимает ячейки с адресами с $0000 по $001Е Все ячейки этой области памяти одновременно являются регистрами общего назначения (смотри выше). То есть записывая байт данных в ячейку памяти с адресом $0000, вы на самом деле записываете ее в регистр R0. И наоборот. Соответствие ячеек памяти и регистров общего назначение показано на рис. 2.3. Двойной доступ к РОН существенно увеличивает гибкость программ.
Область памяти, совмещенная с регистрами ввода-вывода (РВВ)
Область памяти с адреса $0020 по адрес $005F совмещена с регистрами ввода-вывода. В адресном пространстве ОЗУ это соответствует адресам $0020 –$005Е Каждому регистру ввода-вывода соответствует своя ячейка в ОЗУ Как уже говорилось, реальное количество регистров ввода-вывода почти всегда гораздо меньше их максимально возможного количества. Однако данная область памяти всегда используется только для этой цели.
Если регистр существует, то существует и соответствующая ячейка памяти. Остальные же ячейки из этой области ОЗУ просто отсутствуют. На рис. 2.3 показано соответствие регистров общего назначения и ячеек памяти. Из рисунка видно, что адрес ячейки памяти всегда больше номера соответствующего РВВ на постоянную величину, равную 32 ($20).
Область внутреннего ОЗУ
Пространство ОЗУ с адреса $0060 и выше не выполняет никаких дополнительных функций и предназначено исключительно для оперативного хранения данных. Объем (а, значит, и конечный адрес) этой области ОЗУ для разных микросхем разный. Именно этот объем обозначен как «SRAM».
Область внешнего ОЗУ
Большинство микроконтроллеров AVR имеют лишь встроенное ОЗУ. Однако в состав серии входят микросхемы, допускающие подключение внешних микросхем ОЗУ. В результате объем ОЗУ микроконтроллера может быть расширен до 64 Кбайт. При этом общий объем оперативной памяти может достигать значения $FFFF.
Энергонезависимая память данных (EEPROM).EEPROM – это специальная внутренняя память, выполненная по Flash-технологии и предназначенная для долговременного хранения данных.
В современных микропроцессорных устройствах часто возникает необходимость в хранении таких данных. Примером может служить микропроцессорная система управления автомагнитолой. Такая система управления где-то обязательно должна хранить множество констант. У любой магнитолы есть несколько фиксированных настроек.
Кроме того, принято при выключении запоминать все режимы работы магнитолы и восстанавливать их после включения. Все эти настройки в виде чисел обычно записываются в энергонезависимую память. Можно, конечно, использовать внешнюю микросхему памяти. Но встроенная память гораздо удобнее.
Для подобных задач обычно не требуется больших объемов EEPROM- памяти. Поэтому микроконтроллеры AVR имеют объем EEPROM от 64 байт до 8 Кбайт.
EEPROM – необычная память. Поэтому к этой памяти ЦПУ микроконтроллера обращается не так, как к остальным видам памяти. Для центрального процессора не существует адресного пространства EEPROM. К этому виду памяти микроконтроллер обращается при помощи регистров ввода-вывода. Для микроконтроллеров с объемом EEPROM менее 256 байт таких регистров всего три:
EEAR – регистр адреса EEPROM;
EEDR – регистр данных EEPROM;
EECR – регистр управления EEPROM.
Если объем EEPROM превышает 256 байт, то вместо одного регистра адреса (EEAR) такой микроконтроллер имеет два регистра: EEARH и EEARL. Регистры доступа к EEPROM имеют следующие номера:
EEAR –$1Е;
EEARH –$1F:
EEDR – $1D:
EEARL –$ IE:
EECR –$1C.
Регистры адреса EEAR (или EEARH, EEARL) работают только на запись. При помощи этих регистров микроконтроллер выбирает ячейку, куда нужно записать или откуда нужно прочитать данные.
Регистр данных (EEDR) работает как на запись, так и на чтение. Через этот регистр в EEPROM поступает записываемый байт. Через него же процессор получает байт при чтении из EEPROM.
Регистр управления (EECR) определяет режимы работы. Именно через него подаются команды чтения и записи EEPROM. В Шаге 5 на конкретных примерах мы подробно рассмотрим алгоритм чтения и записи в EEPROM.
Дата добавления: 2021-12-14; просмотров: 350;