Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦМПУ / Новая папка (1) / ЦИМПУ(atmega 128).doc
Скачиваний:
102
Добавлен:
16.04.2015
Размер:
4.2 Mб
Скачать

Организация памяти

Запоминающее устройство FlashROM

Постоянное запоминающее устройство FlashROM предназначено для хранения кодов команд программы и констант. Ячейка памяти содержит 16 разрядов. В ней могут храниться код команды формата "слово", половина кода команды формата "два слова" или коды двух констант. При чтении кодов команд адрес в FlashROM поступает из счетчика команд. При чтении констант адрес поступает из пары Z регистров общего назначения.

Запись кодов в FlashROM выполняется в процессе программирования побайтно. В микроконтроллерах с большим числом выводов (20 и бо­лее) байт может вводиться параллельно или последовательно. В мик­роконтроллерах с малым числом выводов (8) байт вводится после­довательно.

Программирование может выполняться с использованием дополни­тельного источника напряжения +12 В или без использования дополни­тельного источника. Последовательное программирование без исполь­зования дополнительного источника напряжения производится с исполь­зованием трех выводов микроконтроллера и может выполняться после установки микроконтроллера в аппаратуре, где ему предстоит работать.

Запоминающее устройство SRAM

Оперативное запоминающее устройство статического типа SRAM предназначено для хранения данных, получаемых в процессе работы микроконтроллера. При выключении напряжения питания микрокон­троллера данные в SRAM теряются.

Ячейка памяти содержит 8 разрядов. Адрес байта при обращении к SRAM может быть указан в коде команды с обращением к SRAM (прямая адресация) или предварительно записан в пару регистров X, Y или Z (косвенная адресация). Обращение к SRAM может выполняться с использованием адреса, хранящегося в регистре-указателе стека.

Байт для записи в SRAM поступает из регистра общего назначения. Байт, считанный из SRAM, поступает в регистр общего назначения.

В адресное пространство SRAM кроме адресов, по которым выпол­няется обращение к ячейкам памяти SRAM, включены 32 адреса для обращения к регистрам общего назначения (адреса от $00 до $1F) и 64 адреса для обращения к регистрам ввода-вывода (адреса от $20 до $5F).

Первой ячейке в SRAM соответствует адрес $60. Адрес для обращения к регистру общего назначения по команде обращения к SRAM совпадает с номером регистра (0—31 = $00—$1F). Адрес для обращения к регистру ввода-вывода по команде обращения к SRAM равен его номеру, уве­личенному на число 32 ($20).

В микроконтроллерах, допускающих подключение внешнего запоми­нающего устройства ERAM, адреса для обращения к ячейкам ERAM включены в адресное пространство SRAM и расположены после стар­шего адреса SRAM.

Запись в стек выполняется в порядке убывания адресов. В качестве исходного адреса для обращений к стеку, который заносится в регистр-указатель стека в начале программы, целесообразно использовать стар­ший адрес SRAM.

Запоминающее устройство EEPROM(ЭСППЗУ)

Постоянное запоминающее устройство EEPROM предназначено для хранения данных, записанных при программировании микроконтроллера и получаемых в процессе выполнения программы. При выключении на­пряжения питания данные сохраняются. Ячейка памяти содержит 8 раз­рядов. EEPROM имеет обособленное адресное пространство. При обращении к EEPROM адрес записывается в регистр адреса EEAR (Адрес $1Е). Байт, получаемый при чтении, поступает в этот же регистр. Для управления процедурами записи и чтения используется регистр управления EECR (Адрес $1С).

В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память данных и память программ. Кроме того, ATmega128 содержит память на ЭСППЗУ для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными.

Внутрисистемно программируемая флэш-память программ ATmega128 содержит 128 кбайт внутренней внутрисистемно перепрограммируемой флэш-памяти для хранения программы. Поскольку все AVR-инструкции являются 16 или 32-разрядными, то флэш-память организована как 64 кбит х16. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы.

Флэш-память характеризуется износостойкостью не менее 10000 циклов запись/стирание. Программный счетчик РС у ATmega128 является 16-

разрядным, поэтому, позволяет адресоваться к 64 кбайт памяти программ.

Рис. 2.7 Карта памяти программ

Статическое ОЗУ памяти данных

ATmega128 поддерживает две различные конфигурации статического ОЗУ памяти данных (см. табл. 2.2).

Таблица 2.2 Конфигурации памяти

Конфигурация

Встроенное статическое ОЗУ памяти данных

Внешнее статическое ОЗУ памяти данных

Нормальный режим

4096

до 64 кбайт

Рисунок 2.8 иллюстрирует организацию памяти на статическом ОЗУ у ATmega128.

ATmega128 – сложный микроконтроллер с большим числом периферийных устройств, которые управляются через 64 ячейки памяти, зарезервированных в кодах операций инструкций IN и OUT. Для расширенной области ввода-вывода в статическом ОЗУ по адресам $60 - $FF необходимо использовать только инструкции ST/STS/STD и LD/LDS/LDD.

В нормальном режиме первые 4352 ячейки памяти данных относятся к файлу регистров, памяти ввода-вывода, расширенной памяти ввода-вывода и встроенному статическому ОЗУ данных. В первых 32-х ячейках расположен файл регистров, следующие 64 ячейки занимает стандартная память ввода-вывода, а за ними следуют 160 ячеек расширенной памяти ввода-вывода. Замыкают внутреннюю память данных 4096 ячеек внутреннего статического ОЗУ данных.

В первых 32-х ячейках расположен файл регистров, затем в 64 ячейках расположена стандартная память ввода-вывода и следующие 4000 ячейки занимает внутреннее ОЗУ данных.

Совместно с ATmega128 по выбору может использоваться статическое ОЗУ. Это статическое ОЗУ будет занимать оставшуюся часть от адресного пространства размером 64 кбайт. Данная часть начинается с адреса следующего за внутренним статическим ОЗУ.

Доступ к внешнему статическому ОЗУ осуществляется автоматически с помощью тех же инструкций, что и для внутреннего ОЗУ, если указанное значение адреса находится за пределами внутренней памяти данных. При адресации внутренней памяти сигналы чтения и записи внешней памяти (выводы PG0 и PG1) неактивны в процессе всего цикла доступа. Работа внешнего статического ОЗУ разрешается путем установки бита SRE в регистре MCUCR.

Доступ к внешнему статическому ОЗУ требует еще одного машинного цикла на байт по сравнению с доступом к внутреннему статическому ОЗУ. Это означает, что на выполнение команд LD, ST, LDS, STS, LDD, STD, PUSH и POP потребуется один дополнительный цикл. Если стек будет размещен во внешнем статическом ОЗУ, то, соответственно, вызов и возврат из подпрограмм и процедур обработки прерываний будет длиться на три машинных цикла дольше за счет помещения в стек и извлечения из стека двухбайтного счетчика программы и не использования во время доступа к внешней памяти преимущества конвейерного доступа к внутренней памяти. Если интерфейс внешнего статического ОЗУ используется с состояниями ожидания (со сниженным быстродействием), то однобайтный внешний доступ потребует 2, 3 или 4 дополнительных машинных цикла для 1, 2 и 3 состояний ожиданий, соответственно. Таким образом, вызов и возврат из прерываний и подпрограмм потребует еще 5, 7 и 9 машинных циклов (в отличие от значений приведенных в описании набора инструкций) для 1, 2 и 3 состояний ожидания, соответственно.

Реализовано пять различных способов адресации для охвата всей памяти: прямая, косвенная со смещением, косвенная, косвенная с предварительным декрементом и косвенная с последующим инкрементом (см. лабораторную работу №3). Регистры R26…R31 из файла регистров используются как регистры-указатели для косвенной адресации.

32 рабочих регистров общего назначения, 64 регистра ввода-вывода и 4096 байт внутреннего статического ОЗУ данных в ATmega128 доступны

с помощью всех этих режимов адресации.

Рис. 2.8 Карта памяти данных

Временная диаграмма доступа к памяти

Рис. 2.9 Временная диаграмма доступа к встроенному статическому ОЗУ данных

Стек обычно используется для хранения временных данных, для хранения локальных переменных и для хранения адресов возврата при прерываниях и вызовах подпрограмм. Регистр указателя стека указывает на вершину стека. При отработке команды PUSH (сохранения байта в стеке) указатель стека уменьшает свое значение.

Регистр-указатель стека

Рис. 2.10 Регистр-указатель стека

Регистр-указатель стека SP(№ $3D) хранит и формирует адрес при обращении к стеку типа LIFO. В микроконтроллерах в качестве стека используется выделяемая пользователем область в SRAM. В системе команд есть команды для обращения к стеку. Запись байтов в стек выполняется в порядке уменьшения адресов в SRAM. При пуске и перезапуске микроконтроллера в регистр-указатель стека заносится код числа 0. Для нормальной работы стека в регистр-указатель необходимо занести другой начальный адрес. В микроконтроллерах с большой емкостью SRAM регистр-указатель состоит из двух регистров — SPL и SPH (№№ $3D и $ЗЕ).

Регистр управления микроконтроллером

Разряд

7

6

5

4

3

2

1

0

SRE

SRW10

SE

SM1

SM0

SM2

IVSEL

IVCE

MCUCR

Чтение/

запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. Зна

чение

0

0

0

0

0

0

0

0

Рис. 2.11 Регистр управления микроконтроллером – MCUCR

Разряд 7 - SRE: External SRAM Enable - Разрешение внешней SRAMУстановленный в 1 бит SRE разрешает обращение к внешней SRAM данных и переводит работу выводов AD0-7 (Порт A), A8-15 (Порт C), WR и RD на выполнение альтернативной функции. Затем бит SRE перенастраивает установки направлений любых выводов в соответствующих регистрах направления данных. Очистка бита SRE (установка в 0) запрещает обращение к внешней SRAM и восстанавливает нормальные установки направлений выводов и данных.

Разряд 6 - SRW: External SRAM Wait State - Режим ожидания внешней SRAMПри установленном в 1 бите SRW к циклу обращения к внешней SRAM добавляется один цикл ожидания. При сброшенном в 0 бите SRW обращение к внешней SRAM выполняется по трехцикловой схеме.

Разряд 5 – SE: Разрешение перевода в режим сна

В бит SE должна быть записана лог. 1, когда необходимо микроконтроллер перевести в режим сна командой SLEEP. Во избежание незапланированного программистом перевода микроконтроллера в режим сна рекомендуется устанавливать этот бит непосредственно перед выполнением инструкции SLEEP и сбрасывать сразу после пробуждения.

Разряды 4..2 – SM2..0: Биты 2, 1 и 0 выбора режима сна

С помощью данных бит можно выбрать один из шести режимов сна в соответствии с таблицей 2.4.

Разряд 0 – IVCE: Разрешение изменения вектора прерывания

В бит IVCE должна быть записана лог. 1, чтобы разрешить изменение бита IVSEL. IVCE сбрасывается аппаратно через четыре машинных цикла после записи лог. 1 в IVSEL. Установка бита IVCE приведет к отключению прерываний.

Разряд 1–IVSEL: Выбор вектора прерывания

Если бит IVSELсброшен (=0), то векторы прерываний размещаются в начале флэш-памяти. Если данный бит установлен (=1), то векторы прерываний перемещаются в начало загрузочного сектора флэш-памяти. Фактический адрес начала загрузочного сектора определяется значением конфигурационных битBOOTSZ. Во избежание несанкционированных изменений таблицы векторов прерываний необходимо выполнить специальную последовательность записи при изменении битаIVSEL:

Записать лог. 1 в бит разрешения изменения вектора прерывания (IVCE).

В течение четырех машинных циклов записать желаемое значение в IVSEL, при этом записывая лог.0 вIVCE.

Прерывания будут автоматически отключены при выполнении такой последовательности. Прерывания отключаются во время установки IVCEи останутся отключенными до перехода к инструкции следующей за инструкцией записи вIVSEL. ЕслиIVSELне записан, то прерывания будет находиться в отключенном состоянии 4 такта синхронизации. Состояние битаIв регистре статуса не затрагивается при автоматическом отключении прерываний.

  • Таблица 2.3 – Выбор режима сна

    • SM2

    • SM1

    • SM0

    • Наименование режима сна

    • 0

    • 0

    • 0

    • Холостой ход

    • 0

    • 0

    • 1

    • Уменьшение шумов АЦП

    • 0

    • 1

    • 0

    • Выключение

    • 0

    • 1

    • 1

    • Экономичный

    • 1

    • 0

    • 0

    • Зарезервирован

    • 1

    • 0

    • 1

    • Зарезервирован

    • 1

    • 1

    • 0

    • Дежурный (1)

    • 1

    • 1

    • 1

    • Расширенный дежурный (1)

  • Прим. 1: Дежурный режим и расширенный дежурный режим доступны только при использовании внешних кварцевых или керамических резонаторов. Управление энергопотреблением и режимы сна описаны в лабораторной работе №5.

Соседние файлы в папке Новая папка (1)