Доступ к статическому ОЗУ, регистровому файлу и регистрам ввода/вывода осуществляется при помощи пяти доступных режимов адресации поддерживаемых архитектурой 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 | Регистр скорости последовательного порта (старш.) |
Примечание: зарезервированные и неиспользуемые ячейки не показаны