8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 29 30 31 32 33 34 35 ... 195

1 о

Память программ

Регистр Z

$0000

Регистр RAMPZ

о 15

1 о

а)

Память программ

Регистр Z

t

$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 (б)


7

6

5

4

3

2

1

0

RAMPZ0

Чтение (к)/3апись (W)

R

R

R

R

R

R

R

R/W

Начальное значение

0

0

0

0

0

0

0

0

7

6

5

4

3

2

1

0

RAMPZ1

RAMPZ0

Чтение (к)/3апись (W)

R

R

R

R

R

R

R/W

R/W

Начальное значение

0

0

0

0

0

0

0

0

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К ячеек статического ОЗУ.

Регистровый файл

Адресное пространство памяти данных

R0

$0000

$0000

$0000

$0000

$0000

R1

$0001

$0001

$0001

$0001

$0001

R2

$0002

$0002

$0002

$0002

$0002

R31

$001F

$001F

$001F

$001F

$001F

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

$00

$0020

$0020

$0020

$0020

$0020

$01

$0021

$0021

$0021

$0021

$0021

$3F

$005F

$005F

$005F

$005F

$005F

Доп. регистры ввода/вывода

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

$60

$0060

$0060

$0060

$61

$0061

$0061

$0061

$FF

$00FF

$00FF

$00FF

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

$100

$0100

$101

$0101

$1FF

$01FF

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

$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