|
Подсистема памяти микроконтроллераВ данном разделе описываются различные виды памяти 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 Конфигурации памяти
ATmega128 – сложный микроконтроллер с большим числом периферийных устройств, которые управляются через 64 ячейки памяти, зарезервированных в кодах операций инструкций IN и OUT. Для расширенной области ввода-вывода в статическом ОЗУ по адресам $60 - $FF необходимо использовать только инструкции ST/STS/STD и LD/LDS/LDD. Область расширенного ввода-вывода не существует при переводе ATmega128 в режим совместимости с ATmega103.
Таблица 2. Организация памяти на статическом ОЗУ МК
В нормальном режиме первые 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. ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|