АЛП підтримує арифметичні і логічні операції між регістрами, а також між константою і регістром. Крім того, АЛП підтримує дії з одним регістром. Після виконання арифметичної операції регістр статусу (прапорів) обновлюється для відображення результату виконання операції. Прапори цього регістра в більшості випадків дозволяють відмовитися від використання інструкцій порівняння, роблячи код програми більш компактним і швидким. Крім того, архітектурою МК підтримуються операції множення зі знаком і без знака і дробовим форматом.
Для розгалуження програми підтримуються інструкції умовних і безумовних переходів і викликів процедур, що дозволяють безпосередньо адресуватися в межах адресного простору. Більшість інструкцій являють собою одне 16-розрядне слово. Кожна адреса пам'яті програм містить 16- або 32-розрядну інструкцію. Пам’ять програм розділена на два сектори: сектор програми початкового завантаження і сектор прикладної програми. Обидва сектори мають роздільні біти захисту від запису і читання/запису. Оскільки всі AVR-інструкції є 16 або 32-розрядними, флеш-пам’ять організована як 1 кбайт х 16. Програмний лічильник РС у МК є 16-розрядним, тому дозволяє адресувати до 64 кбайт пам'яті програм.
При генерації переривання і виклику підпрограм адреса повернення з програмного лічильника записується в стек. Стек ефективно розподілений у статичному ОЗП пам'яті даних і, отже, розмір стека обмежений загальним розміром статичного ОЗП і використовуваним його обсягом. У будь-якій програмі відразу після скидання повинна бути виконана ініціалізація покажчика стека (SP) (тобто перед виконанням процедур обробки переривань або викликом підпрограм). Покажчик стека – SP – доступний для читання і запису у просторі введення-виведення.
Доступ до статичного ОЗП даних може бути легко здійснений через 5 різних режимів адресації архітектури AVR і виконується за два машинних цикли відповідно до рис. 4.
МК містить 128 байт пам'яті даних типу EEPROM.
Гнучкий модуль переривань містить свої керуючі регістри в просторі введення - виведення і має додатковий біт загального дозволу роботи системи переривань у регістрі статусу. У всіх переривань мається свій вектор переривання відповідно до таблиці векторів переривань. Переривання мають пріоритет відповідно до позиції їхнього вектора. Переривання з меншою адресою переривання мають більш високий пріоритет.
Простір пам'яті введення - виведення містить 32 адреси з безпосередньою адресацією або може адресуватися як пам'ять даних.
Таймери-лічильники МК призначені для точного завдання часових інтервалів, генерації прямокутних імпульсів і виміру часових характеристик імпульсних сигналів.
Рис. 4. Часова діаграма доступу до вбудованого статичного ОЗП даних.
Спеціальні можливості МК
– Скидання при подачі живлення і програмована схема скидання при зниженні напруги живлення.
– Вбудований калібрований RC-генератор.
– Десять зовнішніх і внутрішніх джерел переривань.
- Програмний вибір тактової частоти.
- Шість режимів зниження енергоспоживання:
1.Режим холостого ходу (Idle).
Зупиняє ЦП, але при цьому підтримує роботу статичного ОЗП, таймерів-лічильників, SPI-порту і системи переривань У режимі холостогоходу допускається пробудження від будь-якого зовнішнього або внутрішнього переривання, наприклад, при переповненні таймера.
Зупиняє ЦП і всі модулі введення-виведення, крім асинхронного таймера й АЦП для мінімізації імпульсних шумів у процесі перетворення АЦП. Вихід з даного режиму допускається не тільки при генерації запиту на переривання по завершенню перетворення АЦП, але і при зовнішнім скиданні, скиданні по сторожовому таймері, скиданні при неприпустимому зниженні живлення, перериванні при виявленні встановленої адреси на послідовній шині, перериванні по таймеру-лічильнику 0, перериванні по входах INT0, 1.
У даному режимі припиняє роботу зовнішній генератор, але в дії залишаються зовнішні переривання, спостереження за адресою на послідовній шині і сторожовий таймер (за умови, що вони активізовані). Вихід з даного режиму можливий тільки по зовнішньому скиданню, скиданню сторожовим таймером, скиданню супервізором живлення, перериванні по виявленні встановленої адреси на послідовній шині, перериванні по входах INT0, 1. У даному режимі фактично відключена генерація всіх тактових частот, тому подальша робота модулів продовжується тільки в асинхронному режимі.
Даний режим ідентичний режимові вимикання за деякими виключеннями:
Якщо Т/С 0 тактується асинхронно, то він у режимі сну продовжить роботу. Вихід з режиму сну можливий по переповненню таймера. У даному режимі зупиняються всі тактові джерела за винятком асинхронних (clkASY), що працюють тільки разом з асинхронними модулями, у т.ч. Т/С 0 з дозволеною опцією асинхронного тактуваня.
Кварцовий генератор продовжує роботу, а інша частина МК знаходиться в режимі сну. Даний режим характеризується малою споживаною потужністю, але при цьому дозволяє досягти самого швидкого повернення в робочий режим (за 6 машинних циклів).
В даному режимі основний генератор і асинхронний таймер продовжують працювати. Вихід з розширеного чергового режиму відбувається за шість машинних циклів.
Описані вище модулі складають так називаний базовий комплект МК і входять до складу будь-якого сучасного контролера. Очевидна необхідність включення до складу МК додаткових модулів, склад і можливості яких визначаються конкретною розв'язуваною задачею. Серед таких додаткових модулів випливає, насамперед, відзначити:
· модулі послідовного введення/виведення даних;
· модулі аналогового введення/ виведення.
· зв'язок вбудованої мікроконтролерної системи із системою керування верхнього рівня, наприклад, з персональним комп'ютером. Найчастіше для цієї мети використовуються інтерфейс RS-232C;
· зв'язок із зовнішніми стосовно МК периферійними інтегральними схемами, а також з датчиками фізичних величин з послідовним виходом. Для цих цілей використовуються інтерфейси I2C, SPI, а також нестандартні протоколи обміну;
· інтерфейс зв'язку з локальною мережею в мультимікроконтролерних системах. У системах з числом МК до п'яти звичайно використовуються мережі на основі інтерфейсів I2C, RS-232C і RS-485 із власними мережними протоколами високого рівня. У більш складних системах усе більш популярним стає протокол CAN.
З погляду організації обміну інформацією згадані типи інтерфейсів послідовного зв'язку відрізняються режимом передачі даних (синхронним або асинхронним), форматом кадру (число біт у посилці при передачі байта корисної інформації) і часовими діаграмами сигналів на лініях (рівні сигналів і положення фронтів при переключеннях).
Число ліній, по яких відбувається передача в послідовному коді, звичайно дорівнює двом (I2C, RS-232C, RS-485) або трьом (SPI, деякі нестандартні протоколи). Дана обставина дозволяє спроектувати модулі контролерів послідовного обміну таким чином, щоб з їхньою допомогою на апаратному рівні можна було реалізувати кілька типів послідовних інтерфейсів. При цьому режим передачі (синхронний або асинхронний) і формат кадру підтримуються на рівні логічних сигналів, а реальні фізичні рівні сигналів для кожного інтерфейсу одержують за допомогою спеціальних інтегральних схем, що називають прийомопередатчиками, конверторами, трансиверами.
Серед різних типів вбудованих контролерів послідовного обміну, що входять до складу 8-розрядних МК, склався стандарт «де-факто» — модуль UART (Universal Asynchronous Receiver and Transmitter). UART — це універсальний асинхронний приемопередатчик. Однак більшість модулів UART, крім асинхронного режиму обміну, здатні також реалізувати режим синхронної передачі даних.
Найпростішим пристроєм аналогового введення в МК є вбудований компаратор напруги. Компаратор порівнює вхідну аналогову напругу з опорним потенціалом VREF і встановлює на виході логічну «1», якщо вхідна напруга більше опорної. Їх зручніше за усе використовувати для контролю визначеного значення вхідної напруги, наприклад, у термостатах. Компаратор дозволяє реалізувати на МК інтегруючий АЦП.
Однак більш широкі можливості для роботи з аналоговими сигналами дає АЦП, вбудований у МК. Найчастіше він реалізується у виді модуля багатоканального АЦП, призначеного для введення в МК аналогових сигналів з датчиків фізичних величин і перетворення цих сигналів у двійковий код.
Власне АЦП виконаний по методу послідовного наближення. Практично у всіх моделях 8-розр. МК розрядність АЦП також складає 8 розрядів. Відповідно, формат представлення результатів виміру АЦП — однобайтовий. Тривалість такту перетворення задає генератор синхронізації: один цикл дорівнює двом періодам частоти генератора tADC. Час перетворення для типових модулів АЦП МК складає від одиниць до десятків мікросекунд.
Момент завершення кожного циклу перетворення відзначається установкою тригера готовності даних. Якщо переривання від модуля АЦП дозволені, то генерується запит на переривання. Як правило, читання регістра результату скидає тригер готовності.