Адрес |
7 |
0 |
||||||
3E (5Е) |
SPH |
|||||||
7 |
0 |
|||||||
3D(5D) |
SPL |
|||||||
I/O (ОЗУ) |
Область стека должна быть определена программно (т.е. запрограммированы регистры SPH и SPL) до вызова любой подпрограммы или разрешения прерываний.
2. Организация памяти
АТМеgа 128 имеет три вида памяти: флэш-память программ; внутренне ОЗУ; внутреннее ПЗУ.
2.1 Память программ
Емкость внутренней электрически программируемой флэш-памяти программ составляет 128 Кбайт. Поскольку все AVR инструкции являются 16 или 32-разрядными, то флэш-память организованна как 64 Кбайта*16 с диапазоном адресов 0000 .. FFFF (Н).
2.2 Статическое ОЗУ памяти данных
Конфигурация ОЗУ памяти данных имеет вид:
Адрес порта |
Адрес ОЗУ |
|
32 РОН |
0000..001F(H) |
|
00..3F(Н) |
64 регистра ввода/вывода |
0020..005F(H) |
160 расширенных регистров В/В |
0060..00FF(H) |
|
Внутреннее СОЗУ (4096*8) |
0100 . . 10FF(H) |
|
Внешнее СОЗУ (0..64К*8) |
1100(H) . . FFFF(H) |
Для управления большим числом периферийных устройств используется 64 ячейки с адресами 20 .. 5F (Н) и 160 ячеек с адресами 60 .. FF(Н), определенные как регистры ввода-вывода. Обращение к первым 64 из них может вестись как к ячейкам памяти с адресами 20 .. 5F (Н) или портам ввода-вывода с адресами 00 .. 3F (Н). В последнем случае используются команды ввода-вывода IN и OUT. К расширенным 160 регистрам ввода-вывода можно обращаться только как к ячейкам памяти.
Назначение регистров ввода-вывода будет рассматриваться по необходимости, при изучении соответствующих периферийных устройств. В частности, нами уже рассмотрены регистр состояния SREG адрес (3F(5F)) и указатель стека SPH+SPL адреса (3Е(5Е)+3D(5D)).
2.3 Электрически стираемая память данных ПЗУ
АТМеgа 128 содержит 4 Кбайт памяти данных в электрически стираемой постоянной памяти (ЕЕPROM). Она организованна как отдельная область памяти данных, в которой один байт может быть записан или считан.
При записи и чтении ячеек ЕЕPROM используется четыре управляющих регистра:
Два адресных:
Адреса |
|
EEARH – старший байт адреса ячейки |
1F/3F |
EEARL – младший байт адреса ячейки |
1E/3E |
I/O/MEM |
Регистр данных:
Адреса |
|
EEDR – содержит байт данных записываемых или считанных в/щ ячейки ЕЕPROM |
1D/3D |
I/O/MEM |
Регистр управления ПЗУ: EECR
7 |
3 |
2 |
1 |
0 |
Адрес |
||||
-- |
-- |
-- |
-- |
EERIE |
EEMWE |
EEWE |
EERE |
EECR |
1C/3C |
I/O/MEM |
Бит EERIE=1 разрешает прерывание по готовности ЕЕPROM. Прерывание генерируется, если бит EEWE сброшен.
(Обработка прерываний возможна, если бит I в регистре SREG равен 1).
Бит EEМWE=1 – разрешает установку бита EEWE. Автоматически сбрасывается через 4 такта.
Бит EEWE=1 - инициирует запись данных из регистра EEDR в ячейку ЕЕPROM с адресом из регистров EEARH и EEARL.
Алгоритм записи в ПЗУ:
1. Ожидание, пока бит EEWE станет равен 0;
2. Запись адреса в регистр EEAR;
3. Запись данных в регистр EEDR;
4. Запись 1 в бит EEМWE регистра управления;
5. Запись 1 в бит EEWE регистра управления.
Бит EERE – разрешает чтение ячейки ПЗУ с адресом из EEAR в регистр EEDR.
Алгоритм чтения ПЗУ:
1. Проверка бита EEWE на 0;
2. Запись адреса в регистр EEAR;
3. Запись 1 в бит EERE;
4. Чтение данных из регистра EEDR.
Пример записи байта данных в ЕЕPROM:
M:
sbic EECR, EEWE ; проверка бита EEWE на 0
rjmp M
out EEARH, r 18 ; запись адреса (r18:r17) в адресный регистр
out EEARH, r 17
out EEDR, r16 ; запись байта данных r16 в регистр данных
sbi EECR, EEMWE ; запись 1 в EEMWE
sbi EECR, EEWE ; запись
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.