Чому на практиці

Тому що ви, впевнений, можете багато теоретичні знання почерпнути з інших книг Крім того, думаю, вам практика здасться досить «паперової», без паяльника, без проводів – що за практика

Якщо ви ще не поповнили свою лабораторію генератором прямокутних імпульсів, то ми зараз займаємося тим, що розробимо досить зручний генератор на базі мікроконтролера Яким він буде, в кінцевому рахунку, залежить лише від нашої фантазії Але почнемо ми з простої задачі, приклад якої я вже наводив, коли вище приводив осцилограми пауз різної тривалості Для цієї програми я зустрічав дві назви: моргнути світлодіодом і «Hello world» світу мікропроцесорів Друге мені подобається більше

Отже, генератор з частотою 1 кГц повинен на 05 мс встановлювати високий рівень напруги на виході, на 05 мс рівень нульової напруги, і повторювати це нескінченно

Як я вже говорив, спростимо вираз: нескінченно, 05 мс 1 на B5, 05 мс на B5

Я маю намір використовувати, так склалися обставини, ATMega168 у складі модуля Arduino Ви можете повторити це для PIC16F628A (або за вашим вибором) Створюючи програму, ми обговоримо ряд питань, які включать і роботу з кнопками, і роботу зі світлодіодами, і .. подивимося, що ще ми нафантазіруем

Я запускаю програму Flowcode для AVR

Рис 211 Запуск програми Flowcode 4 для AVR

На загальному тлі робочого поля програми зявляється діалогове вікно вибору: створення нового проекту або вибір вже існуючого Я вибираю створення нового проекту, залишаючи все так, як зображено вище Зявляється наступне вікно діалогу: вибір моделі мікроконтролера

Рис 212 Діалогове вікно вибору МК

Модулі Arduino створюються на різних моделях контролерів фірми Atmel (можливо, колишньої) Мій модуль створений на базі Atmega168 Цю модель я і вибираю Натискаю кнопку ОК Ви можете вибрати свою модель МК Або використовувати програму для роботи з PIC-контролером Від цього мало що зміниться В зявилася заготівлі для програми я починаю з вибору програмного елемента «Цикл (loop)» Всі програмні елементи знаходяться (за замовчуванням) на лівій панелі, при наведенні на них курсора вони підказують свого призначення

Чому вибір починається з програмного елемента «Цикл» І що таке цикл Будь-яка програма – це набір команд або операцій Частина цих команд може повторюватися багато разів Щоб не переписувати їх багато разів, програмісти і придумали таку конструкцію, як цикл, коли, виконавши останню команду в блоці, програма перевіряє умова виконання циклу, і якщо умова виконується, повертається до першої команди в блоці циклу, інакше виходить з циклу

Є кілька різновидів циклів Одні з них повторюються задану кількість разів Зручно, коли ви точно знаєте, що потрібно виконати блок команд стільки-то разів Такий цикл називають рахунковим

Є цикл повторення до виконання умови, яке може перевірятися на початку циклу, є цикл, коли умова повторюється в кінці блоку циклу Різниця в тому, що в першому випадку блок циклу може не повторитися жодного разу, в другому обовязково повториться хоча б один раз

У нашому випадку умова завершення циклу ніколи не виконується

Рис 213 Початок роботи над програмою

Навіщо ж нам цикл з умовою завершення циклу, якщо умова ніколи не виконується

Справа в тому, що мікроконтролери, як правило, працюють в нескінченному циклі очікування Очікування якоїсь події А цикл, умова завершення якого ніколи не виконується, і є нескінченний цикл

Рис 214 Використання циклу

Якщо двічі клацнути по елементу «Цикл»Або вибрати з меню, що випадає властивості циклу, то зявиться діалогове вікно налаштування циклу На малюнку виділено, чи буде умова перевірятися на початку або в кінці блоку, і, якщо поставити галочку у вікні «Кількість циклів: », то цикл стане рахунковим Поки нам це не потрібно, але коли знадобиться, ми будемо знати, як це зробити

Ви памятаєте, як була «зібрана» програма для нескінченного повторення імпульсів з заданими параметрами Я збираюся її повторити З невеликою різницею Я додам змінну, яка управлятиме тривалістю пауз Практично в будь-якій програмі є змінні Вони грають роль «носильників», що переносять дані з одного місця програми в інше

Є декілька можливостей для додавання змінних в програму Найбільш очевидний варіант виглядає наступним чином Вибираємо в основному меню пункт «Правка (Edit)» Знаходимо розділ «Змінні»

Рис 215 Створення нової змінної в програмі

Клацаємо з цього розділу, відкриваючи діалогове вікно створення змінної

Рис 216 Діалогове вікно створення змінної

Наступний крок ви бачите самі Натискаємо на кнопку Додати нову .. і переходимо до вибору типу змінної і завданням імені

Рис 217 Вікно завдання імені і визначення типу змінної

Кожна змінна повинна мати своє унікальне імя На імя розрізняються всі змінні Залежно від властивостей транслятора з мови високого рівня змінна може мати максимально допустиму кількість символів Як правило, вони можуть мати літерні символи, цифрові символи і символ підкреслення

Тип змінної визначає, скільки елементів памяті потрібно для даної змінної А це визначає, який тип даних може зберігати така змінна Для змінної типу байт (Byte) досить одного осередку памяті У ній можуть зберігатися такі змінні, як «прапори», що вимагають одного біта, можуть зберігатися символьні змінні, як ті, що ми вводимо з клавіатури (латиницею) і тп Мінлива цілого типу (int) займає два байти в памяті і призначена для зберігання і перенесення цілих чисел в діапазоні, який ви бачите на малюнку

Обєм памяті у мікроконтролерів, з якими ми будемо мати справу, обмежений Тому не слід вибирати для змінних надлишковий тип зберігання даних, і не слід «плодити» змінні без необхідності

Задавши імя змінної, натиснувши кнопку ОК, Ми повертаємося в діалог створення змінної, де можемо натиснути кнопку Закрити (Close)

Багато середовища програмування використовують механізм завдання значення змінної «за замовчуванням», тобто, якщо ви явним чином не задані значення, то змінної присвоюється нульове значення У нашому випадку ми повинні задати значення явним чином І поставити його до того, як змінна буде працювати в нескінченному циклі Для цієї операції, її в

програмуванні називають операцією привласнення, в програмі Flowcode є програмна конструкція, звана «Обчислення»

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

Коли ми в циклі задаємо умова завершення циклу, то дуже часто це умова повязана із збільшенням на одиницю (increment) або зменшенням на одиницю (decrement) змінної, яку називають індексом Операцію инкремента або декремента здійснюють у цієї програмної конструкції

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

Рис 218 Програмний елемент для операції привласнення

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

Рис 219 Введення обчислень у вікні редактора елемента Обчислення

У даному випадку операція – це привласнення змінній значення У різних мовах програмування для цієї операції використовують різні символи У мові Сі, як і тут, використовується знак рівності У мові Паскаль використовують два символи «: =» двокрапка і знак рівності

Присвоївши значення змінної, ми можемо повторити програму, з якою вже мали справу З однією відмінністю замість пауз з фіксованим часом, ми використовуємо паузи, яким присвоїмо значення нашої змінної

Для установки виводу порту в одиницю використовується елемент «Вихід (Output) », який ми також мишкою переносимо в потрібне місце програми

За умовчанням цей програмний елемент встановлює рівень 0 для всіх висновків порту А

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

Нам потрібно використовувати тільки один висновок, а не весь порт, і порт нам потрібен інший

Рис 2110 Додавання елемента виводу в програму

На малюнку нижче показані всі необхідні зміни

Рис 2111 Діалогове вікно зміни властивостей виведення даних

Далі додаємо затримку (елемент «Затримка (Delay) »), Але замість числа, що ми робили минулого разу, ми використовуємо змінну Для цього є кнопка Змінні (На малюнку виділена), де в діалоговому вікні можна вибрати змінну, якщо їх багато

Імя змінної можна вписати і вручну Але краще використовувати діалог, оскільки вписуючи імя змінної з клавіатури, можна помилитися Хоча в цьому випадку, швидше за все, програма вкаже вам на помилку

Вибравши змінну, натискаємо на кнопку Використовувати При цьому може виникати невелика помилка: при додаванні імені змінної в текстовому вікні може залишитися числове значення, задане за замовчуванням Його, звичайно, слід видалити, як ми видаляємо непотрібні слова в текстовому редакторі

Рис 2112 Додавання часу затримки як змінної

Повторюючи додавання блоків Вихід і Затримка, Де в блоці виведення міняємо одиницю на нуль, ми приходимо до програми, яка мало відрізняється від тієї, що ми використовували раніше

Рис 2113 Програма з використанням змінної

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

Рис 2114 Додавання лінійки світлодіодів

Ці світлодіоди зявляться на панелі Але їх ще потрібно зєднати з портом За замовчуванням лінійка світлодіодів привязана до порту А Це треба змінити Виділивши клацанням мишки світлодіоди, звернемося до вікна властивостей, де є розділ підключення

Рис 2115 Налагодження підключення світлодіодів

Клацанням мишки поруч (як зазначено на малюнку) з розділом «Підключення»Відкривається діалогове вікно, в якому можна налаштувати всі зєднання І тепер можна запустити симуляцію програми

Це перший, пробний запуск, який показує, що якось програма працює, тобто, світлодіод блимає

У більш складних програмах можна скористатися режимом покрокової налагодження Коли нам знадобиться це зробити, ми повернемося до питання покрокової налагодження

Рис 2116 Запуск моделювання програми Програма працює Але чи всі ми зробили

Ми вже говорили про конфігурацію мікроконтролера, яка визначається словом конфігурації, де встановлюються біти (фьюз) або знімаються біти, задаючи потрібний режим роботи

Задати конфігурацію можна в розділі основного меню:

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

Те як виглядає слово конфігурації, можна дізнатися з datasheet (довідкового листка)

Рис 2117 Розділ завдання конфігурації мікроконтролера

Використовуючи розділ «Конфігурація», ви отримуєте доступ до вікна редагування

Рис 2118 Вікно завдання конфігурації мікроконтролера

Якщо ви знаєте, що робите, можете записати нові значення, якщо ні, залиште те, що задано

«За замовчуванням» Немає повної впевненості в правильному налаштуванні, але є надія, що це не перешкодить вам у подальшій роботі, що не доведеться зясовувати, як повернути доступ до програмування контролера

Чи всі тепер готове до продовження дослідів

Ні Є ще одна необхідна настройка, тісно повязана з тимчасовими інтервалами, використовуваними в програмі Програма обчислює часи по заданій тактовій частоті Цю частоту теж потрібно встановити

Рис 2119 Завдання тактової частоти МК

Цей розділ налаштування відкриває діалогове вікно, в якому можна вибрати (використовуючи кнопку зі стрілкою поруч із вікном), а можна просто вдрукувати, якщо потрібної частоти немає в списку, що випадає значень

Рис 2120 Діалогове вікно вибору тактової частоти Тепер є надія, що ми готові до першій перевірці

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012