Одні моделі мікроконтролерів мають кілька інтерфейсів послідовного обміну даними, як ATmega168, модель, що має USART, SPI і 2-wire інші моделі можуть мати тільки USART, треті не мають модуля для послідовного обміну

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

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

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

Напишемо програму для передавального мікроконтролера, припускаючи спілкування двох однакових PIC16F628A

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

Додаємо інтерфейс RS232 (Комунікації-RS232) А в програму додаємо розгалуження з умовою: якщо inp = 0 У цьому випадку відправимо команду Щоб відправити команду додаємо макрос компонента, у властивостях якого вибираємо RS232(0) і команду SendRS232Char У вікні параметрів вводимо символ 1 . Це і буде наша команда

Задавши слово конфігурації (я вибираю 0x3F18, коли відключено все непотрібне і використовується внутрішній тактовий генератор) і, вибравши частоту 4 МГц (Вид-Настройки проекту), можна транслювати програму в hex-файл

Рис 2520 Програма відправлення команди через USART

Остаточну перевірку ми зробимо в програмі ISIS, але попередньо можна перевірити працездатність програми в Flowcode Для цього запустимо налагодження (кнопка програвання на інструментальній панелі), натиснемо кнопку зі значком плюс для віконця Characters in queue, Щоб додати в запит 1 Все це ми проробили на Панелі у вікні інтерфейсу RS232

Тепер натискаючи кнопку, ви можете бачити, як зявляються одиниці у вікні Characters sent

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

Рис 2521 Відправка команди

Тепер створимо програму прийому команди Всі операції аналогічні тим, що ми робили в попередній програмі: цикл, в якому доданий макрос компонента, додавання RS232 і світлодіода для зєднання його з виходом А0

Рис 2522 Програма прийому команди

У макросе ми вибираємо команду прийому символу

Рис 2523 Налаштування властивостей компонентного макросу

Змінну command, Ми, звичайно, створюємо Налаштовуємо конфігурацію мікроконтролера (точно так само, як і в попередньому випадку) і транслюємо програму в hex-файл Світлодіод (у властивостях) зєднуємо з виведенням А0 Перевіряємо роботу програми

Відправляючи одиницю (через вікно запиту), ми запалюємо світлодіод

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

Рис 2524 Перевірка програми

А тепер подивимося, як перевірити обидві програми в ISIS (Proteus)

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

У робочий поле додаємо два мікроконтролера – один буде відправляти команду, другий приймати її

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

У програмі ISIS є віртуальний термінал, який доданий в схему Висновок передавача другого контролера зєднаний з приймачем першого і з висновком приймача терміналу Коли ми натискаємо кнопку, світлодіод, як ми і планували, загоряється Правда термінал трохи

«Подвірает», відображаючи шістнадцяткове число 21, хоча повинно було бути 31

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

Рис 2526 Діалогове вікно властивостей терміналу

Швидкість обміну 2400 не надто велика, але в дуже багатьох випадках її достатньо Якщо потрібна швидкість вище, то не вийде використовувати внутрішній тактовий генератор, треба додати кварцовий резонатор на 20 МГц, два конденсатора і налаштувати роботу мікроконтролера на вищій швидкості обміну даними

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

Рис 2627 Вибір налаштувань екрану терміналу

І останнє, дуже корисно в якості вправи перевірити роботу двох мікроконтролерів в самій програмі Flowcode

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