Мікроконтролери AVR

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

AVR — родина восьмибітових мікроконтролерів фірми Atmel.

Мікроконтролери родини AVR

Мікроконтролери AVR мають гарвардську архітектуру (програма і дані знаходяться в різних адресних просторах) і систему команд, близьку до ідеології RISC. Процесори AVR мають 32 8-бітових регістри загального призначення. Максимальна тактова частота — 20 мегагерц (XMEGA AVR — до 32 МГц), короткі команди виконуються за один такт.

Особливості[ред.ред. код]

На відміну від «ідеального» RISC, регістри не абсолютно ортогональні:

  • Деякі команди працюють тільки з регістрами r16—r31;
  • 16-бітний результат множення (у тих моделях, в яких є модуль множення) завжди розміщується в регістровій парі r0:r1;
  • Для непрямої адресації пам'яті даних використовуються три «здвоєні» 16-бітові регістри-вказівники X (r26:r27), Y (r28:r29) та Z (r30:r31);
  • В командах ADIW, SBIW додавання та віднімання короткої константи від 16-бітного аргумента можуть використовуватися лише вказані вище пари X, Y, Z та пара (r24:r25);
  • В командах роботи з пам'яттю програм LPM, SPM використовується лише регістрова пара Z (r30:r31);
  • Команди напрямого переходу та виклику підпрограм ICALL, IJMP також можуть використовувати лише регістрову пару Z.

Робота з периферійними пристроями здійснюється через адресний простір даних. Для зручності з першими 64-ма адресами периферійних пристроїв можна працювати за допомогою «скорочених» команд IN/OUT доступу до простору вводу-виводу (I/O — Input/Output). Роботу з окремими бітами периферійних пристроїв у просторі I/O забезпечують команди SBI, CBI, SBIS, SBIC. Втім, ці команди працюють лише з першими 32-ма адресами простору.

Основні родини[ред.ред. код]

  • tinyAVR
    • 0,5—16 кБ пам'яті програм
    • 32—1024 байти оперативної пам'яті
    • 0—512 байтів енергонезалежної пам'яті даних EEPROM
    • 6—32-вивідний корпус
    • Обмежений набір внутрішніх периферійних пристроїв
    • Напруга живлення 1,8—5,5 В
  • megaAVR
    • 4—256 кБ пам'яті програм
    • 0,25—8 кБ оперативної пам'яті
    • 0,25—4 кБ енергонезалежної пам'яті даних EEPROM
    • 28—100-вивідний корпус
    • Розширений набір команд (команди множення, розширені методи адресації в командах LPM, SPM)
    • Розширений набір внутрішніх периферійних пристроїв
    • Напруга живлення 1,8—5,5 В
  • XMEGA
    • 16—384 кБ пам'яті програм
    • 2—32 кБ оперативної пам'яті
    • 1—4 кБ енергонезалежної пам'яті даних EEPROM
    • 44—64—100-вивідний корпус (A4, A3, A1)
    • Підвищена продуктивність за рахунок таких особливостей, як ПДП (Прямий Доступ до Пам'яті), підтримка криптографії, «Система подій».
    • Розширений набір внутрішніх периферійних пристроїв (ЦАП)
    • Напруга живлення 1,6—3,6 В

Засоби розробки[ред.ред. код]

Окрім комерційних засобів розробки (IAR, CodeVisionAVR та ін.), існують також вільні, наприклад, WinAVR - GNU порт GCC для AVR. В якості вільного середовища для avr-gcc можна використовувати Code::Blocks.

Крім того, архітектура AVR дозволяє застосовувати операційні системи при розробці застосувань, основними з яких є написані на мові C системи FreeRTOS та uOS. Також існує написана на мові програмування C++ система scmRTOS.

Суттєвий вплив на поширеність мікроконтролерів має те, що програмування цих мікроконтролерів здійснюється досить легко. Найпростіший програматор, пристрій за допомогою якого персональний комп'ютер записує програму у flash-пам'ять мікроконтролера, складається з п'яти провідників та вилки порта LPT. Це дозволяє з успіхом використовувати мікроконтролери AVR новачками, що хочуть отримати знання з мікроелектроніки.

Див. також[ред.ред. код]

Посилання[ред.ред. код]