Доступ к статическому ОЗУ, регистровому файлу и регистрам ввода/вывода осуществляется при помощи пяти доступных режимов адресации поддерживаемых архитектурой AVR.
Все пространство памяти AVR является линейным и непрерывным. Гибкий модуль прерываний имеет собственный управляющий регистр в
пространстве ввода/вывода, и флаг глобального разрешения прерываний в регистре состояния. Каждому прерыванию назначен свой вектор в начальной области памяти программ. Различные прерывания имеют приоритет в соответствии с расположением их векторов. По младшим адресам расположены векторы с большим приоритетом.
Файл регистров общего назначения
Все команды оперирующие регистрами прямо адресуются к любому из регистров за один машинный цикл. Единственное исключение - пять команд оперирующих с константами SBCI, SUBI, CPI, ANDI, ORI и команда LDI, загружающая регистр константой. Эти команды работают только со второй половиной регистрового файла - R16..R31. Команды SBC, SUB, CP, AND и OR, также как и все остальные, применимы ко всему регистровому файлу.
Каждому регистру присвоен адрес в пространстве данных, они отображаются на первые 32 ячейки ОЗУ. Хотя регистровый файл физически размещен вне ОЗУ, подобная организация памяти дает гибкий доступ к регистрам. Регистры X, Y и Z могут использоваться для индексации любого регистра. Кроме обычных функций, регистры R26..R31 имеют дополнительные функции, эти регистры можно использовать как адресные указатели в области памяти данных. Эти регистры обозначаются как X,Y,Z и определены следующим образом:
|   Регистр X  |    15 0  |  |
|   7 0  |    7 0  |  |
|   1Bh (R27)  |    1Ah (R26)  |  |
|   Регистр Y  |    15 0  |  |
|   7 0  |    7 0  |  |
|   1Dh (R29)  |    1Ch (R28)  |  |
|   Регистр Z  |    15 0  |  |
|   7 0  |    7 0  |  |
|   1Fh (R31)  |    1Eh (R30)  |  |
При различных режимах адресации эти регистры могут использоваться как фиксированный адрес, для адресации с автоинкрементом или с автодекрементом.
АЛУ процессора непосредственно подключено к 32 регистрам общего назначения. За один машинный цикл АЛУ производит операции между регистрами регистрового файла. Команды АЛУ разделены на три основных категории - арифметические, логические и битовые.
Загружаемая память программ.
AT90S2333/4433 содержат 2/4 кБ загружаемой флэш памяти для хранения программ. Поскольку все команды занимают одно 16- или 32-разрядное слово, флэш память организована как 1/2 Kx16. Флэш-память выдерживает не менее 1000 циклов перезаписи. Программный счетчик имеет ширину 10/11 бит и позволяет адресоваться к 1024/2048 словам программной флэш-памяти.
Подробно загрузка флэш памяти будет рассмотрена дальше.
AT90S2333/4433 содержат 128/256 байт электрически стираемой энергонезависимой памяти (EEPROM). EEPROM организована как отдельная область данных, каждый байт которой может быть прочитан и перезаписан. EEPROM выдерживает не менее 100000 циклов записи/стирания. Доступ к энергонезависимой памяти данных рассмотрен ниже и задается регистрами адреса, данных и управления. Дальше будет рассмотрена загрузка данных в EEPROM через SPI интерфейс.
На рисунке приведенном ниже показана организация памяти данных в AT90S2333/4433.
224 ячейки памяти включают в себя регистровый файл, память ввода/вывода и статическое ОЗУ данных.
Первые 96 адресов используются для регистрового файла и памяти ввода/вывода, следующие 128 - для ОЗУ данных.
При обращении к памяти используются пять различных режимов адресации: прямой, непосредственный со смещением, непосредственный, непосредственный с предварительным декрементом и непосредственный с постинкрементом. Регисты R26..R31 регистрового файла используются как указатели для непосредственной адресации. Прямая адресация имеет доступ ко всей памяти данных. Непосредственная адресация со смещением используется для доступа к 63 ячейкам базовый адрес которых задается содержимым регистров Y или Z.
Для непосредственной адресации с инкрементом и декрементом адреса используются адресные регистры X, Y и Z.
При помощи любого из этих режимов производится доступ ко всем 32 регистрам общего назначения, 64 регистрам ввода/вывода и 128 ячейкам ОЗУ.
Время выполнения команд.
ЦПУ процессора AVR управляется системной частотой генерируемой внешним резонатором. Внутреннее деление частоты генератора не используется. В процессоре организован буфер (pipeline) команд, при выборе команды из памяти программ происходит выполнение предыдущей команды. Подобная концепция позволяет достичь быстродействия 1MIPS на MHz, уникальных показателей стоимости, быстродействия и потребления процессора.
|   Регистровый файл  |    Область адресов данных  |  
|   R0  |    00h  |  
|   R1  |    01h  |  
|   :  |    :  |  
|   R30  |    1E  |  
|   R31  |    1F  |  
|   Регистры ввода\вывывода  |  |
|   00h  |    20h  |  
|   01h  |    21h  |  
|   :  |    :  |  
|   3Eh  |    5Eh  |  
|   3Fh  |    5Fh  |  
|   -  |    Встроенное ОЗУ  |  
|   -  |    61h  |  
|   -  |    :  |  
|   -  |    DEh  |  
|   -  |    DFh  |  
Пространство ввода/вывода AT90S2333/4433
|   Адреса  |    регистры  |    название  |    функции  |  ||||||||
|   3Fh(5Fh)  |    SREG  |    Status REGister  |    Регистр Состояния  |  ||||||||
|   3Dh(5Dh)  |    SP  |    Stack pointer low  |    Указатель стека  |  ||||||||
|   3Bh(5Bh)  |    GIMSK  |    General Interrupt MaSK register  |    Общий регистр маски прерываний  |  ||||||||
|   3Ah(5Ah)  |    GIFR  |    General Interrupt Flag Register  |    Общий регистр флагов прерываний  |  ||||||||
|   39h(59h)  |    TIMSK  |    Timer/counter Interrupt mask register  |    Регистр маски прерываний от таймера/счетчика  |  ||||||||
|   38h(58h)  |    TIFR  |    Timer/counter Interrupt Flag register  |    Регистр флага прерывания таймера/счетчика  |  ||||||||
|   35h(55h)  |    MCUCR  |    MCU general Control Register  |    общий регистр управления микроконтроллером  |  ||||||||
|   34h(54h)  |    MCUSR  |    MCU Status Register  |    рег.состояния микроконтрол.  |  ||||||||
|   33h(53h)  |    TCCR0  |    Timer/Counter 0 Control Register  |    Регистр управления таймером счетчиком 0  |  ||||||||
|   32h(52h)  |    TCNT0  |    Timer/Counter 0 (8-бит)  |    Таймер/счетчик 0 (8 бит)  |  ||||||||
|   2Fh(4Fh)  |    TCCR1A  |    Timer/Counter 1 Control Register A  |    Рег. A управления таймером счетчиком 1  |  ||||||||
|   2Eh(4Eh)  |    TCCR1B  |    Timer/Counter 1 Control Register B  |    Рег. B управления таймером счетчиком 1  |  ||||||||
|   2Dh(4Dh)  |    TCNT1H  |    Timer/Counter 1 High byte  |    Таймер/счетчик 1 старший байт  |  ||||||||
|   2Ch(4Ch)  |    TCNT1L  |    Timer/Counter 1 Low byte  |    Таймер/счетчик 1 младший байт  |  ||||||||
|   2Bh(4Bh)  |    OCR1H  |    Output Compare Register 1 high byte  |    Выход регистра совпаден. 1 старший байт  |  ||||||||
|   2Ah(4Ah)  |    OCR1L  |    Output Compare Register 1 low byte  |    Выход регистра совпаден. 1 младший байт  |  ||||||||
|   27h(47h)  |    ICR1H  |    T/C 1 Input Cupture Register High Byte  |    Регистр захвата Т\С 1 старший байт  |  ||||||||
|   26h(46h)  |    ICR1L  |    T/C 1 Input Cupture Register Low Byte  |    Регистр захвата Т\С 1 младший байт  |  ||||||||
|   21h(41h)  |    WDTCR  |    Watchdog Timer Control Register  |    Регистр управления сторожевым таймером  |  ||||||||
|   1Eh(3Eh)  |    EEAR  |    EEPROM Address Register  |    Регистр адреса энергонезависимой памяти  |  ||||||||
|   1Dh(3Dh)  |    EEDR  |    EEPROM Data Register  |    Регистр данных энергонезависимой памяти  |  ||||||||
|   1Ch(3Ch)  |    EECR  |    EEPROM Control Register  |    Регистр управления энергонезависимой памяти  |  ||||||||
|   18h(38h)  |    PORTB  |    Data Register, Port B  |    Регистр данных порта B  |  ||||||||
|   17h(37h)  |    DDRB  |    Data Direction Register Port B  |    Регистр направления данных порта B  |  ||||||||
|   16h(36h)  |    PINB  |    Input pins, Port B  |    Выводы порта B  |  ||||||||
|   15h(35h)  |    PORTС  |    Data Register, Port С  |    Регистр данных порта С  |  ||||||||
|   14h(34h)  |    DDRС  |    Data Direction Register Port С  |    Регистр направления данных порта С  |  ||||||||
|   13h(33h)  |    PINС  |    Input pins, Port С  |    Выводы порта С  |  ||||||||
|   12h(32h)  |    PORTD  |    Data Register, Port D  |    Регистр данных порта D  |  ||||||||
|   11h(31h)  |    DDRD  |    Data Direction Register Port D  |    Регистр направления данных порта D  |  ||||||||
|   10h(30h)  |    PIND  |    Input pins, Port D  |    Выводы порта D  |  ||||||||
|   0Fh(2Fh)  |    SPDR  |    SPI I/O Data Register  |    Регистр данных порта SPI  |  ||||||||
|   0Eh(2Eh)  |    SPSR  |    SPI Status Register  |    Регистр состоян. порта SPI  |  ||||||||
|   0Dh(2Dh)  |    SPCR  |    SPI Control Register  |    Регистр управл.порта SPI  |  ||||||||
|   0Ch(2Ch)  |    UDR  |    UART Data Register  |    Регистр данных последовательного порта  |  ||||||||
|   0Bh(2Bh)  |    USR  |    UART Status Register  |    Регистр состояния последовательного порта  |  ||||||||
|   0Ah(2Ah)  |    UCR  |    UART Control Register  |    Регистр управления последовательного порта  |  ||||||||
|   09h(29h)  |    UBRR  |    UART Baud Rate Register  |    Регистр скорости последовательного порта  |  ||||||||
|   08h(28h)  |    ACSR  |    Analog Comparator Control and Status Register  |    Регистр управления и состояния аналогового компарат.  |  ||||||||
|   07h(27h)  |    ADMUX  |    ADC multiplexer Select register  |    Регистр коммутатора АЦП  |  ||||||||
|   06h(26h)  |    ADCSR  |    ADC Control and Status Register  |    Регистр управления и состояния АЦП  |  ||||||||
|   05h(25h)  |    ADCH  |    ADC data register High  |    Рег данных АЦП (старш.)  |  ||||||||
|   04h(24h)  |    ADCL  |    ADC data register Low  |    Рег данных АЦП (младш.)  |  ||||||||
|   03h(23h)  |    UBRRHI  |    UART Baud Rate Register HIgh  |    Регистр скорости последовательного порта (старш.)  |  
Примечание: зарезервированные и неиспользуемые ячейки не показаны