Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Подсистема памяти микроконтроллера





В данном разделе описываются различные виды памяти ATmega128. В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память данных EEPROM и память программ FLASH. Кроме того, ATmega128 содержит память на SROM для энергозависимого хранения оперативных данных. Вся пространства памяти AVR архитектуры линейны и регулярны.

В микроконтроллерах AVR использованы принципы Гарвардской архитектуры - отдельные память и шины для программ и данных. При работе с памятью программ используется одноуровневый конвейер - в то время как одна команда выполняется, следующая команда выбирается из памяти программ. Такой прием позволяет выполнять команду в каждом тактовом цикле. Памятью программ является внутрисистемно программируемая Flash память. За малым исключением AVR команды имеют формат одного 16-разрядного слова, в связи, с чем каждый адрес памяти программ содержит одну 16-разрядную команду.

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

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

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

 

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

 

Конфигурация Встроенное статическое ОЗУ памяти данных Внешнее статическое ОЗУ памяти данных
Нормальный режим   до 64 кбайт
Режим совместимости с ATmega103   до 64 кбайт

 

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

 

Таблица 2. Организация памяти на статическом ОЗУ МК

 

Конфигурация памяти А   Конфигурация памяти B  
Адрес Память данных Адрес   Память данных  
$0000-$001F   Регистры R0-R31 $0000-$001F   Регистры R0-R31
$0020-$005F   64 регистра ввода/вывода $0020-$005F   64 регистра ввода/вывода
$0060-$00FF   160 ячеек расширенной памяти в/в $0060   $0FFF   Внутреннее СОЗУ (4096х8)  
$0100   $10FF Внутреннее СОЗУ (4096х8) $1000   $FFFF   Внешнее СОЗУ (0-64Кх8)
$1100   $FFFF     Внешнее СОЗУ (0-64Кх8)    

 

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

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

Совместно с ATmega128 по выбору может использоваться статическое ОЗУ. Это статическое ОЗУ будет занимать оставшуюся часть от адресного пространства размером 64 кбайт. Данная часть начинается с адреса следующего за внутренним статическим ОЗУ. Файл регистров, память ввода-вывода, память расширенного ввода-вывода и внутреннее статическое ОЗУ занимают младшие 4352 байта в нормальном режиме и младшие 4096 байта в режиме совместимости с ATmega103 (отсутствует память расширенного ввода-вывода). Таким образом, при использовании внешней памяти размером 64 кбайт (65536 байт) из них будет доступно 61184 байта в нормальном режиме и 61440 байта в режиме совместимости с ATmega103.

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

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

Обращение к EEPROM при чтении/записи

Обращение к EEPROM ведется посредством регистров расположенных в пространстве I/O. Время обращения при записи составляет от 2,5 до 4 мс, в зависимости от напряжения VCC. Однако существует специальная функция, которая позволяет пользовательскому ПО обнаруживать момент, когда можно начинать запись следующего байта - для индикации момента готовности EEPROM к записи новых данных может быть установлено специальное прерывание по завершению записи EEPROM (EEPROM Write Complete). Случайная запись в EEPROM предотвращается выполнением специальной процедуры, показанной подробнее в описании регистра управления EEPROM.

После процедуры записи в EEPROM CPU, прежде чем начать выполнение следующей команды, останавливается на два тактовых цикла. При чтении EEPROM CPU останавливается на 4 тактовых цикла.

Регистр адреса EEPROM- EEARH, EEARL

Посредством регистров адреса EEARH и EEARL определяется адрес в пространстве адресов EEPROM. Байты данных EEPROM адресуются линейно в пределах допустимого объема памяти для данного МК.

Регистр данных EEPROM – EEDR.

Bits 7..0 - EEDR7..0: - Данные EEPROM. В процессе выполнения операции записи в регистре EEDR содержатся данные, записываемые в EEPROM по адресу, задаваемому регистром EEAR. При чтении регистр EEDR содержит данные, считываемые из EEPROM по адресу, определяемому EEAR.







ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.