В микроконтроллерах AVR все регистры и память данных располагаются в одном адресном пространстве. Это означает, что память данных совмещена с регистрами. Такой подход называется «отображением ресурсов МК на память».
Памятью программ является внутрисистемно программируемая Flash-память объемом 8 Кбайт. Поскольку все команды имеют формат одного или двух 16-разрядных слоев, то и память программ имеет организацию 4К×16. Flash-память обеспечивает не менее 1000 циклов стирания/записи.
Счетчик программ AT90S8535 (PC) является 12-разрядным в зависимости от объема памяти программ (4096). Адреса памяти программ от $0000 до $FFF.
Память данных AVR микроконтроллера AT90S8535 состоит из:
– 32-х 8-разрядных регистров общего назначения;
– 64-х 8-разрядных регистров пространства памяти I/O;
– блока энергонезависимой памяти данных EEPROM (ЭСППЗУ) объемом 512 байт (512 × 8), доступного программе микроконтроллера непосредственно в ходе ее выполнения.
EEPROMобычно используется для хранения промежуточных данных, констант, таблиц перекодировок, калибровочных коэффициентов и т.п. Эта память может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. EEPROM имеет собственный набор адресов от $0000 до $1FF.
Адресное пространство представлено на рис. 1.3.
Память программ
Память данных
Flash-память программ
(4К × 16)
$0000
32 регистра общего назначения
$0000
EEPROM
(512 × 8)
$0000
$001F
64 регистра I/O
$0020
$005F
$FFF
Встроенная SRAM (512 × 8)
$0060
$1FF
$025F
Рис. 1.3. – Конфигурация памяти микроконтроллера AT90S8535
Первые 96 адресов занимают регистровый файл и пространство регистров ввода-вывода. В следующих 512 адресах размещается встроенная SRAM; 32 регистра общего назначения и 64 регистра I/O, кроме адресов в общем пространстве памяти данных, имеют и свои собственные адреса, по которым к ним можно обращаться с помощью специальных команд (рис. 1.4).
Дополнительные обозначения
q
Собственные адреса (обозначения)
q
Адреса в общем пространстве памяти данных
q
Файл регистров общего назначения
R0
$0000
…
…
R25
$0019
X - регистр
R26
$001A
R27
$001B
Y - регистр
R28
$001C
R29
$001D
Z - регистр
R30
$001E
R31
$001F
Файл регистров пространства
ввода - вывода
$00
$0020
…
…
$3F
$005F
Встроенная SRAM
$0060
…
$025F
Рис. 1.4. Организация SRAM микроконтроллера AT90S8535
Всеми режимами адресации перекрывается все адресное пространство данных, включая 32 регистра общего назначения, 64 регистра ввода/вывода и 512 байт внутренних данных SRAM в AT90S8535.
В таблице 1.3 показаны адреса и наименования всех регистров пространства ввода/вывода.
Таблица 1.3. Пространство ввода/вывода (I/O) микроконтроллеров AT90S4434/8535
Адрес I/O
(адрес SRAM)
Обозначение
Функция
$3В ($5В)
GIMSK
(General Interrupt MaSK register)
$3А ($5А)
GIFR
(General Interrupt Flag Register)
$39 ($59)
TIMSK
(Timer/Counter Interrupt MaSK register)
$38 ($58)
TIFR
(Timer/Counter Flag Register)
$35 ($5)
MCUCR
(MCU general Control Register)
$34 ($45)
MCUSR
(MCU general Status Register)
$33 ($53)
TCCR0
(Timer/CounterO Control Register)
$32 ($52)
TCNT0
(Timer/CounterO 8-bit)
$2F ($4F)
TCCR1A
(Timer/Counteri Control Register A)
$2E ($4E)
TCCR1B
(Timer/Counteri Control Register B)
$2D ($4D)
TCNT1H
(Timer/Counteri ст. байт)
$2C ($4C)
TCNT1L
(Timer/CounteM мл. байт)
$2B ($4B)
OCR1AH
(Timer/Counteri Output Compare Register A ст. байт)
$2A ($4A)
OCR1AL
(Timer/Counteri Output Compare Register A мл. байт)
$29 ($49)
OCR1BH
(Timer/Counteri Output Compare Register В ст. байт)
$28 ($48)
OCR1BL
(Timer/Counteri Output Compare Register В мл. байт)