У мікроконтролері AVR АТMEGA128 реалізована гарвардська архітектура, у відповідності до якої адресні простори пам'яті програм і даних фізично розділений (доступ до цих областей пам'яті здійснюється по роздільних шинах). Така організація дозволяє ядру процесора одночасно працювати з пам'яттю програм і даних, що підвищує швидкодію. Карта розподілу пам'яті в мікроконтролері AVR АТMEGA128 наведена на рис. 1.1. Пам'ять програм являє собою електрично-стираємий перепрограмувальний постійний запам'ятовувальний пристрій ППЗУ обсягом 128 кбт, виконане за технологією FLASH - пам'яті, і призначена для зберігання команд, керуючих функціонуванням мікроконтролера, а також для зберігання констант, що не міняють своїх значень у ході виконання програми. Так, як довжина команди становить 16 біт, то пам'ять програм має 16-розрядну організацію. Для адресації пам'яті програм використовується 16-розрядний регістр - програмний лічильник PС (Program Counter). Програма виконується послідовно. Для керування ходом виконання програми існують команди переходу, що змінюють відповідним чином значення РС.
|
|
Пам'ять даних організована за принципом сполученої архітектури вводу/виводу й розділена на 3 частини: регістрова пам'ять, пам'ять портів (регістрів) вводу/виводу й статичне ОЗУ (SRAM), розташовані в єдиному адресному просторі.
Рисунок 1.1 - Розподіл пам'яті в мікроконтролері AVR АТMEGA128
Регістрова пам'ять (див. рисунок 1.2) включає 32 8-розрядних регістра загального призначення (R0 - R31), об'єднаних у регістровий файл. Кожний з регістрів загального призначення безпосередньо пов'язаний з АЛУ. АЛУ підтримує арифметичні й логічні операції з регістрами, між регістром і константою або безпосередньо з регістром. При виконанні арифметичної або логічної команди за один такт із регістрового файлу вибираються два операнда, виконується дія, і результат повертається в регістровий файл. Регістровий файл відображається на молодші 32 адреси 0000h-001Fh пам'яті даних і до його регістрів можна звертатися як до комірок пам'яті. Шість 8 - розрядних регістрів (R26 - R31) можуть використатися як три 16-розрядних регістри-покажчики для непрямої адресації (див. рисунок 1.3).
Рисунок 1.2 - Ілюстрація відображення регістрів загального призначення й портів уведення/виводу на адресний простір пам'яті даних
X | Y | Z | |||
Рисунок 1.3 - 16-розрядні регістри Х, Y, Z, що використовуються для непрямої адресації пам'яті.
Простір вводу/виводу складається з 64 адрес портів 0000h-003Fh, призначених для взаємодії із внутрішніми й зовнішніми пристроями мікроконтролера. Порти вводу/виводу відображаються на область пам'яті даних з адресами 0020h-005Fh і допускають можливість звертання до них як до комірок пам'яті. При доступі до порту вводу/виводу як до комірки пам'яті до адреси порту необхідно додати 20h. Адреса порту вводу/виводу в просторі пам'яті часто вказується в дужках після адреси в просторі портів вводу/виводу. Через те, що основною функцією мікроконтролера є керування зовнішніми пристроями, у таблиці 1.1. приводяться назви й адреси (у просторі портів вводу/виводу) основних інтерфейсних портів із вказівкою режиму роботи й функцій окремих регістрів.
|
|
По адресах пам'яті 0060h-00FFh розташовані 160 додаткових регістрів вводу/виводу.
Безпосередньо пам'ять даних являє собою статичне ОЗУ (SRAM) обсягом 4 кбт, що займає діапазон адрес 0100h-10FFh.
Таблиця 1.1 - Порти вводу/виводу мікроконтролера AVR MEGA128 для підключення зовнішніх пристроїв
Назва порту вводу/виводу | Ідентифікатори окремих регістрів | Адреса | Режим / функція |
PORTA | PINA | 19h | IN |
DDRA | 1Ah | OUT / DIRECTION | |
PORTA | 1Bh | OUT | |
PORTB | PINB | 16h | IN |
DDRB | 17h | OUT / DIRECTION | |
PORTB | 18h | OUT | |
PORTC | PINC | 13h | IN |
DDRC | 14h | OUT / DIRECTION | |
PORTC | 15h | OUT | |
PORTD | PIND | 10h | IN |
DDRD | 11h | OUT / DIRECTION | |
PORTD | 12h | OUT | |
PORTE | PINE | 01h | IN |
DDRE | 02h | OUT / DIRECTION | |
PORTE | 03h | OUT | |
PORTF | PINF | 00h | IN |
DDRF | 61h | OUT / DIRECTION | |
PORTF | 62h | OUT | |
PORTG | PING | 63h | IN |
DDRG | 64h | OUT / DIRECTION | |
PORTG | 65h | OUT |
Регістр стану SREG розташований в області вводу/виводу за адресою 3Fh (5Fh) і містить інформацію про поточний стан мікроконтролера. Розташування прапорових бітів регістра стану наведено на рис. 1.4.
№ біта | ||||||||
3Fh (5Fh) | I | T | H | S | V | N | Z | C |
Рисунок 1.4 - Регістр стану SREG.
Призначення окремих бітів регістра стану наведено нижче:
– C – прапор переносу, установлюється в 1 при наявності переносу в арифметичних операціях;
– Z – прапор нуля, установлюється в 1, якщо результат операції дорівнює 0;
– N – прапор негативного результату, установлюється в 1 при одержанні негативного результату;
– V - прапор переповнення, фіксує вихід результату за межі припустимого діапазону значень;
– S - прапор знака, S = N xor V;
– H - прапор додаткового переносу (з молодшої тетради байта в старшу);
– T - прапор для тимчасового зберігання біта з регістрів загального призначення;
– I - керуючий прапор дозволу переривань, дозволяє (1) або забороняє (0) процесору реагувати на апаратні переривання.