Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Память данных (ОЗУ, SRAM)
В отличие от памяти программ, адресное пространство памяти данных адресуется побайтно (а не пословно). Адресация полностью линейная, без какого-то деления на страницы, сегменты или банки, как это принято в некоторых других системах. Младшие МК семейства Tiny (включая Tinylx и Tiny28) памяти данных, как таковой, не имеют, ограничиваясь лишь регистровым файлом (РОН) и регистрами ввода-вывода (РВВ). В других моделях объем встроенной SRAM колеблется от 128 байт в представителях семейства Tiny (например, у ATtiny2313) до 4-8 кбайт у старших моделей Mega.
Адресное пространство статической памяти данных (SRAM) условно делится на несколько областей, показанных на рис. 2.2. Темной заливкой выделена часть, относящаяся к собственно встроенной SRAM, до нее по порядку адресов расположено адресное пространство регистров (первые 32 байта занимает РОН, еще 64— РВВ). Для старших моделей Mega со сложной структурой (например, ATmegal28) 64-х регистров ввода-вывода может оказаться недостаточно, поэтому в них для дополнительных РВВ выделяется отдельное адресное пространство (от $60 до максимально возможного в байтовой адресации значения $FF, итого таких регистров может быть всего 160).

Заметки на полях
В архитектуре МК AVR понятие "ввода-вывода" употребляется в двух смыслах: во-первых, имеются "порты ввода-вывода" (I/O ports), которые мы рассмотрим в главе 3. Во-вторых, "регистрами ввода-вывода" (РВВ) в структуре AVR называются регистры, которые обеспечивают доступ к дополнительным компонентам, внешним по отношению к GPU, за исключением ОЗУ (в том числе и к портам ввода-вывода). Такое подразделение приближает структуру МК AVR к привычной конфигурации персонального компьютера, где доступ к любым внешним по отношению к центральному процессору компонентам, кроме памяти, осуществляется через порты ввода-вывода.

Для некоторых моделей Mega (ATmega8515, ATmegal62, ATmegal28, AT-mega2560 и др.) предусмотрена возможность подключения внешней памяти объемом до 64 кбайт, которая может быть любой статической разновидностью (SRAM, Flash или EEPROM) с параллельным интерфейсом.

Отметим, что адреса РОН и РВВ не отнимают пространство у ОЗУ данных (за исключением подключаемой внешней памяти у старших моделей Mega, максимальный адрес которой ограничен значением $FFFF): так, если в конкретной модели МК имеется 512 байт SRAM, а пространство регистров занимает первые 96 байт (до адреса $60), то адреса SRAM займут адресное пространство от $0060 до $025F (т. е. от 96-й до 607-й ячейки включительно). Конец встроенной памяти данных обозначается константой RAMEND.
Операции чтения/записи в память одинаково работают с любыми адресами из доступного пространства, и при работе с SRAM нужно быть внимательным: вместо записи в память вы легко можете "попасть" в какой-нибудь регистр. Например, команда загрузки значения регистра пб в регистр r0 (mov r0,ri6) равносильна записи в SRAM по нулевому адресу (sts $oooo,ri6). Адрес в памяти для РОН совпадает с его номером. В то же время для непосредственной записи в РВВ по его адресу в памяти к номеру регистра следует прибавить $20: так, регистр флагов SREG, который для большинства моделей располагается в конце таблицы РВВ по адресу $3F, в памяти имеет адрес $5F. Устанавливать РОН и РВВ прямой адресацией памяти неудобно: такая запись всегда отнимает два такта вместо одного, характерного для большинства других команд, хотя иногда это позволяет обойти ограничения на манипуляции с некоторыми РВВ. Но если имеется готовая программа, работающая с SRAM, то при замене моделей процессоров на более старшие нужно быть внимательным из-за того, что в них младшие адреса SRAM могут перекрываться дополнительными РВВ.

Энергонезависимая память данных (EEPROM)
Все модели МК AVR (кроме снятого с производства ATtinyl 1) имеют встроенную EEPROM для хранения констант и данных при отключении питания. В разных моделях объем ее варьируется от 64 байт (ATtinyl х) до 4 кбайт (старшие модели Mega). Конец EEPROM обозначается константой EEPROMEND (это обозначение введено только для более поздних моделей AVR, потому при использовании этой константы иногда се придется определять самому). Число циклов перепрограммирования EEPROM может достигать 100 тыс.



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru