Назначение бит регистра IER. 1 страница
^ Биты 7-4=0 — не используются.
« Бит 3 — Mod IE — по изменению состояния модема (любой из линий CTS, DSR, Rl, DCD).
» Бит 2 — RxL IE — по обрыву/ошибке линии. * Бит 1 — TxD IE — по завершении передачи.
« Бит 0 — RxD IE — по приему символа (в режиме FIFO — прерывание по тайм-ауту).
//Я — регистр идентификации (только для чтения) прерываний и признака режима FIFO. Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника.
Назначение бит регистра IIP:
» Биты [7:6] — признак режима FIFO:
11 - режим FIFO 16550A,
10 - режим FIFO 16550,
00 —обычный.
» Биты [5:4] — не используются. « Бит 3 — прерывание по тайм-ауту (не в режиме FIFO).
» Биты [2:1] — причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):
11 — ошибка/обрыв линии; сброс — чтением регистра состояния линии,
10 — принят символ; сброс — чтением данных, 01 — передан символ (регистр THR пуст); сброс — записью данных,
00 — изменение состояния модема; сброс — чтением регистра состояния модема.
s Бит 0 — признак необслуженного запроса прерывания:
1 — нет запроса, О — есть запрос.
Идентификация прерываний в режиме FIFO, IIR [3:1]:
и Oil — ошибка/обрыв линии; сброс — чтением регистра состояния линии.
« 010 — принят символ; сброс — чтением регистра данных приемника.
я 110 — индикатор тайм-аута (за 4-кратный интервал времени символа не передано и не принято ни одного символа, хотя в буфере имеется по крайней мере один). Сброс — чтением регистра данных приемника.
« 001 — регистр THR пуст; сброс — записью данных.
» 000 — изменение состояния модема (CTS, DSR, RI или DCD), сброс — чтением регистра MSR.
FCR — регистр управления FIFO (только для записи). Назначение бит регистра FCR:
s Биты [7:6] — ITL (Interrupt Trigger Level) — уровень заполнения FIFO-буфера, при котором вырабатывается прерывание:
00—1 байт (по умолчанию), 01 —4 байта,
10 -8байт,
11 — Мбайт.
« Биты [5:4] зарезервированы. х Бит 3 — разрешение операций DMA.
» Бит 2 — RESETTFfReset Transmitter FIFO) — сброс счетчика FIFO-передатчика (записью единицы; сдвигающий регистр не сбрасывается). » Бит 1 — RESETRFf Reset Receiver FIFO) — сброс счетчика FIFO-приемника (записью единицы; сдвигающий регистр не сбрасывается).
as Бит О —TRFIFOE(Transmit And Receive FIFO Enable) —разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.
LCR — регистр управления линией (настройки параметров канала).
Назначения бит регистра LCR:
«• Бит 7 — DMB (Divisor Latch Access Bit) — управление доступом к делителю частоты.
« Бит 6 — BRCON( Break Control) — формирование обрыва линии (посылка нулей) при BRCON^i.
ж Бит 5 — STICPARfSticky Parity) — принудительное формирование бита паритета:
О — контрольный бит генерируется в соответствии с паритетом выводимого символа,
1 — постоянное значение контрольного бита: при EVENPAR=i — нулевое, при EVENPAR=0 — единичное.
» Бит 4 — EVENPARf Even Parity Select) — выбор типа контроля: 0 — нечетность, 1 — четность.
и Бит 3 — PAREN (Parity Enable) — разрешение контрольного бита:
1 — контрольный бит (паритет или постоянный) разрешен,
О — запрещен. » Бит 2 — STOPS (Stop Bits) — количество стоп-бит:
0—1 стоп-бит,
1—2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бита).
я Биты [1:0] — SERIALDB (Serial Data Bits) — количество бит данных:
00 -5 бит, 01 -6 бит, 10-7 бит, 11 -8 бит. MCR — регистр управления модемом. Назначение бит регистра MCR:
ж Биты [7:5]=0 — зарезервированы.
» Бит 4 — LME(Loopback Mode Enable) — разрешение режима диагностики:
О — нормальный режим, 1 — режим диагностики (см. ниже).
ж Бит 3 — IE(Interrupt Enable) — разрешение прерываний с помощью внешнего выхода OUT2; в режиме диагностики поступает на вход MSR. 7:
О — прерывания запрещены, 1 —разрешены.
я Бит 2 — OUT1 С (OUT1 Bit Control) —управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход MSR. 6.
» Бит 1 — RTSC (Request To Send Control) — управление выходом RTS; в режиме диагностики поступает на вход MSR.4:
1 — активен (-V), О — пассивен (+V).
я Бит 0 — DTRC(Data Terminal Ready Control) —управление выходом DTR; в режиме диагностики поступает на вход MSR.5:
1 — активен (-V), О — пассивен (+V).
LSR — регистр состояния линии (точнее, состояния приемопередатчика).
Назначение бит регистра LSR:
s Бит 7 — FIFOEfFIFO Error Status) — ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В ne-FIFO-режиме всегда 0.
» Бит 6 — TEMPT (Transmitter Empty Status) — регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных, THR или FIFO). « Бит 5 —THRE (Transmitter Holding Register Empty) —регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания.
« Бит 4 — 5D (Break Detected) — индикатор обрыва линии (вход приемника находится в состоянии 0 не менее, чем время посылки символа).
w. Бит 3 — FE(Framing Error) — ошибка кадра (неверный стоп-бит).
* Бит 2 — РЕ (Parity Error) — ошибка контрольного бита (паритета или фиксированного).
» Бит 1 — ОЕ(Overrun Error) — переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий был выгружен из сдвигающего регистра в буферный или FIFO, прежний символ в сдвигающем регистре теряется.
» Бит 0 — DR(Receiver Data Ready) — принятые данные готовы (в DHR или FIFO-буфере). Сброс — чтением приемника.
Индикаторы ошибок — биты [4:1] — сбрасываются после чтения регистра LSR. В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один «обрывной» символ, и UART ждет восстановления и последующего старт-бита.
MSR — регистр состояния модема. Назначение бит регистра MSR:
ж Бит 7 — DCD(Data Carrier Detect) — состояние линии DCD. » Бит 6 — Rl(Ring Indicator) — состояние линии Rl. » Бит 5 — DSR(Data Set Ready) — состояние линии DSR. « Бит 4 — CTS(Clear To Send) — состояние линии CTS.
« Бит 3 — DDCD (Delta Data Carrier Detect) — изменение состояния DCD.
». Бит 2 — TERI (Trailing Edge OfRing Indicator) —спад огибающей Rl (окончание звонка). Mi Бит 1 — DDSR(Delta Data Set Ready) — изменение состояния DSR.
s Бит 0 — DCTS (Delta Clear To Send) — изменение состояния CTS.
Признаки изменения (биты [3:0]) сбрасываются по чтению регистра.
SCR — рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).
В диагностическом режиме (при ШЕ=1) внутри UART организуется внутренняя заглушка:
к Выход передатчика переводится в состояние логической 1. « Вход приемника отключается.
» Выход сдвигающего регистра передатчика логически соединяется со входом приемника.
« Входы DSR, CTS, RI и DCD отключаются от входных линий и внутренне управляются битами DTRC, RTSC, OUT1C, 1Е.
« Выходы управления модемом переводятся в пассивное состояние (логический ноль).
Переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определять скорость работы UART.
2.5.3. Ресурсы и конфигурирование СОМ-портов
Компьютер может иметь до четырех последовательных портов СОМ1-COM4 (для машин класса AT типично наличие двух портов). СОМ-порты имеют внешние разъемы-вилкм DB25P или DB9P, выведенные на заднюю панель компьютера (назначение выводов приведено в табл. 2.1).
СОМ-порты реализуются на микросхемах UART, совместимых с семейством i8250. Они занимают в пространстве ввода/вывода по 8 смежных 8-битных регистров и могут располагаться по стандартным базовым адресам. Порты вырабатывают аппаратные прерывания. Возможность разделяемого использования одной линии запроса несколькими портами (или ее разделения с другими устройствами) зависит от реализации аппаратного подключения и ПО. При использовании портов, установленных на шину ISA, разделяемые прерывания обычно не работают.
Управление последовательным портом разделяется на два этапа — предварительное конфигурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Конфигурирование СОМ-порта зависит от его исполнения. Порт на плате расширения конфигурируется джамперами на самой плате. Порт на системной плате конфигурируется через BIOS Setup.
Конфигурированию подлежат следующие параметры:
» Базовый адрес, который может иметь значения 3F8h, 2F8h, 3E8h (3EOh, 338h) или 2E8h (2EOh, 238h). При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и присваивает обнаруженным портам логические имена СОМ1, COM2, COM3 и COM4. Для PS/2 стандартными для портов СОМЗ-СОМ8 являются адреса 3220h, 3228h, 4220h, 4228h, 5220h и 5228h соответственно.
ss Используемая линия запроса прерывания: для СОМ1 и COM3 обычно используется 1RQ4 или IRQ11, для COM2 и COM4 — IRQ3 или IRQ 10. В принципе номер прерывания можно назначать в произвольных сочетаниях с базовым адресом (номером порта), но некоторые программы и драйверы (например, драйверы последовательной мыши) настроены на стандартные сочетания. Каждому порту, нуждающемуся в аппаратном прерывании, назначают отдельную линию, не совпадающую с линиями запроса прерываний других устройств. Прерывания необходимы для портов, к которым подключаются устройства ввода, UPS или модемы. При подключении принтера или плоттера прерываниями пользуются только многозадачные ОС (не всегда), и этот дефицитный ресурс PC можно сэкономить. Также прерываниями обычно не пользуются при связи двух компьютеров нуль-модемным ss Канал DMA (для UART 16450/16550, расположенных на системной плате) — разрешение использования и номер канала DMA. Режим DMA при работе с СОМ-портами используют редко.
Режим работы порта по умолчанию (2400 бит/с, 7 бит данных, 1 стоп-бит и контроль четности), заданный при инициализации порта во время BIOS POST, может изменяться в любой момент при настройке коммуникационных программ или командой DOS MODE COMx: с указанием параметров.
2.5.4. Неисправности и тестирование СОМ-портов
Неполадки с СОМ-портами случаются (выявляются) при установке новых портов или неудачном подключении внешних устройств.
Проверка конфигурирования
Тестирование последовательных портов (как и параллельных) начинают с проверки их опознавания системой. Список адресов установленных портов обычно появляется в таблице, выводимой BIOS перед загрузкой ОС. Список можно посмотреть с помощью тестовых программ или прямо в BIOS Data AREA с помощью отладчика.
Если BIOS обнаруживает меньше портов, чем установлено физически, вероятно, двум портам присвоен один адрес или установлен нестандартный адрес какого-либо порта. Проблемы могут возникать с адресами портов COM3 и COM4: не все версии BIOS будут искать порты по альтернативным адресам 3EOh, 338h, 2EOh и 238h; иногда не производится поиск по адресам 3E8h и 2E8h. Нумерация найденных портов, отображаемая в заставке, может вводить в заблуждение:
если установлены два порта с адресами 3F8h и 3E8h, в заставке они могут называться СОМ1 и COM2, и по этим именам на них можно ссылаться. Однако те же порты в заставке могут называться и СОМ1 и COM3 (поскольку 3E8h является штатным адресом для COM3), но попытка сослаться на порт COM3 будет неудачной, поскольку в данном случае адрес 3E8h будет находиться в ячейке 0:402h B/OS Data Area, соответствующей порту COM2, а в ячейке порта COM3 (0:404h) будет нуль — признак отсутствия такового порта. «Объяснить» системе, где какой порт, можно вручную любым отладчиком, занеся правильные значения базовых адресов в ячейки B/OS Data Area (это придется делать каждый раз после перезагрузки ОС перед использованием «потерянного» порта). Существуют тестовые утилиты, позволяющие находить порты (например, Port Finder).
Если двум портам назначен один и тот же адрес, тестовая программа обнаружит ошибки порта только с использованием внешней заглушки (External LoopBack). Программное тестирование порта без заглушки не покажет ошибок, поскольку при этом включается диагностический режим (см. описание UART) и конфликтующие (по отдельности исправные) порты будут работать параллельно, обеспечивая совпадение считываемой информации. В реальной жизни нормальная работа конфликтующих портов невозможна. Разбираться с конфликтом адресов удобно, последовательно устанавливая порты и наблюдая за адресами, появляющимися в списке.
Если физически установлен только один порт и его не обнаруживает BIOS, причины те же, что с LPT-портом: либо он отключен при конфигурировании, либо вышел из строя. Неисправность может устраниться при вынимании/вставке платы адаптера в слот системной шины.
При работе с СОМ-портом задействуются соответствующие аппаратные прерывания — их используют при подключении модема, мыши и других устройств ввода. Неработоспособность этих устройств может быть вызвана некорректной настройкой запроса прерывания. Здесь возможны как конфликты с другими устройствами, так и несоответствие номера прерывания адресу порта.
Функциональное тестирование
В первом приближении СОМ-порт можно проверить диагностической программой (Checkit) без использования заглушек. Этот режим тестирования проверяет микросхему UART (внутренний диагностический режим) и вырабатывание прерываний, но не входные и выходные буферные микросхемы, которые являются более частыми источниками неприятностей. Если тест не проходит, причину следует искать или в конфликте адресов/прерываний, или в самой микросхеме UART.
Для более достоверного тестирования рекомендуется использовать внешнюю заглушку, подключаемую к разъему СОМ-порта (рис. 2.17). В отличие от LPT-порта у СОМ-порта количество входных сигналов превышает количество выходных, что позволяет выполнить полную проверку всех цепей. Заглушка соединяет выход приемника со входом передатчика. Обязательная для всех схем заглушек перемычка RTS-CTS позволяет работать передатчику — без нее символы не смогут передаваться. Выходной сигнал DTR обычно используют для проверки входных линий DSR, DCD и RI.
Если тест с внешней заглушкой не проходит, причину следует искать во внешних буферах, их питании или в шлейфах подключения внешних разъемов. Здесь может помочь осциллограф или вольтметр. Последовательность проверки может быть следующей:
1. Проверить наличие двуполярного питания выходных схем передатчиков (этот шаг логически первый, но поскольку он технически самый сложный, его можно отложить на крайний случай, когда появится желание заменить буферные микросхемы).
2. Проверить напряжение на выходах TD, RTS и DTR: после аппаратного сброса на выходе TD должен быть отрицательный потенциал около -12 В (по крайней мере ниже -5 В), а на выходах RTS и DTR — такой же положительный. Если этих потенциалов нет, возможна ошибка подключения разъема к плате через шлейф. Распространенные варианты:
в шлейф не подключен;
« шлейф подключен неправильно (разъем перевернут или вставлен со смещением);
^ раскладка шлейфа не соответствует разъему платы.
Первые два варианта проверяются при внимательном осмотре, третий же может потребовать некоторых усилий. В табл. 2.1 приведены три варианта раскладки 10-проводного шлейфа разъема СОМ-порта, известных автору; для СОМ-портов на системных платах возможно существование и других. Теоретически шлейф должен поставляться в соответствии с разъемом платы, на которой расположен порт.
Если дело в ошибочной раскладке, то эти три выходных сигнала удастся обнаружить на других контактах разъемов (на входных контактах потенциал совсем небольшой). Если эти сигналы обнаружить не удалось, очевидно, вышли из строя буферные формирователи.
3. Соединив контакты линий RTS и CTS (или установив заглушку), следует попытаться вывести небольшой файл на СОМ-порт (например, командой COPYC:\AUTOEXEC. ВАТ СОМ1:). С исправным портом эта команда успешно выполнится за несколько секунд с сообщением об успешном копировании. При этом потенциалы на выходах RTS и DTR должны измениться на отрицательные, а на выходе TD должна появиться пачка двуполярных импульсов с амплитудой более 5 В. Если потенциалы RTS и DTR не изменились, ошибка в буферных формирователях. Если на выходе RTS (и входе CTS) появился отрицательный потенциал, а команда COPY завершается с ошибкой, скорее всего, вышел из строя приемник линии CTS (или опять-таки ошибка в шлейфе). Если команда COPY успешно проходит, а изменения на выходе TD не обнаруживаются (их можно увидеть стрелочным вольтметром, но оценить амплитуду импульсов не удастся), виноват буферный передатчик сигнала TD. Замена микросхем приемников и передатчиков существенно облегчается, если они установлены в «кроватки». Перед заменой следует с помощью осциллографа или вольтметра удостовериться в неисправности конкретной микросхемы. Расположение выводов микросхем приведено на рис. 2.6.
Если буферные элементы включены в состав интерфейсной БИС (что теперь весьма распространено), то такой порт ремонту не подлежит (по крайней мере в обычных условиях). Неисправный СОМ-порт, установленный на системной плате, можно попытаться отключить в BIOS SETUP, но порт мог сгореть и вместе со схемой своего отключения — тогда он останется «живым мертвецом» в карте портов ввода/вывода и прерываний. Иногда он полностью выводит из строя системную плату.
Источниками ошибок могут являться разъемы и кабели. В разъемах встречаются плохие контакты, а кабели кроме возможных обрывов могут иметь плохие частотные характеристики. Частотные свойства кабелей обычно сказываются при большой длине (десятки метров) на высоких скоростях обмена (56 или 115 Кбит/с). При необходимости использования длинных кабелей на высоких скоростях сигнальные провода данных должны быть перевиты с отдельными проводами «схемной земли».
Питание от интерфейса, или Почему может не работать мышь
При подключении к СОМ-порту устройств с небольшим энергопотреблением возникает соблазн использования питания от выходных линий интерфейса. Если линии управления DTR и RTS не используются по прямому назначению, их можно задействовать как питающие с напряжением около 12 В. Ток короткого замыкания на «схемную землю» ограничен буферной микросхемой передатчика на уровне 20 мА. При инициализации порта эти линии переходят в состояние «выключено», то есть вырабатывают положительное напряжение. Линия TD в покое находится в состоянии логической единицы, так что на выходе вырабатывается отрицательное напряжение. Потенциалами линий можно управлять через регистры СОМ-порта (выход TD вырабатывает положительное напряжение, если установить бит BRCON). Двуполярным питанием от линий интерфейса (+V от DTR и RTS, -V от TD) пользуются все манипуляторы, подключаемые к СОМ-портам. Зная это, в случае неработоспособности мыши с данным портом следует проверить напряжения на соответствующих контактах разъема. Бывает, что с конкретным портом не работает только конкретная мышь (модель или экземпляр), хотя другие мыши с этим портом и эти же мыши с другими портами работают нормально. Здесь дело может быть в уровнях напряжений. Стандарт требует от порта выходного напряжения не менее 5 В (абсолютного значения), и, если данный порт обеспечивает только этот минимум, некоторым мышам не хватит мощности для питания светодиодов (главных потребителей энергии).
Порт получает двуполярное питание через системную плату от блока питания компьютера. Отсутствие на выходе блока питания напряжения +12 В обычно обнаружится по неработоспособности дисков. Отсутствие напряжения -12 В «заметят» только устройства, подключенные к СОМ-портам. Блок питания теоретически контролирует наличие этих напряжений на своем выходе (сообщая о неполадках сигналом Power Good, вызывающим аппаратный сброс). Встречаются упрощенные схемы блоков питания, у которых контролируются не все напряжения. Кроме того, возможны плохие контакты в разъеме подключения питания к системной плате.
2.5.5. Функции BIOS для СОМ-портов
В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки B/OS Data Area 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами СОМ 1-COM4. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся константы, задающие тайм-аут для портов.
Обнаруженные порты инициализируются на скорость обмена 2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интерфейса DTR и RTS переводятся в исходное состояние («выключено» — положительное напряжение).
Порты поддерживаются сервисом BIOS INT 14h, который обеспечивает следующие функции:
» OOh — инициализация (установка скорости обмена и формата посылок, заданных регистром AL; запрет источников прерываний). На сигналы DTR и RTS влияния не оказывает (после аппаратного сброса они пассивны).
« Olh — вывод символа из регистра AL (без аппаратных прерываний). Активируются сигналы DTR и RTS, и после освобождения регистра THR в него помещается выводимый символ. Если за заданное время регистр не освобождается, фиксируется ошибка тайм-аута и функция завершается.
ж 02h — ввод символа (без аппаратных прерываний). Активируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных, принятый символ помещается в регистр AL. Если за заданное время данные не получены, функция завершается с ошибкой тайм-аута.
8 03h — опрос состояния модема и линии (чтение регистров MSR и LSR). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода/вывода во избежание риска ожидания тайм-аута.
При вызове INT 14h номер функции задается в регистре АН, номер порта (0-3) — в регистре DX (0 — СОМ1, 1 — COM2...). При возврате из функций 0, 1 и 3 регистр АН содержит байт состояния линии (регистр LSR), AL — байт состояния модема (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН указывает на наличие принятого символа в регистре AL; ненулевое значение бита 7 — на ошибку приема, которую можно уточнить функцией 3.
Формат байта состояния линии (регистр АН):
и Бит 7 — ошибка тайм-аута (после вызова функции 2 — признак любой ошибки). я Бит 6 — регистр сдвига передатчика пуст (пауза передачи).
» Бит 5 — промежуточный регистр передатчика пуст (го тов принять символ для передачи).
« Бит 4 — обнаружен обрыв линии.
« Бит 3 — ошибка кадра (отсутствие стоп-бита).
« Бит 2 — ошибка паритета принятого символа.
» Бит 1 — переполнение (потеря символа).
ж Бит 0 — регистр данных содержит принятый символ.
Формат байта состояния модема (регистр AL):
» Бит 7 — состояние линии DCD. » Бит 6 — состояние линии RI. я Бит 5 — состояние линии DSR. м Бит 4 — состояние линии CTS. »« Бит 3 — изменение состояния DCD. » Бит 2 — изменение огибающей RI. я Бит 1 — изменение состояния DSR. ss Бит 0 — изменение состояния CTS. Формат регистра ALпри инициализации:
» Биты [7:5] — скорость обмена:
000-110; 010-300; 100-1200; 110-4800,
001-150; 011-600; 101-2400; 111-9600 бит/с. ж Биты [4:3] — контроль паритета:
01 — число единиц нечетное,
11 —четное,
00 и 10 — без контроля.
» Бит 2 — количество стоп-бит: 0—1 бит, 1—2 бита (на скорости 110 бит/с — 1,5 стоп-бита).
» Биты [1:0] — длина посылки: 00—5 бит, 01—6 бит, 10-7 бот, 11:-8 бит. 2.5.6. СОМ-порт и РпР
Современные ПУ, подключаемые к СОМ-порту, могут поддерживать спецификацию РпР. Основная задача ОС заключается в идентификации подключенного устройства, для чего разработан несложный протокол, реализуемый на любых СОМ-портах чисто программным способом (рис. 2.18):
1. Порт инициализируется с состоянием линий DTR=CW, RTS=OFF, T)(D=Mark — состояние покоя (Idle).
2. Некоторое время (0,2 с) ожидается появление сигнала DSR, которое указало бы на наличие устройства, подключенного к порту. В простейшем случае устройство имеет на разъеме перемычку DTR-DSR, обеспечивающую указанный ответ. Если устройство обнаружено, выполняются манипуляции управляющими сигналами DTR и RTS для получения информации от устройства. Если ответ не получен, ОС, поддерживающая динамическое реконфи-гурирование, периодически опрашивает состояние порта для обнаружения новых устройств.
3. Порт программируется на режим 1200 бит/с, 7 бит данных, без паритета, 1 стоп-бит, и на 0,2 с снимается сигнал DTR. После этого устанавливается DTR=1, а еще через 0,2 с устанавливается и RTS=1.
4. В течение 0,2 с ожидается приход первого символа от устройства. По приходе символа начинается прием идентификатора (см. ниже). Если за это время символ не пришел (рис. 2.18), выполняется вторая попытка опроса (см. п. 5), несколько отличающаяся от первой.
5. На 0,2 с снимаются оба сигнала (DTR=0 и RTS=0), после чего они оба устанавливаются (DTR=1 и RTS"!). 6. В течение 0,2 с ожидается приход первого символа от устройства, по приходе символа начинается прием идентификатора (см. ниже). Если за это время символ не пришел, то в зависимости от состояния сигнала DSR переходят к проверке отключения Verify Disconnect (при DSR=0) или в дежурное состояние Connect Idle (при DSR=1).
7. В дежурном состоянии Connect Idle устанавливается DTR=1, RTS=0, порт программируется на режим 300 бит/с, 7 бит данных, без паритета, 1 стоп-бит. Если в этом состоянии обнаружится DSR=0, ОС следует уведомить об отключении устройства.
Посимвольный прием идентификатора устройства имеет ограничения по тайм-ауту в 0,2 с на символ, а также общее ограничение в 2,2 с, позволяющее принять строку длиной до 256 символов. Строка идентификатора РпР должна иметь маркеры начала (28h или 08h) и конца (29h или 09h), между которыми располагается тело идентификатора в стандартизованном формате. Перед маркером начала может находиться до 16 символов, не относящихся к идентификатору РпР. Если за первые 0,2 с ожидания символа (шаг 4 или 6) маркер начала не пришел, или же сработал тайм-аут, а маркер конца не получен, или же какой-либо символ принят с ошибкой, происходит переход в состояние Connect Idle. Если получена корректная строка идентификатора, она передается ОС.
Для проверки отключения (Verify Disconnect) устанавливается DTR°1, RTS=0 и через 5 с проверяется состояние сигнала DSR. При DSR=1 происходит переход в состояние Connect Idle (см. п. 7), при DSR=0 происходит переход в состояние Disconnect Idle, в котором система может периодически опрашивать сигнал DSR для обнаружения подключения устройства.
Описанный механизм разрабатывался фирмой Microsoft с учетом совместимости с не-РпР-устройствами — невозможность их вывода из строя и устойчивость системы к сообщениям, не являющимся РпР-идентификаторами. Например, обычная Microsoft Mouse при включении питания от интерфейса ответит ASCII-символом «М» (трехкнопочная — строкой «МЗ»).
Беспроводные интерфейсы
Дата добавления: 2016-06-13; просмотров: 1142;