і за адресами 3E8h і 2E8h. Нумерація знайдених портів, що відображається в заставці, іноді може вводити в помилку: наприклад, якщо встановлено два порти з адресами 3F8h і 3E8h, в заставці вони можуть називатися як СОМ1 і COM2, і по цих іменах на них можна посилатися при звертаннях. Проте ті ж порти в заставці можуть називатися і як СОМ1 і COM3 (оскільки 3E8h є штатною адресою для COM3), але спроба при звертаннях послатися на порт COM3 буде невдалою, оскільки в даному випадку адреса 3E8h буде знаходитися в комірці 0:402h BIOS DATA AREA, відповідній порту COM2, а в комірці порту COM3 (0:404h) буде нуль – ознака відсутності такого порту. «Пояснити» системі, де який порт, можна і вручну будь-яким відладчиком, занісши правильні значення базових адрес в комірки BIOS DATA AREA (але це доведеться робити кожного разу після перезавантаження ОС перед використанням «втраченого» порту). Існують тестові утиліти, що дозволяють знаходити порти і без відладчика (наприклад, Port Finder).
Якщо двом портам призначена одна і та ж адреса, тестова програма знайде помилки порту тільки з використанням зовнішньої заглушки (External Loop Back). Програмне тестування порту без заглушки не покаже помилок, оскільки при цьому включається діагностичний режим і конфліктуючі (по окремості справні) порти будуть працювати паралельно, забезпечуючи збіг прочитуваної інформації. В реальній роботі, природно, нормальне введення даних (і управляючих сигналів інтерфейсу) для конфліктуючих портів неможливе. Розбиратися з конфліктом адрес зручно послідовно встановлюючи порти і спостерігаючи за адресами, що з'являються в списку.
Якщо фізично встановлений тільки один порт і його не знаходить BIOS, то причини можуть бути тими ж, що і з LPT-портом: або він відключений при конфігуруванні, або вийшов з ладу швидше за все через порушення правил підключення. Може, звичайно, несправність усунутися і при «перекручуванні» платі адаптера в слоті системної шини.
При роботі з СOM-портом часто використовуються апаратні переривання – їх використовують при підключенні модему, миші та інших пристроїв введення. Непрацездатність цих пристроїв може бути викликана некоректною настройкою запиту переривання. Тут можливі як конфлікти з іншими пристроями (або, нав-па-ки, відключення запиту), так і невідповідність номера переривання адресі порту, про можливість якого не «здогадуються», наприклад, багато драйверів миші.
Функціональне тестування
В першому наближенні СOM-порт можна перевірити діагностичною програмою (наприклад, Checkit) без використання заглушок. Цей режим тестування перевіряє функціонування мікросхеми UART (внутрішній діагностичний режим) і вироблення переривань, але він не зачіпає вхідні і вихідні буферні мікросхеми, які є, мабуть, більш частими джерелами неприємностей. Якщо тест не проходить, причину слід шукати або в конфлікті адрес (або пере-ри-вань, якщо на це явно указує повідомлення тесту), або в самій мікросхемі UART.
Для більш достовірного тестування портів за допомогою діагностичних програм рекомендується використання зовнішньої заглушки, що підключається до роз'єму СOM-порту. На відміну від LPT-порту в СOM-порті кількість вхідних сигналів перевищує кількість вихідних, що дозволяє виконати повну перевірку всіх ланцюгів. Схема заглушки для тестування СOM-порту програмою Checkit наведена на рис. 2.2. Заглушка з'єднує вихід приймача з входом передавача, замикаючи інформаційне кільце. Обов'язкова для всіх схем заглушок перемичка RTS-CTS дозволяє працювати передавачу – без неї символи не зможуть передаватися. Вихідний сигнал DTR звичайно використовують для перевірки вхідних ліній DSR, DCD і RI.
Рис. 2.. Заглушка для перевірки СOM-портів (LoopBack)
Якщо тест із зовнішньою заглушкою не проходить (при успіху внутрішньої діагностики UART), причину слід шукати в зовнішніх буферах або їх живленні (±)12 В або в шлейфах підключення зовнішніх роз'ємів. Тут може допомогти осцилограф або просто вольтметр (зручніше стрілочний). Послідовність перевірки може бути наступною;
1. Перевірити наявність двополюсного живлення вихідних схем передавачів (цей крок логічно перший, але оскільки він технічно найскладніший, його можна і відкласти на випадок, коли з'явиться бажання замінювати буферні мікросхеми).
2. Перевірити напругу на виходах TD, RTS і DTR; після апаратного скидання на виході TD повинен бути негативний потенціал біля -12 В (принаймні, нижче -5 В), а на виходах RTS і DTR – такий же позитивний. Якщо цих потенціалів немає, можлива помилка підключення роз'єму до платі через шлейф.
Популярні варіанти:
шлейф не підключений
шлейф підключений неправильно (роз'єм перевернений або вставлений із зсувом)
розкладка шлейфа не відповідає роз'єму платі.
Перші два варіанти перевіряються легко уважним оглядом, а третій може зажадати деякі зусилля по розслідуванню. Теоретично шлейф повинен поставлятися відповідно до роз'єму, але можливі варіанти «з урахуванням місцевих умов». Якщо справа тільки в помилковій розкладці, то ці три вихідних сигналу вдасться знайти на інших контактах роз'ємів (на вхідних контактах потенціал зовсім невеликий). Якщо ці сигнали знайти не вдалося, то, очевидно, вийшли з ладу буферні формувачі.
3. З'єднавши контакти ліній RTS і CTS (або встановивши заглушку), слід спробувати вивести невеликий файл на СOM-порт (наприклад, командою COPY С:\AUTOEXEC.BAT COM1:). Зі справним портом ця команда успішно виконається за декілька секунд з повідомленням про успішне копіювання. При цьому потенціали на виходах RTS і DTR повинні змінитися на негативні, а на виході TD повинна з'явитися пачка двополюсних імпульсів з амплітудою більше 5 В. Якщо потенціали RTS і DTR не змінилися, помилка знову-таки в буферних формувачах. Якщо на виході RTS (і вході CTS) з'явився негативний потенціал, а команда COPY завершується з помилкою, швидше за все, вийшов з ладу приймач лінії CTS (інший варіант – знову-таки помилка в шлейфі), Якщо команда COPY успішно проходить, а зміни на виході TD не виявляються