Безкоштовна технічна бібліотека ЕНЦИКЛОПЕДІЯ РАДІОЕЛЕКТРОНІКИ ТА ЕЛЕКТРОТЕХНІКИ Інтерфейс PIC-контролера з комп'ютером. Енциклопедія радіоелектроніки та електротехніки Енциклопедія радіоелектроніки та електротехніки / Мікроконтролери При розробці пристрою на мікроконтролері (МК) нерідко виникає проблема його зв'язку з комп'ютером обмінюватись інформацією. Найчастіше потрібен двонаправлений режим при порівняно низької швидкості обміну. У кращому випадку МК може мати послідовний інтерфейс, але найчастіше його доводиться вибирати з дешевих, не оснащених таким інтерфейсом. Наприклад, дуже популярний останнім часом МК PIC16F84A фірми Microchip такого інтерфейсу не має. У статті розглядається варіант програмної реалізації послідовного інтерфейсу як з боку МК, і з боку комп'ютера. Для зв'язку з пристроєм на МК можна використовувати паралельний (LPT) чи послідовний (СОМ) порт комп'ютера. З першим працювати простіше - у ньому можна використовувати відносно більше вхідних і вихідних сигналів, рівні яких сумісні з ТТЛ. Недоліком цього порту і те, що й під DOS чи Linux його використання досить простих операцій вводу/вывода, то коректної роботи під Windows необхідно суворе дотримання протоколу передачі, що з роботі з МК не ефективний. Можливе пряме керування окремими лініями LPT порту, але для цього потрібне встановлення спеціального драйвера. "Недоліком" LPT порту можна вважати те, що в більшості комп'ютерів він лише один і, як правило, зайнятий принтером. Головні переваги СОМ порту в тому, що стандартний програмний інтерфейс Windows (API) дозволяє безпосередньо керувати деякими вихідними лініями та контролювати вхідні, а також має функцію очікування певної події, пов'язаної з портом СОМ. Його гідність і в тому, що стандарт RS-232, за яким виконані порти СОМ, допускає підключення і відключення кабелів під час роботи пристроїв (hot plug). До того ж, майже завжди в комп'ютері є вільний СОМ порт. Недолік порту - відмінний від ТТЛ рівень сигналів, у якому низькому логічному рівню відповідає напруга -12, а високому - +12. Реалізація стандартного інтерфейсу RS-232 зажадала від МК точного дотримання часових інтервалів між сигналами, що видаються. У реальній ситуації кварцовий резонатор мікроконтролера може відповідати частоті передачі, а сам МК зазвичай зайнятий чимось важливішим, ніж формування точних часових інтервалів. В результаті виявляється простіше програмно реалізувати послідовний синхронний варіант обміну, коли кожен біт даних підтверджується імпульсом синхронізації. Принципова схема пропонованого інтерфейсу показано на рис. 1. Для перетворення рівнів RS-232 ТТЛ використовуються резистивні дільники R1R4 і R2R5. Діоди VD1 і VD2 необхідні для того, щоб не пропускати негативну напругу, що відповідає логічному нулю. Вихідний ТТЛ сигнал МК перетворення не потребує і може бути поданий на вхідні лінії СОМ порту безпосередньо. Резистор R3 обмежує вихідний струм МК при можливому випадковому короткому замиканні. Як видно зі схеми, для зв'язку з комп'ютером потрібні чотири дроти. Комп'ютер ініціює обмін даними, видаючи синхронізуючі імпульси в лінію DTR, виставляючи при цьому на лінії RTS передані дані та отримуючи по лінії CTS прийняті. Змінювати дані комп'ютер та МК можуть лише за низького логічного рівня сигналу синхронізації. Такий варіант реалізації інтерфейсу дозволяє реалізувати дуплексний режим передачі. Номери контактів XS1 на схемі вказані для розетки DB-25F під час використання стандартного модемного кабелю. Номери контактів для інших роз'ємів та при використанні нуль-модемного кабелю наведені в табл. 1. Частота проходження синхронізуючих імпульсів повинна вибиратися такою, щоб МК гарантовано встигав обробляти дані від комп'ютера, реагуючи на кожен імпульс, що синхронізує. Інформаційні біти передаються послідовно. Після закінчення передачі бітів одного байта слідує передача бітів наступного, причому першим передається старший інформаційний біт. Для приведення інтерфейсу у вихідний стан (установка номера байта, що передається в 0) комп'ютер повинен при лог. 1 на лінії синхронізації змінити стан даних. МК видає новий біт даних лінії CTS по спаду імпульсів позитивної полярності на вході синхронізації DTR, а зчитує дані з лінії RTS по фронту імпульсів позитивної полярності. Обмін можна перервати будь-якої миті, припинивши подачу імпульсів синхронізації. Тимчасова діаграма обміну даними наведено на рис. 2. При реалізації інтерфейсу рекомендується в деяких байтах передавати контрольні значення для перевірки правильності даних, що передаються. Вихідний код процедури для МК PIC16F84A [1] мовою С, що реалізує пропонований інтерфейс, наведено в табл. 2. Виклик процедури link() перебуває у основному циклі програми і під час роботи МК викликається постійно у тому, щоб контролювати стан інтерфейсу. Усі змінні, які використовуються процедурою, оголошені як глобальні. При кожному викликі вона зчитує стани вхідних ліній інтерфейсу (RB6 та RB7) та порівнює з їхніми станами при попередньому викликі. За деяких умов (спад синхронізації, фронт синхронізації, скидання інтерфейсу) виконуються дії згідно з логікою роботи інтерфейсу. Вихідний код процедури для комп'ютера мовою Pascal (Delphi) наведено у табл. 3. Тут процедура link одноразово викликається щодо акта обміну інформацією з МК. Перед її викликом необхідно заповнити буфер obuf, що передається. Після закінчення процедури прийняті дані будуть перебувати в масиві ibuf. Процедура відкриває вказаний СОМ порт комп'ютера та за допомогою функцій Windows API [2] керує станом вихідних ліній та опитує вхідні. Після завершення обміну інформацією порт закривається. У процедурі link тимчасові затримки реалізовані з допомогою функції sleep(). Їх значення розраховують чи підбирають експериментально за відсутністю втрати біт під час обміну даними між МК і комп'ютером. У прикладі вказані затримки для обміну з PIC-контролером з кварцовим резонатором на частоту 4 МГц, який, крім того, здійснює й іншу корисну роботу. Якщо процедура обміну виконується надто довго, її допускається виносити в окрему нитку виконання операційної системи, щоб вона виконувалася паралельно до основної програми [2]. Якщо при обміні інформацією потрібні окремо читання і запис, можна рознести за різними адресами масиви даних, що передаються і приймаються, як показано на рис. 2. У МК формування переданих даних та використання прийнятих зручно побудувати у вигляді процедур upload() і download(), що викликаються перед передачею і прийому чергового байта відповідно. Перша з них повинна повертати значення переданого байта за його номером у пакеті інформації, що передається, друга отримує значення прийнятого байта і його номер у пакеті і повинна використовувати ці значення для зміни регістрів МК, запису в EEPROM та ін Реалізація цих процедур для обробки інформаційного пакета розміром 4 байти (табл. 4) показано в табл. 5. Приклад програми МК наведено для компілятора С2С [3]. Процедура комп'ютера може бути використана в програмі, написаній на Borland Delphi 3 і вище. література
Автор: С.Кулешов, м.Курган Дивіться інші статті розділу Мікроконтролери. Читайте та пишіть корисні коментарі до цієї статті. Останні новини науки та техніки, новинки електроніки: Машина для проріджування квітів у садах
02.05.2024 Удосконалений мікроскоп інфрачервоного діапазону
02.05.2024 Пастка для комах
01.05.2024
Інші цікаві новини: ▪ Високовольтні інтелектуальні силові модулі з підвищеним допустимим навантаженням по струму ▪ Кроманьйонець був розумніший за нас ▪ Мобільний телефон без батареї Стрічка новин науки та техніки, новинок електроніки
Цікаві матеріали Безкоштовної технічної бібліотеки: ▪ Розділ сайту Електродвигуни. Добірка статей ▪ стаття Дари данайців. Крилатий вислів ▪ стаття Що називали суботником до приходу радянської влади? Детальна відповідь ▪ стаття Вихід із ПК на навушники. Енциклопедія радіоелектроніки та електротехніки ▪ стаття Простий стабілізатор напруги на 45 вольт. Енциклопедія радіоелектроніки та електротехніки
Залишіть свій коментар до цієї статті: All languages of this page Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт www.diagram.com.ua |