Світ електроніки - прості проекти на avr мікроконтролерах

Прості програми для мікроконтролерів самостійно. світлофор

У першій частині статті ми зробили симулятор для нашого майбутнього проекту, тепер будемо складати прошивку. А для цього ми будемо використовувати програму Flowcode AVR v4.3.6.61. Чому будемо використовувати застарілу версію? Та тому що сама програма грошей коштує, а на більш старі версії можна спокійно і кейгени знайти.

Ну, загалом, поїхали.

Пишемо керуючу програму за допомогою Flowcode AVR v4.3.6.61

Запускаємо Flowcode AVR v4.3.6.61. Вибираємо "create a new flowcode flowchart", в меню прокруткою вибираємо тип мікроконтролера, нам потрібен "Attiny13" (ріс18,19,20). Далі з'являється вікно програми з панелями. У випадаючому меню «файл» вибираємо «зберегти як», і вказуємо шлях до створеної нами папці в кореневому каталозі диска "myproject", називаємо файл його ім'ям на англійській розкладці клавіатури "svetofor". І ми готові до написання алгоритму програми.

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

опис Flowcode

Перша інструментальна панель - це панель команд


Нижче розташована друга панель інструментів.


На ній розташовано багато всяких пристроїв, для підключення до портів мікроконтролера (рис.22).

Взагалі я додаю до статті "help" російською мовою по роботі з цією програмою, якщо що, то заглядайте туди, (правда переклад там смішний, але розібратися можна).

Далі давайте визначимося з алгоритмом роботи світлофора і опишемо його словами:
1. Горить червоне світло і горить, наприклад - 5 секунд (не смійтеся, у нас же все - таки не справжній світлофор з перехрестя);
2. Горить жовтий на 2 секунди (червоний при цьому не гасне);
3. гасне червоний і жовтий;
4. Спалахує зелений на 5 секунд;
5. Зелений блимає 3 рази;
6. гасне зелений;
7. Горить жовтий на 2 секунди;
8. гасне жовтий;
9. Повтор пункту 1 (або кінець циклу).

Тепер цей алгоритм потрібно нам запрограмувати в наш мікроконтролер.

Налаштуємо виходи мікроконтролера, для цього на другий інструментальної панелі вибираємо «виходи» і «LED», на панелі бачимо додався наш світлодіод (ріс.23,24).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Кликнемо на світлодіоді правою кнопкою. виберемо «розширені властивості» (ext properties), виберемо колір, розмір, і активний рівень (згадаємо нашу модель в протеус, світлодіоди підключили із загальним катодом, а значить активний рівень вибираємо високий) (ріс.25,26). Тепер ще раз кликнемо правою кнопкою на ньому і виберемо "connections" (згадаємо модель в протеус, у нас червоний порт - В0, жовтий - В1, зелений - В2.) (Ріс.27,28).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Таким чином підключаємо всі три наші світлодіода (рис.29).

Світ електроніки - прості проекти на avr мікроконтролерах

Тепер у нас є чим керувати програмно.

На картатому тлі бачимо два пов'язаних елемента алгоритму, вони незмінно присутні завжди. Без них ніяк не можна це "BEGIN" і "END", тобто початок і кінець виконання програми. Оскільки мікроконтролери AVR виконують програму від початку і до кінця, то виконавши «тіло програми» він дійде до "END" і зупиниться. Нам цього не потрібно, світлофор адже повинен працювати весь час, поки його не відключать.

Для цього встановимо нескінченний цикл виконання нашої майбутньої програми. Для цього в першій панелі інструментів знаходимо значок "Loop", що означає цикл, і перетягуємо цей значок на місце, між "BEGIN" і "END" (рис.30).

Світ електроніки - прості проекти на avr мікроконтролерах

Тепер в тілі цього циклу і будемо здійснювати наш алгоритм. Першим пунктом у нас йде - включити червоне на 5 секунд. Перетягуємо значок "component macro" що значить макрос компонента, а компонент у нас це наш червоний світлодіод (до речі у нього є ім'я, він у нас LED0, це можна подивитися якщо на ньому клікнути і подивитися в панель властивостей - "property" (рис. 31,32).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Далі, два рази клікнувши по значку «макрос компонента» вибираємо LED0 і ON, що означає - включити світлодіод 0 (рис.33).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Червоний повинен горіти 5 секунд, є значок "DELAY" що значить затримка (пауза), перетягнемо його і в його властивостях вкажемо одиницю часу (с), і їх кількість (5) (рис.35).

Світ електроніки - прості проекти на avr мікроконтролерах

Пунктом 2 у нас йде включення жовтого на 2 секунди, при цьому червоному не гасне. Знову: макрос компонента LED1 (він у нас жовтий), вибираємо LED1, ON, далі DELAY. виставляємо 2 і одиниці виміру - секунди (рис.36).

Світ електроніки - прості проекти на avr мікроконтролерах

Далі пункт 3, гасне червоний і жовтий. І пункт 4, загоряється зелений на 5 секунд. Перетягуємо: макрос компонента. LED0, OFF (вимкнули червоний), макрос компонента, LED1, OFF (вимкнули жовтий), знову макрос компонента. LED2, ON (включили зелений). Далі перетягнемо DELAY, 5 sec. (Мал.37).

Світ електроніки - прості проекти на avr мікроконтролерах

Пунктом 5, у нас зелений блимає 3 рази, тобто гасне потім пауза, загоряється, пауза, і знову гасне. Тут трохи подумаємо, чи варто переписувати одні й ті ж дії 3 рази? Звичайно ж ні. Використовуємо цикл, перетягнемо його і кликнемо по ньому два рази. Поставимо галочку на LOOP COUNT (що означає кількість циклів), поставимо в поле потрібне нам кількість - це 3 циклу (мал.38). Для наочності візьмемо паузу між включенням і вимиканням зеленого 0.5 секунди (або 500мс.). Перетягуємо тепер в тіло нашого триразового циклу: макрос компонента LED2, OFF, далі DELAY, 500 ms, LED2, ON, і DELAY, 500ms. (Рис.39).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Далі пункт 6, вимикаємо зелений. Пункт 7 включаємо жовтий на 2 секунди. Пункт 8 - вимикаємо жовтий. (LED2, OFF; LED1, ON; DELAY, 2 sec .; LED1, OFF). Думаю, що такий запис Вам буде зрозуміла, оскільки ці дії виконувалися вже неодноразово (рис.40).

Ну от і все. Ми написали алгоритм програми управління світлофором. Давайте перевіримо, що у нас вийшло. Для цього у спадному меню "view" виберемо "project option", відкриється вікно опцій проекту. Встановимо тактову частоту мікроконтролера 4800000 Гц. (Це потрібно для правильного розрахунку пауз), і швидкість симуляції, в даному випадку "fast as possible" (ріс.41,42).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Приступимо тепер до компіляції проекту. У випадаючому меню "chip", вибираємо "compile to hex". З'являється вікно компілятора, і індикація його роботи (рис.43).

Світ електроніки - прості проекти на avr мікроконтролерах

Має вийти так як на картинці, якщо "Return code = 1", перевіряємо шлях до файлу проекту. Нагадаю що назви всіх папок в дорозі від кореневого каталогу і файлу повинна складатися тільки з латинських символів. Інакше компілятор буде видавати помилку (ріс.44).

Світ електроніки - прості проекти на avr мікроконтролерах

Відкриваємо папку з проектом, і дивимося на наш HEX файл прошивки (ріс.45,46).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

А ось і наш Сі файл (ріс.47,48).

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

А це алгоритм роботи програми

Світ електроніки - прості проекти на avr мікроконтролерах

Світ електроніки - прості проекти на avr мікроконтролерах

Власне отримана нами прошивка (код).

Світ електроніки - прості проекти на avr мікроконтролерах

І програма на СІ (знаходиться в архіві нижче).

Тепер повертаємося до нашого проекту в Proteus professional. Нам потрібно перевірити, чи функціонує яку ми здобули код в моделі створеного нами пристрою, чи ні. Для цього відкриваємо наш файл svetofor.DSN (він у нас в папці myproject), робимо подвійний клік на мікроконтролері, відкриється вікно його властивостей (ріс.50), так звані фьюз поставте такі як на малюнку (WDTON = 1; CLKDIV8 = 1; RSTDISBL = 1; CKSEL = 10; SUT = 10).

Світ електроніки - прості проекти на avr мікроконтролерах

Виберіть шлях до "Program file" натиснувши на кнопку з папкою (вкажіть шлях до нашого HEX файлу) (ріс.51).

Світ електроніки - прості проекти на avr мікроконтролерах

Натискаємо кнопку трикутник внизу (відтворити), і насолоджуємося роботою схеми.

Світ електроніки - прості проекти на avr мікроконтролерах

Схожі статті