| 7. Запоминающие устройства7.1. Отличительные особенности 
Flash-память программ
Одно линейное адресное пространство
Внутрисистемное программирование
Поддержка самопрограммирования под управлением программы загрузчика
Сектор прикладной программы для хранения кода программы
Сектор таблицы приложения для хранения данных или кода прикладной программы
Загрузочный сектор для хранения прикладной программы или программы загрузчика
Отдельные биты защиты и защита всех секторов
Встроенная быстродействующая проверка CRC для выбранного сектора flash-памяти программ
Память данных
Одно линейное адресное пространство
Одноцикловый доступ со стороны ЦПУ
SRAM
EEPROM
Побайтный и постраничный доступ
Опциональное распределение памяти для прямого чтения и записи
Память ввода-вывода
Конфигурационные регистры и регистры статуса для всех УВВ и модулей
Регистр общего назначения с 16-битным доступом для хранения глобальных переменных или флагов
Арбитраж шины
Безопасная и детерминистическая обработка приоритетов ЦПУ и контроллера DMA
Отдельные шины для SRAM, EEPROM,  памяти ввода-вывода и внешней памяти
Одновременный доступ к шинам для ЦПУ и контроллера DMA
Область памяти с запрограммированным производителем сигнатурным кодом
Идентификационный код для каждого типа микроконтроллера
Серийный номер для каждого микроконтроллера
Калибровочные байты генератора
Калибровочные данные АЦП, ЦАП и датчика температуры
Сигнатурный код пользователя
Размер равен одной странице flash-памяти
Возможность программного считывания или программной записи
Остается неизменным после операции стирания всей памяти
 7.2. Обзор Архитектурой AVR предусматривается два пространства памяти: память программ и память данных. Кроме того, в МК XMEGA A3 интегрировано EEPROM для энергонезависимого хранения данных. Все три пространства памяти являются линейными и не требуют страничной адресации. Информация по размерам встроенной памяти приведена в разделе "Информация для заказа". Кроме того, у каждого микроконтроллера имеется Flash-память с запрограммированным производителем сигнатурным кодом, в т.ч. калибровочные данные, идентификационный код МК, серийный номер и др. Имеется возможность блокировки дальнейших операций записи или чтения/записи применительно к энергонезависимым запоминающим устройствам. Это предотвратит несанкционированный доступ к прикладной программе. 7.3. Внутрисистемно-программируемая Flash-память программ Микроконтроллеры XMEGA A3 содержат встроенную внутрисистемно-программируемую Flash-память для хранения программы (см. рисунок 7.1). Поскольку все инструкции AVR являются 16- или 32-битными, то и каждая ячейка Flash-памяти является 16-битной. Пространство Flash-памяти разделено на сектор прикладной программы и загрузочный сектор. Оба сектора имеют отдельные биты защиты для установки ограничений на операции записи или чтения/записи. Для записи Flash-памяти с помощью инструкции записи в память программ (SPM) ее необходимо выполнять из загрузочного сектора. Третий сектор Flash-памяти называется сектором таблицы приложения, который имеет отдельные биты защиты от записи или от чтения/записи. Сектор таблицы приложения может использоваться для энергонезависимого хранения данных или кода прикладной программы.  Рисунок 7.1. Flash-память программ (шестнадцатиричные адреса)
 Сектор таблицы приложения и загрузочный сектор могут также использоваться для хранения кода программы. 7.4. Память данных Память данных состоит из памяти ввода-вывода, EEPROM и SRAM, которые имеют единое линейное адресное пространство (см. рисунок 7.2). Чтобы проектирование было более простым, карта памяти всех микроконтроллеров в семействе выполнена идентичным образом с пустыми, зарезервированными областями у МК меньших типоразмеров.   Рисунок 7.2. Карта памяти данных (шестнадцатиричные адреса)
 7.4.1. Память ввода-вывода Все УВВ и модули адресуются через ячейки памяти ввода-вывода в пространстве памяти данных. Доступ ко всем ячейкам памяти ввода-вывода можно осуществить с помощью инструкций чтения (LD/LDS/LDD) и записи (ST/STS/STD), которые передают данные между 32 регистрами общего назначения ЦПУ и памятью ввода-вывода. Инструкции IN и OUT предоставляют возможность прямого доступа к ячейкам памяти ввода-вывода по адресам от  0x00 до 0x3F. Регистры ввода-вывода с адресами от 0x00 до 0x1F имеют возможность побитного доступа с использованием инструкций SBI и CBI. Для проверки состояния отдельных бит этих регистров предусмотрены инструкции  SBIS и SBIC. Адреса всех УВВ и модулей микроконтроллеров XMEGA A3 в пространстве памяти ввода-вывода представлены в разделе 30 "Распределение адресов модулей и УВВ". 7.4.2. Статическое ОЗУ памяти данных Для хранения данных у микроконтроллеров XMEGA A3 предусмотрено встроенное статическое ОЗУ (SRAM). 7.4.3. EEPROM памяти данных Для энергонезависимого хранения данных в микроконтроллеры XMEGA A3 встроено EEPROM, которое адресуется либо в отдельном пространстве памяти, либо в общем пространстве памяти данных. EEPROM поддерживает, как побайтный, так и постраничный доступ. 7.5. Сигнатурный код производителя Сигнатурный код производителя - отдельный сектор памяти, в котором хранятся запрограммированные производителем данные. К их числу относятся калибровочные данные генераторов и аналоговых модулей. В сигнатурном коде также имеется идентификационный код микроконтроллера и уникальный неповторяющийся серийный номер. Идентификационные коды микроконтроллеров XMEGA A3 показаны в таблице 7.1. Серийный номер получается в результате объединения следующих данных: номер партии, номер пластины и координата кристалла МК на пластине. Сигнатурный код производителя не поддерживает возможности записи или стирания, но зато он доступен для чтения, как со стороны прикладной программы, так и со стороны внешнего программатора. Таблица 7.1. Идентификационные байты для микроконтроллеров XMEGA A3 
    | Микроконтроллер | Идентификационные байты |  
    | Байт 2 | Байт 1 | Байт 0 |  
    | ATxmega64A3 | 42 | 96 | 1E |  
    | ATxmega128A3 | 42 | 97 | 1E |  
    | ATxmega192A3 | 44 | 97 | 1E |  
    | ATxmega256A3 | 42 | 98 | 1E |  7.6. Сигнатурный код пользователя Сигнатурный код пользователя - отдельная область памяти, полностью доступная для чтения и записи со стороны прикладной программы и внешнего программатора. Сигнатурный код пользователя равен по размеру странице flash-памяти и предназначен для хранения такой статической информации пользователя, как калибровочные данные, специальные серийные номера или идентификационные коды, стартовые числа для генерации случайных чисел и др. Данный сектор не стирается при выполнении команды стирания Flash-памяти Chip Erase и требует выполнения отдельной команды стирания. Этим гарантируется сохранность параметров при частом выполнении операций программирования/стирания и во время работы встроенной отладочной системы. 7.7. Размер страницы Flash-памяти и EEPROM Flash-память программ и EEPROM память данных имеют страничную организацию. Страницы Flash-памяти образуют слова, а EEPROM - байты. В таблице 7.2 показана организация Flash-памяти программ. Операции записи и стирания Flash-памяти выполняются постранично, а чтения - побайтно. Адресоваться к ячейкам Flash-памяти позволяет Z-указатель (Z[m:n]). Старшие значащие биты адреса (FPAGE) - номер страницы, а младшие значащие биты адреса (FWORD) - адрес слова в странице. Таблица 7.2. Количество слов и страниц во Flash-памяти 
    | Микроконтроллер | Flash-память | FWORD | FPAGE | Сектор прикладной программы | Загрузочный сектор |  
    | Размер | Размер страницы | Размер | Количество страниц | Размер | Количество страниц |  
    | ATxmega64A3 | 64 + 4 кбайт | 128 слов | Z[7:1] | Z[16:8] | 64 кбайт | 256 | 4 кбайт | 16 |  
    | ATxmega128A3 | 128 + 8 кбайт | 256 слов | Z[8:1] | Z[17:9] | 128 кбайт | 256 | 8 кбайт | 16 |  
    | ATxmega192A3 | 192 + 8 кбайт | 256 слов | Z[8:1] | Z[18:9] | 192 кбайт | 384 | 8 кбайт | 16 |  
    | ATxmega256A3 | 256  + 8 кбайт | 256 слов | Z[8:1] | Z[18:9] | 256 кбайт | 512 | 8 кбайт | 16 |  В таблице 7.3 представлена организация памяти EEPROM микроконтроллеров XMEGA A3. Операции записи и стирания EEPROM можно выполнять побайтно или постранично, а чтения - побайтно. Адресация EEPROM выполняется с помощью регистра адреса NVM Address Register (ADDR[m:n]). Старшие биты адреса (E2PAGE) - номер страницы, а младшие биты адреса (E2BYTE) - адрес байта в странице. Таблица 7.3.  Количество байт и страниц в EEPROM 
    | Микроконтроллер | Размер EEPROM | Размер страницы | E2BYTE | E2PAGE | Количество страниц |  
    | ATxmega64A3 | 2 кбайт | 32 байт | ADDR[4:0] | ADDR[10:5] | 64 |  
    | ATxmega128A3 | 2 кбайт | 32 байт | ADDR[4:0] | ADDR[10:5] | 64 |  
    | ATxmega192A3 | 2 кбайт | 32 байт | ADDR[4:0] | ADDR[10:5] | 64 |  
    | ATxmega256A3 | 4 кбайт | 32 байт | ADDR[4:0] | ADDR[11:5] | 128 |  
 
 |