Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proektirovanie_sistem_na_MK1.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆
    1. Организация памяти

В микроконтроллерe Atmega 128 реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним. Способы адресации и доступа к этим областям памяти также различны. Такая структура позволяет центральному процессору работать одновременно как с памятью программ, так и с памятью данных, что существенно увеличивает производительность. Каждая из областей памяти данных (ОЗУ и EEPROM) также расположена в своем адресном пространстве.

Обобщенная карта памяти микроконтроллерa Atmega128 приведена на Рис. 1.2.

Модель

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

(Flash)

Память данных

(ОЗУ)

Память данных

(EEPROM)

Верхняя

Граница

(F-END)

Объем,

слова

Верхняя

Граница

(S-END)

Объем,

Кбайт

Верхняя

Граница

(E-END)

Объем,

Кбайт

ATmega128

$FFFFF

64KRK

$10FF

4

$FFF

4



Рис.1.2

FFFFF

4

FFF

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

Память программ предназначена для хранения команд, управляющих функционированием микроконтроллера. Память программ также часто используется для хранения таблиц констант, не меняющихся во время работы программы. Как уже было сказано, память программ представляет собой электрически стираемое ППЗУ (FLASH ПЗУ). В связи с тем что длина всех команд кратна одному слову (16 бит), память программ имеет 16 разрядную организацию. Соответственно, объем памяти микроконтроллера составляет 64К (64×1024) 16 разрядных слов. Логически память программ разделена на две неравные части — область прикладной программы и область загрузчика. В последней может располагаться специальная программа (загрузчик), позволяющая микроконтроллеру самостоятельно управлять загрузкой и выгрузкой прикладных программ. Подробно использование этой области и реализация программы_загрузчика будут рассмотрены ниже. Если же возможность самопрограммирования микроконтроллера не используется, прикладная программа может располагаться и в области загрузчика Для адресации памяти программ используется счетчик команд (PC — Program Counter). Размер счетчика команд составляет 16 разрядов, в зависимости от объема адресуемой памяти. По адресу $0000 памяти программ находится вектор сброса. После инициализации (сброса) микроконтроллера выполнение программы начинается с этого адреса (по этому адресу должна размещаться команда перехода к инициализационной части программы).

Начиная с адреса $0002 памяти программ, располагается таблица векторов прерываний. Размер этой области определяется количеством векторов прерывания.

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

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

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

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

Команда ELPM способна адресовать все 128 Кбайт памяти программ микроконтроллеров ATmega128x. При использовании этой команды адрес слова будет определяться разрядом RAMPZ0 регистра ввода/вывода RAMPZ совместно со старшими 15 разрядами содержимого регистра Z. Младший разряд регистра Z будет определять, какой из байтов слова будет прочитан «0» — младший байт, «1» — старший байт (Рис.1.3).

Рис.1.3.

Регистр RAMPZ расположен по адресу $3B ($5B) в основном пространстве РВВ микроконтроллеров ATmega128x, а его формат показан на Рис. 1.4

Рис.1.4.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]