Після того як ми описали всі елементи і компоненти проекту (і всю специфіку створення проектів для мікроконтролерів AVR), пропонуємо простий проект для ілюстрації. У ньому є всі елементи, показані на рис. 1.15. В схемі є два світлодіоди і дві кнопки, а також кнопка скидання. Завдання пристрою – змінювати стан світлодіодів при натисканні та відпусканні кнопок. Проект має таку назву тому, що вводить вас в світ мікроконтролерів tinyAVR.

На рис. 1.36 і 1.37 наведені два варіанти принципової схеми цього вуст- ройства. Обидві схеми ідентичні, вони ілюструють два найпопулярніших стилю зображення схем. На рис. 1.36 всі з’єднання між компонентами показані явно (сполучними лініями). На рис. 1.37 сигналам присвоєні назви (наприклад, РВЗ – це контакт 2 мікроконтролера). Контакт 2 з’єднується з LED1. Тому назва сигналу РВЗ присвоюється і контакту 2, і катода LED1. Схожі назви сигналів дані і решті з’єднанням.

Рис. 1.36. Принципова схема проекту “Hello World!”

Рис. 1.37. Інший стиль схеми для “Hello World!” (S1 відповідає LED1, S2 – LED2)

Давайте розглянемо елементи схеми рис. 1.36 (рис. 1.37). Схема живиться від двох лужних батарейок розміру АА. Як згадувалося раніше, такі батареї мають номінальну напругу на виводах 1,5 В. Дві батареї дають напругу 3 В. Робоча напруга Tinyl3V становить від 1,8 до 5,5 В, так що 3 В цілком підходить. У міру розряду батарей напруга буде падати, але схема буде продовжувати працювати до тих пір, поки напруга живлення не знизиться до 1,8 В. Світлодіоди видимого світла (на відміну від інфрачервоних) мають певну напругу включення, яке залежить від кольору (1,8В- для червоного і 3,5 В- для білого). Таким чином, для цього проекту слід вибрати червоні світлодіоди. На рис. 1.38 показана компонування плати з боку компонентів, а на рис. 1.39 – з боку пайки. Ви бачите, що плата в основному розлучена в шарі пайки (з боку компонентів є тільки одна перемичка). Її легко виготовити за допомогою фрезерування, описаного в попередньому розділі. Зовнішній вигляд зібраного зразка пристрою показаний на рис. 1.40.

Компонування плати в програмі EAGLE (разом зі схемою) можна завантажити за посиланням: www.avrgenius.com/tinyavrl.

Рис. 1.38. Друкована плата проекту “Hello World!” з боку пайки

Рис. 1.39. Друкована плата проекту “Hello World!” з боку компонентів

Рис. 1.40. Зібране пристрій “Hello World!”

Код програми був написаний таким чином, що ліва кнопка включає лівий світлодіод, а права – правий. Тобто якщо правий світлодіод вимкнений, і ви натискаєте і відпускаєте праву кнопку, то вона включає правий світлодіод. Код програми для мікроконтролера Tinyl3V на мові С приведений в лістингу 1.2.

Листя! 1

// Include Files # include

#define F_CPU 128000UL #include<util/delay.h>

int main(void)

{

DDRB |= 1«2 11«3 ;//Declare as outputs PORTB I = 1«2 11«3 ;

// Вимкнути світлодіоди DDRB & = ~ (1 «0 11« 1); // Оголошення введення PORTB | = (1 «0 11« 1); // Включення навантаження while (1)

{

// Кнопка 1

if (! (PINB & (1 «0))) // якщо є натискання

{

_delay_ms (10); // придушення брязкоту while (! (PINB & (1 «0)));

// Чекаємо відпускання

_delay_ms (10); // придушення брязкоту РСЖТВЛ= (1 «3); / / Перемикання

}

// Кнопка 2

if (! (PINB & (1 «1))) // якщо є натискання

{

_delay_ms (10); // придушення брязкоту while (! (PINB & (1 «1)));

// Чекаємо відпускання

_delay_ms (10); // придушення брязкоту PORTBA= (1 «2); / / Перемикання

}

}

Рис. 1.41. Установка fuse-бітів для мікроконтролера Tiny13

}

Лістинг 1.2 демонструє загальний стиль програмування нашої книги. Файли, заголовків специфічні для компілятора AVR-GCC. Макрос f_cpu використовується для передачі в компілятор значення робочої частоти. Програма працює в нескінченному циклі. Для кожної кнопки є один блок if, який спочатку перевіряє натиснення кнопки. Якщо кнопка натиснута, то відбувається очікування її відпускання, і при відпуску виконується потрібне дію (перемикання світлодіода). Затримка в 10 мс після кожного натискання і відпускання кнопки призначена для придушення брязкоту контактів. Тим, хто тільки починає програмувати на мові С для мікроконтролерів AVR, рекомендується прочитати додаток 1, щоб краще зрозуміти наведений код. Відкомпільований вихідний код разом з файлом MAKEFILE можна скачати за посиланням: www.ayrgemus.coin / tinyavrl.

AVR програмується через STK500 в режимі ISP. Установка fuse-бітів показана на рис. 1.41. Tinyl3 налаштований для роботи на частоті 128 кГц внутрішнього RC- генератора. Ідея полягає в тому, щоб тактіровать AVR найнижчою частотою, оскільки споживання енергії цифровими схемами AVR (схема типу CMOS) прямо пропорційно робочій тактовій частоті, а ми хочемо звести витрати енергії до мінімуму.

Висновок

Ми завершили вступну частину книги і розглянули широке коло питань, які необхідно враховувати при розробці проектів. У цій главі закладені основи для розуміння наступних глав. У ній також описаний найпростіший проект, для якого ми надали повний вихідний код і компоновку друкованої плати. Створення більш цікавих пристроїв на основі контролерів tinyAVR почнеться в розділі 2. Для всіх інших проектів ми не наводимо в тексті повний вихідний код і розведення друкованої плати. Все це можна отримати за посиланнями, зазначеним для кожного проекту. Однак для найважливіших фрагментів коду дані пояснення. У наступному розділі ми розглянемо декілька простих проектів зі світлодіодами.

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