-В качестве памяти
программ используется внутренняя 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 |
Прерывания.