-В качестве памяти
программ используется внутренняя flash-память.
Она организована в виде матрицы 16-разрядных ячеек и может загружаться
программатором, либо через порт SPI;
-16-разрядные память
программ и шина команд вместе с одноуровневым конвейером позволяют выполнить
большинство инструкций за один такт синхрогенератора (50 нс при частоте FOSC=20 МГц);
-Память данных имеет
8-разрядную организацию. Младшие 32 адреса пространства занимают регистры
общего назначения, далее следуют 64 адреса регистров ввода-вывода, затем
внутреннее ОЗУ данных объемом до 4096 ячеек. Возможно применение внешнего ОЗУ данных
объемом до 60 Кбайт;
-Внутренняя
энергонезависимая память типа EEPROM
объемом до 4 Кбайт представляет собой самостоятельную матрицу, обращение к
которой осуществляется через специальные регистры ввода-вывода;
Регистры общего
назначения.
В микропроцессоре ATmega
128 все 32 регистра общего назначения непосредственно доступны АЛУ. Благодаря
этому любой регистр общего назначения может использоваться во всех командах и
как операнд источник и как операнд приемник. Такое решение (в сочетании с
конвейерной обработкой) позволяет АЛУ выполнять одну операцию за один машинный
цикл.
Последние шесть
регистров общего назначения могут также объединяться в три 16-разрядных
регистра X, Y,
и Z, используемых в качестве
указателей при косвенной адресации памяти данных.
Каждый регистр
имеет свой собственный адрес в памяти данных. Поэтому к ним можно обращаться
двумя способами (как к регистрам и как к памяти), несмотря на то, что физически
эти регистры не являются ячейками ОЗУ. Такое решение является еще одной
отличительной особенностью архитектуры AVR,
повышается эффективность работы микроконтроллера и его производительность.
Все регистры
ввода/вывода можно разделить на две группы – служебные регистры и регистры,
относящиеся к конкретным периферийным устройствам.
Размещение в памяти
регистров ввода/вывода приведено в таблице 3.1. В скобках указываются
соответствующие им адреса ячеек ОЗУ.
| Название |
Адрес |
Функция |
| UCSR1C |
($9D) |
Регистр управления и состояния С USART1 |
| UDR1 |
($9C) |
Регистр данных USART1 |
| UCSR1A |
($9B) |
Регистр управления и состояния A USART1 |
| UCSR1B |
($9A) |
Регистр управления и состояния В USART1 |
| UBRR1L |
($99) |
Регистр скорости передачи USART1, младший байт |
| UBRR1H |
($98) |
Регистр скорости передачи USART1, старший байт |
| UCSR0C |
($95) |
Регистр управления и состояния С USART0 |
| UBRR0H |
($90) |
Регистр скорости передачи USART0, старший байт |
| TCCR3C |
($8C) |
Регистр управления С таймера/счетчика ТЗ |
| TCCR3A |
($8B) |
Регистр управления А таймера/счетчика ТЗ |
| TCCR3B |
($8A) |
Регистр управления В таймера/счетчика ТЗ |
| TCNT3H |
($89) |
Счетный регистр таймера/счетчика ТЗ, старший байт |
| TCNT3H |
($88) |
Счетный регистр таймера/счетчика ТЗ, младший байт |
| OCR3AH |
($87) |
Регистр совпадения А таймера/счетчика ТЗ, старший байт |
| OCR3AL |
($86) |
Регистр совпадения А таймера/счетчика ТЗ, младший байт |
| OCR3BH |
($85) |
Регистр совпадения В таймера/счетчика ТЗ, старший байт |
| OCR3BL |
($84) |
Регистр совпадения В таймера/счетчика ТЗ, младший байт |
| OCR3CH |
($83) |
Регистр совпадения С таймера/счетчика ТЗ, старший байт |
| OCR3CL |
($82) |
Регистр совпадения С таймера/счетчика ТЗ, младший байт |
| ICR3H |
($81) |
Регистр захвата таймера/счетчика ТЗ, старший байт |
| ICR3L |
($80) |
Регистр захвата таймера/счетчика ТЗ, младший байт |
| ETIMSK |
($7D) |
Дополнительный регистр маски прерываний от
таймеров/счетчиков |
| ETIFR |
($7C) |
Дополнительный регистр флагов прерываний от
таймеров/счетчиков |
| TCCR1C |
($7A) |
Регистр управления С таймера/счетчика Т1 |
| OCR1CH |
($79) |
Регистр совпадения С таймера/счетчика Т1, старший байт |
| OCR1CL |
($78) |
Регистр совпадения С таймера/счетчика Т1, младший байт |
| TWCR |
($74) |
Регистр управления TWI |
| TWDR |
($73) |
Регистр данных TWI |
| TWAR |
($72) |
Регистр адреса TWI |
| TWSR |
($71) |
Регистр состояния TWI |
| TWBR |
($70) |
Регистр скорости передачи TWI |
| OSCCAL |
($6F) |
Регистр калибровки тактового генератора |
| XMCRA |
($6D) |
Регистр управления А внешней памятью |
| XMCRB |
($6C) |
Регистр управления В внешней памятью |
| EICRA |
($6A) |
Регистр управления А внешними прерываниями |
| SPMCR |
($68) |
Регистр управления памятью программ |
| PORTG |
($65) |
Регистр данных порта G |
| DDRG |
($64) |
Регистр направления данных порта G |
| PORTF |
($62) |
Регистр данных порта F |
| DDRF |
($61) |
Регистр направления данных порта F |
| SREG |
$3F($5F) |
Регистр состояния |
| SPH |
$3E($5E) |
Указатель стека, старший байт |
| SPL |
$3D($5D) |
Указатель стека, младший байт |
| XDIV |
$3C($5C) |
Регистр управления делителем тактовой частоты |
| RAMPZ |
$3B($5B) |
Регистр выбора страницы |
| EICRB |
$3A($5A) |
Регистр управления В внешними прерываниями |
| EIMSK |
$39($59) |
Регистр маски внешних прерываний |
| EIFR |
$38 ($58) |
Регистр флагов внешних прерываний |
| TIMSK |
$37($57) |
Регистр маски прерываний от таймеров/счетчиков |
| TIFR |
$36($56) |
Регистр флагов прерываний от таймеров/счетчиков |
| MCUCR |
$35($55) |
Регистр управления микроконтроллером |
| MCUCSR |
$34($54) |
Регистр управления и состояния микроконтроллера |
| TCCR0 |
$33($53) |
Регистр управления таймером/счетчиком Т0 |
| TCNT0 |
$32($52) |
Счетный регистр таймера/счетчика Т0 |
| OCR0 |
$31($51) |
Регистр совпадения таймера/счетчика Т0 |
| ASSR |
$30($50) |
Регистр состояния асинхронного режима |
| TCCR1A |
$2F($4F) |
Регистр управления А таймера/счетчика Т1 |
| TCCR1B |
$2E($4E) |
Регистр управления В таймера/счетчика Т1 |
| TCNT1H |
$2D($4D) |
Счетный регистр таймера/счетчика Т1, старший байт |
| TCNT1L |
$2C($4C) |
Счетный регистр таймера/счетчика Т1, младший байт |
| OCR1AH |
$2B($4B) |
Регистр совпадения А таймера/счетчика Т1, старший байт |
| OCR1AL |
$2A($4A) |
Регистр совпадения А таймера/счетчика Т1, младший байт |
| OCR1BH |
$29($49) |
Регистр совпадения В таймера/счетчика Т1, старший байт |
| OCR1BL |
$28($48) |
Регистр совпадения В таймера/счетчика Т1,младший байт |
| ICR1H |
$27($47) |
Регистр захвата таймера/счетчика Т1, старший байт |
| TCCR2 |
$25($45) |
Счетный регистр таймера/счетчика Т2 |
| TCNT2 |
$24($44) |
Регистр совпадения таймера/счетчика Т2 |
| OCR2 |
$23($43) |
Регистр совпадения таймера/счетчика Т2 |
| OCDR |
$22($42) |
Регистр внутрисхемной отладки |
| WDTCR |
$21($41) |
Регистр управления сторожевым таймером |
| SFIOR |
$20($40) |
Регистр специальных функций |
| EEARH |
$1F($3F) |
Регистр адреса EEPROM, старший байт |
| EEARL |
$1E($3E) |
Регистр адреса EEPROM, младший байт |
| EEDR |
$1D($3D) |
Регистр данных EEPROM |
| EECR |
$1C($3C) |
Регистр управления EEPROM |
| PORTA |
$1B($3B) |
Регистр данных порта А |
| DDRA |
$1A($3A) |
Регистр направления данных порта А |
| PINA |
$19($39) |
Выводы порта А |
| PORTB |
$18($38) |
Регистр данных порта В |
| DDRB |
$17($37) |
Регистр направления данных порта В |
| PINB |
$16($36) |
Выводы порта В |
| PORTC |
$15($35) |
Регистр данных порта С |
| DDRC |
$14($34) |
Регистр направления данных порта С |
| PINC |
$13($33) |
Выводы порта С |
| PORTD |
$12($32) |
Регистр данных порта D |
| DDRD |
$11($31) |
Регистр направления данных порта D |
| PIND |
$10($30) |
Выводы порта D |
| SPDR |
$0F($2F) |
Регистр данных SPI |
| SPSR |
$0E($2E) |
Регистр состояния SPI |
| SPCR |
$0D($2D) |
Регистр управления SPI |
| UDR0 |
$0C($2C) |
Регистр данных USART0 |
| UCSR0A |
$0B($2B) |
Регистр управления и состояния A USART0 |
| UCSR0B |
$0A($2A) |
Регистр управления и состояния В USART0 |
| UBRR0L |
$09($29) |
Регистр скорости передачи USART0, младший байт |
| ACSR |
$08($28) |
Регистр управления и состояния аналогового компаратора |
| ADMUX |
$07($27) |
Регистр управления мультиплексором АЦП |
| ADCSRA |
$06($26) |
Регистр управления и состояния АЦП |
| ADCH |
$05($25) |
Регистр данных АЦП, старший байт |
| ADCL |
$04($24) |
Регистр данных АЦП, младший байт |
| PORTE |
$03($23) |
Регистр данных порта Е |
| DDRE |
$02($22) |
Регистр направления данных порта Е |
| PINE |
$01($21) |
Выводы порта Е |
| PINF |
$00($20) |
Выводы порта F |
Прерывания.