Програмування контролерів AVR включає в себе установку бітів блокування, fuse-бітів, програмування Flash-пам’яті, а також програмування внутрішньої пам’яті EEPROM. Ці дані можуть бути лічені з контролера разом з байтами ідентифікації пристрою. Мікросхеми сімейства Tiny можна запрограмувати за допомогою послідовного або паралельного способу. У цій книзі (якщо не обумовлено іншого) ми застосовували-послідовне програмування мікроконтролерів сімейства Tiny. Тут теж є два варіанти: системне програмування (ISP) і послідовне програмування при високій напрузі (HVSP). HVSP застосуємо (як альтернатива паралельного програмування) тільки для восьмиконтактних мікроконтролерів (оскільки ці мікросхеми мають занадто мало контактів для паралельного програмування).

Системне програмування використовує внутрішній послідовний периферійний інтерфейс (SPI) контролерів AVR для завантаження коду в пам’ять Flash і EEPROM. При цьому також програмуються біти блокування і fuse-біти. Для такого програмування потрібні тільки контакти VCC, GND, RESET і три сигнальних лінії. У деяких випадках для введення / виведення (або інших цілей) може знадобитися контакт RESET. Якщо цей контакт налаштований як контакт для введення / виведення (за допомогою біта RSTDISBL), то програмування в режимі ISP неможливо і мікросхему слід програмувати за допомогою паралельного програмування або послідовного програмування при високій напрузі.

Для програмування контролерів AVR є ще один метод – система налагодження debugWIRE (описана в наступному розділі). Остання серія шестиконтактних мікросхем компанії Atmel (ATtiny4 / 5/9/10) не підтримує описаних раніше варіантів програмування і має новий вбудований інтерфейс програмування TPI.

Біти блокування служать для захисту програмного забезпечення користувача (щоб уникнути дублювання), а fuse-біти застосовуються для початкової настройки контролера, яка не може (і не повинна) виконуватися програмним забезпеченням користувача. На рис. 1.11 показані сигнали для послідовного програмування ISP.

Рис. 1.11. Сигнали для послідовного програмування

Отладочная система debugWIRE

Отладочная система debugWIRE – це однопроводной інтерфейс для апаратного налагодження та програмування пам’яті Flash і EEPROM. Цей інтерфейс включається за допомогою програмування fuse-біта DWEN. Після включення цього інтерфейсу обмін даними між мікросхемою і емулятором відбувається через контакт RESET. Таким чином, при програмуванні через цей інтерфейс зовнішній скидання не працює. Протокол програмування в даному випадку аналогічний JTAG ICE mkll (популярний інструмент налагодження компанії Atmel). На рис. 1.12 показаний відлагоджувальний інтерфейс debugWIRE.

Рис. 1.12. Налагоджувальний інтерфейс debugWIRE

Складові проекту

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

Як же створюється система або проект, який досі нікому не приходив в голову? Звичайно, ви повинні обміркувати, що вам потрібно. Іноді поштовхом може послужити інша розробка. Це абстрактний процес, який можна проілюструвати прикладом. Припустимо, що ви побачили використання світлодіодів в якійсь системі: яскраві і миготливі, вони привернули вашу увагу, і ви подумали, а що якщо я розміщу ці веселенькі світлодіоди на своїй шапці і примушу їх блимати або міняти інтенсивність світіння? Найголовніше – знайти щось оригінальне. На рис. 1.13 схематично зображено процес проектування і розробки.

Після того як ідея зародилася у вашій голові, ви можете почати розвивати її. Ми рекомендуємо відразу ж пошукати по Інтернету, щоб переконатися в тому, що вона не прийшла в голову комусь ще. Не варто повторно винаходити колесо. Якщо ваша ідея вже реалізована, то варто подумати, як її вдосконалити. Якщо ви берете готову реалізацію та покращуєте її, то вам слід поділитися своєю роботою з автором вихідного проекту, щоб отримати визнання своєї роботи і зафіксувати зроблений вами внесок. Таким шляхом можна поліпшити вже існуючу конструкцію. Сказане можна застосувати до проектів, які доступні в Інтернеті на умовах який-небудь безкоштовної ліцензії. В інших випадках вам може знадобитися уточнити юридичні нюанси. У більшості ситуацій порушення закону не буде в тому випадку, коли ви використовуєте оригінальну розробку (або її адаптацію) виключно в особистих цілях. Однак при комерційному застосуванні потрібно буде обов’язково зв’язатися з автором розробки (щоб уникнути виникнення проблем у майбутньому).

У кожному проекті є дві окремих складових (рис. 1.13): апаратні компоненти та програмне забезпечення. Апаратну частину можна реалізувати різними способами, але простіше за все на основі мікроконтролерів. Оскільки наша книга присвячена застосуванню мікроконтролерів, то саме на цьому ми і зосередимося. Крім мікроконтролера, для роботи будь-якого пристрою потрібен джерело живлення. Знадобляться й інші (специфічні для конкретного проекту) апаратні компоненти (незважаючи на те, що в сучасних мікроконтролерах інтегровано велику кількість функцій). Наприклад, незважаючи на те, що мікроконтролер має вихідні контакти для управління семисегментний індикаторами, він не здатний забезпечити великий струм, який може знадобитися, тому вам будуть потрібні зовнішні формувачі струму.

Рис. 1.13. Процес проектування та розробки

Ще приклад: якщо ви хочете встановити зовнішній датчик, який видає аналогове напруга для вимірювання фізичного параметра, то діапазон напруги цього датчика може виявитися невідповідним для аналого-цифрового перетворювача мікроконтролера і доведеться додати зовнішній підсилювач. На рис. 1.14 показані елементи сучасного мікроконтролера.

Рис. 1.14. Елементи сучасного проекту з використанням мікроконтролера

Програмні компоненти – це прикладна програма, яка виконується в мікроконтролері. Однак цим терміном може також позначатися і програма для обміну з мікроконтролером, що працює на персональному комп’ютері.

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

Крім специфічних апаратних компонентів та програмного забезпечення для більшості проектів будуть потрібні ще деякі стандартні блоки – джерела живлення і сигналу тактової частоти (рис. 1.15). Джерело харчування і стабілізація напруги живлення докладно описані в одному з наступних розділів.

Для роботи пристрою дуже важливий джерело сигналу тактової частоти. На щастя, таке джерело зазвичай є в самому микроконтроллере. Зазвичай це RC- генератор, який не дуже точним і частота якого залежить від робочої напруги, але для багатьох пристроїв цього цілком достатньо. Зовнішнє джерело тактової частоти знадобиться тільки для тих додатків, які критичні до вимірювання часу. Всі мікроконтролери сімейства AVR забезпечені вбудованим джерелом сигналу тактової частоти і в більшості проектів цієї книги ми використовуємо саме його. Швидкість виконання програми безпосередньо залежить від тактової частоти. Однак висока тактова частота має і недолік: система споживає більше електроенергії. Між тактовою частотою і споживанням енергії існує лінійна залежність. Якщо ви подвоїте тактову частоту, то споживання енергії також зросте в два рази. Тому нерозумно вибирати саму високу робочу частоту, краще визначити її виходячи з необхідної швидкості виконання програми. Як ми покажемо в проекті 1 (далі в цьому ж розділі), вибравши найнижчу тактову частоту, ми можемо знизити споживану потужність до мінімуму. Основні компоненти пристрою показані на рис. 1.15.

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

Рис. 1.15. Основні компоненти пристрою

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