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

Хоча перші кроки краще зробити з найпростішими програмами, навіть початківці швидко переходять до завдань досить складним Тому крім оволодіння прийомами створення програм у Flowcode я настійно рекомендую познайомитися і з мовою програмування Сі і з асемблером Програма Flowcode дозволяє робити вставки на мові Сі, це та причина, по якій зайшла мова про це мовою, хоча можна цілком успішно писати програми для мікроконтролерів на мові, скажімо, Basic Знайомство з асемблером, так само як і конкретною моделлю мікроконтролера з його опису, позбавить вас від відчуття, що є щось за межами ваших знань, в чому і прихований успіх роботи Успіх будь-якої роботи в постійній практиці і постійному поповненні знань

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

Розглянемо деякі нововведення цієї версії на прикладі простого рішення: спілкування двох мікроконтролерів Передумова для цього пристрою у відсутності багатозадачності в МК Що це означає

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

Робота з датчиком відстані – це друга задача Можна, звичайно, включити одну з задач в другу, але ми виберемо інше рішення: нехай одну задачу, рух, виконує мікроконтролер PIC16F887 (як у ROBOPICA), а іншу задачу, стежити за перешкодою, виконує другий мікроконтролер PIC16F628A Обидва контролера ми звяжемо по USART, і, коли другий контролер виявить перешкоду, він відправить сигнал першого контролеру, який змінить

«Шпаруватість» мигання світлодіода Ось таку просту задачу ми постараємося вирішити і налагодити в програмі Flowcode

Спочатку напишемо програму для другого контролера: коли натиснута кнопка, контролер відправляє символ «1»

Запускаємо програму, вибравши контролер PIC16F628A:

Рис Б1 Робоче вікно програми Flowcode 5

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

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

Додамо кнопку і модуль RS232 для реалізації програми Кнопка знайдеться в групі «Входи»:

Рис Б2 Додавання кнопки

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

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

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

Рис Б3 Програма перевірки роботи кнопки

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

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

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

Рис Б4 Симуляція роботи програми в Flowcode

Але перевірка в програмі ISIS не дає очікуваного результату:

Рис Б5 Перевірка програми в Proteus

Вихід RA0 залишається у високому стані незалежно від стану кнопки Додаю вставку на мові Сі в програму (потрібно скинути сьомий біт в регістрі OPTION) Щоб використовувати режим покрокової налагодження, міняю кнопку без фіксації на стопорящую (у її властивостях) Попутно зазначу, що в цій версії у вікно спостереження за змінними можна додати і порти Дії, як і в попередніх версіях, прості – клацання правою клавішею мишки у вікні спостереження при початку налагодження, вибір змінної або порту, при цьому змінні можуть бути і глобальними, і локальними:

Рис Б6 Додавання портів для спостереження в режимі покрокової налагодження

Після налагодження програми можна переконатися, що вставка на мові Сі потрібна Після додавання вставки:

Рис Б7 Перевірка роботи програми в ISIS

Тепер ненадовго повернемося до первісного вигляду програми Я хочу використовувати макроси для читання стану кнопки виведення результату на світлодіод При читанні стану кнопки використовується змінна Додавши макрос читання, вибираємо змінну (в даному випадку створюємо нову):

Рис Б8 Створення нової змінної Виглядає програма так:

Рис Б9 Вид програми з використанням макросів

Але при налагодженні в Flowcode програма працює трохи дивно, що я відніс би до розряду глюків Зате в ISIS це працює правильно:

Рис Б10 Робота програми в Proteus

Пора приступити до основної програми для цього контролера Створюємо новий проект, заходимо в розділ основного меню Чіп-> Настройки проекту Тепер і вибір частоти тактового генератора, і завдання слова конфігурації відбувається в одному місці

Рис Б11 Налаштування проекту

Я налаштовую конфігурацію так, щоб слово конфігурації було 3F18 Однак додавання модуля RS232 прояснює, що цей модуль не входить до складу обмежень демо-версії Шкода, оскільки не працюватиме і мережеве зєднання двох мікроконтролерів

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

Хочеться ще додати, що в новій версії розширено кількість типів даних Щелкнем в навігаторі проекту по розділу Змінні правою клавішею мишки і виберемо додавання нової змінної:

Рис Б12 Нові типи змінних в Flowcode 5

Зручніше стало працювати з текстом на мові Сі після трансляції програми Можливо, в повній версії можна розділити вікно програми, щоб цей текст був постійно в полі зору

Рис Б13 Текст програми на мові Сі

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

Коли у властивостях переривання задається зріз імпульсу, що викликає це переривання, то при симуляції висновок відображає, яким зрізом, фронтом або спадом, викликається переривання

Рис Б14 Налаштування переривання

Чи не найголовніше, але корисне нововведення

Рис Б15 Поведінка виведення переривання при налагодженні

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

Рис Б 16 Меню, що випадає роботи з програмним блоком Відключений блок змінює свій вигляд:

Рис Б17 Відключення блоку програми

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

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