Раздел: Документация
0 ... 29 30 31 32 33 34 35 ... 195 1 о Память программ Регистр Z $0000 Регистр RAMPZ о 15 1 о а) Память программ Регистр Z
$0000 главе 15, в разделе, посвященном самопрограммированию микроконтроллеров семейства. Если в программе прерывания не используются либо таблица векторов прерываний располагается в области загрузчика, то основная программа может начинаться непосредственно с адреса $0001. Как известно, память программ может использоваться не только для хранения кода программы, но также и для хранения различных констант. Для пересылки байта из памяти программ в память данных существуют две специальных команды — LPM и ELPM (последняя есть только i в моделях, имеющих память программ 128 Кбайт и более). При использовании команды LPM адрес, по которому производится чтение, определяется содержимым индексного регистра Z (см. далее). При этом старшие 15 битов содержимого регистра будут определять адрес слова (0...32К), младший бит будет определять, какой из байтов будет прочитан: 0 — младший байт, 1 — старший байт (см. Рис. 2.13, а). Команда ELPM, в отличие от команды LPM, способна адресовать до 16 Мбайт памяти. При использовании этой команды адрес слова будет определяться содержимым регистра ввода/вывода RAMPZ совместно со старшими 15 битами содержимого регистра Z. Младший бит регистра Z будет по-прежнему определять, какой из байтов слова будет прочитан (см. Рис. 2.13, б). Понятно, что количество задействованных битов регистра RAMPZ зависит от объема памяти программ — в моделях с объемом памяти программ 128 Кбайт используется только младший бит RAMPZ0, а в моделях с 256 Кбайт памяти используются уже два младших бита — RAMPZ1 и RAMPZ0. Для обеспечения совместимости с будущими моделями микроконтроллеров при записи значений в регистр RAMPZ незадействованные биты должны быть сброшены в 0. Регистр RAMPZ расположен по адресу $ЗВ ($5В) в основном пространстве регистров ввода/вывода микроконтроллеров ATmegal28x и ATmegal28xx/256xx, а его формат показан на Рис. 2.14. F END б) Рис. 2.13. Косвенная адресация памяти программ при использовании команды LPM (а) и команды ELPM (б)
ATmega128x ATmega 1280х ATmega 1281х ATmega2560x ATmega2561x Рис. 2.14. Формат регистра RAMPZ В заключение следует отметить, что FLASH-ПЗУ, используемое в микроконтроллерах AVR, рассчитано, как минимум, на 10 000 циклов стирания/записи (типовое значение — 100 000 циклов). 2.2.2. Память данных Память данных микроконтроллеров семейства Mega разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энергонезависимое ЭСППЗУ (EEPROM). Регистровая память включает 32 регистра общего назначения (РОН), объединенных в файл, и служебные регистры ввода/вывода (РВВ). В сложных моделях с развитой периферией имеется также область дополнительных (extended) регистров ввода/вывода (ДРВВ). Под РВВ в памяти микроконтроллера отводится 64 байта, а под ДРВВ — 160 или 416 байт (в зависимости от модели). В обеих областях регистров ввода/вывода располагаются различные служебные регистры (регистр управления микроконтроллера, регистр состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. Общее количество РВВ и ДРВВ зависит от конкретной модели микроконтроллера. Для хранения переменных помимо регистров общего назначения также используется статическое ОЗУ объемом от 512 байт до 8 Кбайт. Ряд микроконтроллеров семейства, кроме того, имеют возможность подключения внешнего статического ОЗУ объемом до 64 Кбайт. Для долговременного хранения различной информации, которая может изменяться в процессе функционирования готовой системы (калибровочные константы, серийные номера, ключи и т. п.), в микроконтроллерах семейства может использоваться встроенная EEPROM-память. Ее объем составляет для различных моделей от 256 байт до 4 Кбайт. Эта память расположена в отдельном адресном пространстве, а доступ к ней осуществляется с помощью определенных РВВ. Статическое ОЗУ Прежде всего, следует сказать, что в микроконтроллерах AVR семейства Mega используется линейная организация памяти. Объем статического ОЗУ для различных моделей семейства составляет от 512 байт до 8 Кбайт (см. Табл. 1.1). В адресном пространстве ОЗУ также расположены все регистры микроконтроллеров, под них отведены младшие 96 (256) адресов (см. Рис. 2.15). Остальные адреса отведены под 512/1К/2К/4К...64К ячеек статического ОЗУ. Регистровый файл Адресное пространство памяти данных
Доп. регистры ввода/вывода Внутреннее ОЗУ Внутреннее ОЗУ
Внутреннее ОЗУ Внутреннее ОЗУ
Внутреннее ОЗУ $0200 $0101 s21ff $0100 $0101 $04FF/$10FF 50100 $0101 S02FF/S04FF $08FF/$10FF $0060 $0061 $025F/$Q45F Внешнее ОЗУ Внешнее ОЗУ Внешнее ОЗУ $2200 $2201 SFFFF $0500/$1100 $0501/$1101 $FFFF $0260/$0460 $0261/50461 $FFFF ATmega640xА1 пледа 162х АТтеда1280х/1281х АТтеда64х АТтеда128хАТтеда128х АТтеда48х/88х/168х АТтеда164х/324х/644х АТтеда165х/325х/645х АТтеда3250х/6450х АТтеда162х (в режиме совместимости) АТтеда128х $0060 $0061 $025F/S045F S085F АТтеда8х/16х/32х АТтеда8535х 0 ... 29 30 31 32 33 34 35 ... 195
|