Програмна модель мікроконтролера AVR MEGA128. Механізм роботи з регістрами, пам'яттю й портами вводу/вивода

У мікроконтролері 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) процесору реагувати на апаратні переривання.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: