Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архітектура методичка.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
20.71 Mб
Скачать

92. Програмування послідовного зв’язку

З дванадцяти регістрів тільки шість необхідні для простого послідовного зв'язку. Регістр зберігання передавача містить байт даних, які будуть надіслані, а регістр даних приймача - останній отриманий байт даних. Регістри управління і статусу лінії ініціалізують і управляють лінією зв'язку, використовуючи швидкість обміну, що міститься в двох регістрах дільника швидкості обміну. З решти регістрів регістри управління та статусу модему використовуються тільки для зв'язку через модем, регістр управління FIFO-буфером при його використанні, а два регістри, пов'язаних з перериваннями використовуються тільки в процедурах, керованих перериваннями.

Переривання використовуються при зв'язку з метою ефективності. Звичайна комунікаційна процедура безупинно перевіряє регістр статусу лінії, очікуючи вводиться символу або вказівки, що все готово для передачі наступного байта даних. Оскільки процесор працює набагато швидше, ніж звичайні швидкості з якими передаються послідовні дані, то цей метод дарма витрачає процесорний час, який може використовуватися для обробки вступників або переданих даних. З цієї причини мікросхема UART може бути встановлена ​​в режим, що викликає переривання при появі символу, виникненні помилки і т.п. Це переривання моментально викличе процедуру Вашої програми, яка, скажімо, буде передавати наступний символ з комунікаційного буфера.

При програмуванні послідовної зв'язку необхідно виконати наступні етапи:

- Ініціалізація послідовного порту;

- Передача даних по лінії з використанням модему або без модему згідно з прийнятим протоколу передачі.

- Роз'єднання лінії.

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

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

Апаратний протокол управління потоком RTS / CTS використовує сигнал CTS, який дозволяє зупинити передачу даних, якщо приймач не готовий до їх прийому. Передавач передає черговий байт тільки при включеному стані лінії CTS. Байт, який вже почав передаватися, затримати сигналом CTS неможливо (це гарантує цілісність посилки). Апаратний протокол забезпечує найшвидшу реакцію передавача на стан приймача. Зазвичай мікросхеми асинхронних приемопередатчиков мають не менше двох регістрів в приймальні частини - зсувний для прийому чергової посилки і зберігає, з якого прийнятий байт зчитується. Це дозволяє реалізувати обмін з апаратним протоколом без втрати даних, не вдаючись до програмної буферизації.

Апаратний протокол зручно використовувати при підключенні принтерів і плоттерів, якщо вони підтримують цей режим. При безпосередньому (без модемів) з'єднанні двох комп'ютерів апаратний протокол вимагає перехресного з'єднання ліній RTS - CTS.

Програмний протокол управління потоком XON / XOFF припускає наявність двунаправленного каналу передачі даних. Працює він таким чином: якщо пристрій, що приймає дані, виявляє причини, з якою вона не може їх далі приймати, воно по зворотному послідовному каналу посилає байт-символ XOFF (13h). Протилежна пристрій, прийнявши цей символ, припиняє передачу. Далі, коли приймаючий пристрій знову стає готовим до прийому даних, воно посилає символ XON (llh), прийнявши який протилежне пристрій відновлює передачу. Час реакції передавача на зміну стану приймача в порівнянні з апаратним протоколом збільшується принаймні на час передачі символу (XON або XOFF) плюс час реакції програми передавача на прийом символу. З цього випливає, що дані без втрат можуть прийматися тільки приймачем, що мають додатковий буфер прийнятих даних і сигналізує про неготовність завчасно (маючи на буфері вільне місце).

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

Крім цих двох поширених стандартних протоколів, що підтримуються і пристроями, і операційними системами, існують і деякі інші. Наприклад, деякі плоттери з послідовним інтерфейсом використовують програмне керування, але посилають не стандартні символи ХОТ ^ / ХСОТ, а слова (А8СІ-рядка). Такий обмін на рівні системної підтримки протоколу практично не підтримується (ці плоттери розраховані на прямий діалог з прикладною програмою).

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