У цьому розділі описується внутрішній устрій мікросхем сімейства Tiny. Необхідно відзначити, що тут дано огляд тільки самих часто використовуваних функцій серії Tiny. Деякі функції в описі мікросхем можуть бути відсутні. Додаткову інформацію з цих функцій дивіться у специфікаціях конкретних мікросхем.

Пам’ять

В архітектурі AVR передбачено два основних адресних простору: пам’ять даних і пам’ять програм. Крім того, мікросхеми мають стирається пам’ять типу EEPROM для зберігання даних. Flash-пам’ять для зберігання програм організована як лінійний масив 16-розрядних комірок (оскільки розмір усіх команд AVR дорівнює 16 або 32 біти). Адресний простір внутрішньої пам’яті SRAM, внутрішніх регістрів і регістрів вводу / виводу спільне. Молодші 32 байти зайняті внутрішніми регістрами, наступні 64 байта – регістрами введення / виводу; потім адресація SRAM триває з адреси 0x60. Внутрішня пам’ять EEPROM призначена для тимчасового зберігання даних. На рис. 1.3 показана карта пам’яті мікроконтролерів сімейства Tiny.

Рис. 1.3. Карта пам’яті мікроконтролерів сімейства Tiny

Порти введення / виводу

Порти введення / виводу контролерів AVR складаються з окремих контактів, кожен з яких можна конфігурувати для введення або виведення. До будь-якого вхідного контакту можна приєднати навантаження. Це необхідно для підключення датчиків, які не видають електричного сигналу (наприклад, мікропереключателей). Кожен вихідний буфер забезпечує струм 40 мА, що дозволяє безпосередньо підключати світлодіоди. Всі контакти вводу / виводу захищені діодами по шинам харчування і землі. На рис. 1.4 показана блок-схема портів введення / виводу контролерів AVR.

Рис. 1.4. Блок-схема порту введення / виводу контролерів сімейства Tiny

Таймери

У мікросхемах tinyAVR зазвичай є вбудовані синхронні або асинхронні восьмирозрядні таймери. Для синхронного тактирования служить сигнал від внутрішнього тактового генератора (або від дільника частоти), для асинхронного – зовнішній тактовий сигнал або ланцюг фазового автопідстроювання частоти (Phase Lock Loop, PLL), яка працює на частоті до 64 Мгц.

Рис. 1.5. Блок-схема таймера AVR

До складу деяких контролерів входять також 10- або 16-розрядні таймери. Крім лічильника, ці таймери також мають блоки порівняння, які генерують ШІМ-сигнал на контактах введення / виводу. Таймери можуть працювати в різних режимах (нормальний, захоплення, режим широтно-імпульсної модуляції, скидання таймера за результатом порівняння і т. д.). Кожен таймер має кілька пов’язаних з ним джерел переривань, які описуються в наступному розділі, присвяченому перериваннях. На рис. 1.5 показана блок-схема таймера AVR.

Переривання

У контролерах AVR передбачено кілька різних джерел переривань, яким виділені відповідні вектори в адресному просторі програм. За замовчуванням вектори переривань займають перші адреси в адресному просторі програм. Наймолодший адресу (0x0000) призначений вектору скидання, який взагалі кажучи, не є джерелом переривання. Адреса переривання визначає також і його пріоритет. Чим нижче адресу, тим вище рівень пріоритету переривання. Тому скидання має найвищий пріоритет. Якщо одночасно відбувається кілька переривань, то першим виконується переривання з найвищим пріоритетом, за ним переривання з нижчим пріоритетом і т. д. Переривання призупиняє нормальне виконання основної програми і переставляє лічильник команд на підпрограму обробки переривання (Interrupt Service Routine, ISR). Після обробки переривання лічильник команд встановлюється знову на основну програму. На рис. 1.6 показано виконання коду ISR.

Рис. 1.6. Обробка переривання

Кожному перериванню присвоюється свій біт дозволу, який для активізації переривання повинен бути встановлений в логічну одиницю (так само як і глобальний біт дозволу переривань в регістрі стану). Глобальний біт дозволу переривань при виконанні ISR за замовчуванням скидається, тому ніякі інші переривання відбутися не можуть (якщо тільки програма користувача не виставила явним чином глобальний біт дозволу переривань, щоб дозволити вкладені переривання (переривання всередині іншого переривання)). Периферійні пристрої AVR (таймери, інтерфейс USI, АЦП, аналогові компаратори і т. Д.) Мають різні джерела переривань для різних станів або режимів.

USI: універсальний послідовний інтерфейс

Інтерфейс USI забезпечує основні апаратні ресурси для послідовного обміну. Цей інтерфейс можна конфігурувати для роботи або за трипровідні протоколу (який сумісний з послідовним периферійним інтерфейсом SPI), або по двопровідному протоколу (який сумісний з двухпроводним інтерфейсом TWI). При мінімальному керуючому програмному забезпеченні інтерфейс USI допускає значно більш високі швидкості передачі і вимагає менше пам’яті для програм (чим чисто програмні рішення). Переривання застосовуються для зменшення навантаження на процесор.

Аналоговий компаратор

Контролери AVR мають компаратор, який вимірює аналогове вхідна напруга на двох входах і видає цифровий вихідний сигнал (0 або 1) залежно від того, на якому вході (позитивному або негативному) є напруга.

Рис. 1.7. Блок-схема аналогового компаратора

Позитивний і негативний входи можуть бути обрані з контактів вводу / виводу. Зміна виходу компаратора можна іспользожщь як джерело переривання. Вихід компаратора можна побачити на контакті логового компаратора (АФО). На рис. 1.7 показана блок-схема аналогового ‘v

ратора.

Аналого-цифровий перетворювач

Аналого-цифровий перетворювач (АЦП, ADC) являє собою 10-розрядний перетворювач послідовного наближення з декількома несиметричними входами. У деяких мікросхемах є також диференціальні входи (для перетворення різниці аналогових напруг у двох точках в цифровий код). Для підвищення точності вимірювань іноді підсилюють вхідна напруга (до перетворення). Опорна напруга для вимірювання можна брати з контактів AREF, VCC і від внутрішнього джерела опорної напруги. На рис. 1.8 показана блок-схема аналого-цифрового перетворювача.

Рис. 1.8. Блок-схема аналого-цифрового перетворювача

Джерела тактових сигналів

Джерела сигналів тактової частоти: калібрований RC-генератор, зовнішній тактовий генератор, кварцовий гейератор, сторожовий генератор, низькочастотний кварцовий генератор, а також генератор з фазовою автопідстроюванням частоти (PLL). Джерело тактового сигналу можна задати (з цих варіантів) за допомогою fuse- бітів (конфігураційних осередків). Частота сигналу від обраного джерела може бути згодом піддана попередньою поділу (за допомогою виставлення бітів в регістрі попереднього поділу) під час ініціалізації про-грамного забезпечення користувача. Тактовий сигнал надходить в різні модулі

мікросхеми (CPU, I / O, Flash і ADC):

□ CLK_CPU – синхронізує ті частини системи, які забезпечують роботу ядра AVR (внутрішні регістри, регістр стану і т. д.).

□ CLK_I / 0- використовується більшістю модулів вводу / виводу (тайме- ри / лічильники, інтерфейс USI, синхронні зовнішні переривання і т. д.).

□ CLK_FLASH – управляє роботою інтерфейсу Flash-пам’яті.

□ CLK_ADC – на відміну від інших модулів вводу / виводу, АЦП отримує окремий тактовий сигнал, щоб під час роботи АЦП можна було перервати інші тактові сигнали (для зниження перешкод решти цифрових ланцюгів). Це дозволяє отримати більш точні результати аналого-цифрового перетворення. На рис. 1.9 показані різні варіанти подачі сигналу тактової частоти.

Рис. 1.9. Джерела сигналу тактової частоти

Управління електроживленням і режими очікування

У сучасних контролерах, в тому числі і в мікросхемах AVR, передбачено саме ефективне управління електроживленням. Вони підтримують режими очікування, які можуть бути налаштовані користувальницькою програмним забезпеченням, і дозволяють відключати невикористані модулі (знижуючи тим самим енергоспоживання).

Можливі такі режими очікування: вимикання, енергозбереження, простий, зменшення шумів АЦП та ін. Різні мікросхеми підтримують різні режими, подробиці щодо яких можна завжди знайти в специфікаціях.

Більше того, кожен режим має свій набір джерел пробудження (для виходу з цього режиму і переходу в повноцінне робоче стан).

Скидання системи

Джерела сигналу скидання контролерів AVR:

□ Скидання по включенню харчування – мікроконтролер скидається, коли напруга живлення зменшується до заданого порогу спрацьовування.

□ Зовнішній скидання – коли на контакті RESET присутній низький рівень сигналу.

□ Скидання по сторожовому таймері – коли активізований сторожовий таймер і його період очікування закінчився.

□ Скидання з падіння напруги харчування – коли активізований детектор падіння напруги і напруга живлення VCC виявляється нижче заданого порогу спрацьовування.

Після скидання його джерело може бути визначений програмно за допомогою перевірки окремих бітів регістра стану мікроконтролера. Під час скидання все регістри введення / виводу встановлюються в свої початкові значення, і програма починає виконання з вектора скидання. На рис. 1.10 показана блок-схема різних джерел сигналу скидання.

Джерело: Гадре, Д., Цікаві проекти на базі мікроконтролерів tinyAVR / Дхананья Гадре, Нігула Мелхотра: Пер. з англ. – СПб .: БХВ-Петербург, 2012. – 352 с .: іл. – (Електроніка)