ras async adapter что это

Ras async adapter что это

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Сообщения: 52227
Благодарности: 15094

» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Сообщения: 52227
Благодарности: 15094

fpm_start("true");

Помимо вышепечеисленого сделал еще:
netsh int ip reset (http://support.microsoft.com/kb/299357/ru)

Удалил ключи 25,26 из
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\PPP\EAP\
не помню где взял эту инфо, но искал по коду ошибки, наткнулся.

Потом подвигал разделы, и сделал проверку диска полную. что то там исправилось.

Возможно был косяк с файловой, и помогло только последнее, т.к. файл был недоступен изза этого. может что то из вышеперечисленого помогло. может все в сумме «сработало». в общем исправлено. Спасибо.

Источник

Сетевые адаптеры в диспетчере устройств Windows

В диспетчере устройств Windows есть отдельный раздел «Сетевые адаптеры», в котором отображаются все сетевые адаптеры, которые установлены в системе. Чаще всего это сетевая карта (LAN), Wi-Fi адаптер (WLAN), устройства Bluetooth, и системные: TAP-Windows Adapter, Microsoft Virtual Wi-Fi, Microsoft Wi-Fi Direct, WAN Miniport и т. д.

В этой статье я хочу рассказать об этих адаптерах. За что они отвечают и как работают. Какие сетевые адаптеры должны быть диспетчере устройств Windows. Как их туда добавлять и удалять. Почему сетевые адаптеры не отображаются в диспетчере устройств, не удаляются, не работают, не видят Wi-Fi и интернет. В том же диспетчере устройств эти адаптеры не редко отображаются с ошибками. Например, «код 31». Бывает, что возле адаптера отображается восклицательный знак, стрелочка, или сама иконка прозрачная. Это означает, что в работе этого устройства есть ошибки, оно работает неправильно, или отключено.

У меня раздел «Сетевые адаптеры» в диспетчере устройств выглядит вот так (в Windows 10) :ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Давайте подробнее рассмотрим каждый адаптер и разберемся, для чего он нужен и как работает. Буду рассматривать на примере адаптеров в своем ноутбуке.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Так же там может отображаться «Виртуальный адаптер Wi-Fi Direct (Майкрософт)», «Виртуальный адаптер размещенной сети (Майкрософт)», «Сетевой адаптер с отладкой ядра (Майкрософт)». Все это системные адаптеры, которые нужны для работы определенных функций. Чаще всего это функция раздачи Wi-Fi через командную строку, или мобильны хот-спот в Windows 10.

Как управлять сетевыми адаптерами в Windows?

Можно нажать на «Вид» и поставить галочку возле «Показывать скрытые устройства». После этого появляться все отключенные адаптеры, которые раньше были подключены и настроены.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Возле адаптера так же может быть желтый восклицательный знак. Это значит что адаптер работает не правильно. Нажмите на него правой кнопкой мыши и выберите «Свойства». Там будет отображаться «Состояние устройства». Может быть сообщение об ошибке и код ошибки, по которому можно найти решение.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Нажав правой кнопкой мыши на адаптер, можно обновить его драйвера, отключить, или удалить из системы. А так же открыть свойства (как я показывал выше) и изменить необходимые параметры на соответствующих вкладках.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Думаю, что нет смысла рассматривать все свойства и параметры каждого адаптера, да и они конечно же будут отличаться.

Можно открыть параметры каждого адаптера, отключить его, удалить, обновить драйвера, посмотреть состояние, ошибки и т. д. Именно это я хотел показать в данной статье. Если у вас остались какие-то вопросы, то задавайте их в комментариях.

Источник

Модемы и факс-модемы. Программирование для MS-DOS и Windows.

5. Асинхронный адаптер

Практически каждый компьютер оборудован хотя бы одним асинхронным последовательным адаптером. Обычно он представляет собой отдельную плату или же расположен прямо на материнской плате компьютера. Его иногда называют асинхронным адаптером RS-232-C, или портом RS-232-C. Асинхронный адаптер обычно содержит несколько COM-портов, через которые к компьютеру можно подключать внешние устройства.

В настоящее время порт последовательной передачи данных используется очень широко. Чаще всего к нему подключается манипулятор мышь. Иногда через COM-порт к компьютеру подключаются графопостроители, сканеры, принтеры, дигитайзеры.

Для нас наиболее интересно использование COM-портов для обмена данных между двумя компьютерами через модемы и нуль-модемы.

Модем также подключается к компьютеру через COM-порт и позволяет обмениваться данными по обычным телефонным линиям.

Последовательная передача данных означает, что данные передаются бит за битом по единственной линии связи. Для обеспечения синхронизации передающего и принимающего устройства группе битов данных обычно предшествует специальный стартовый бит, а после группы битов данных следуют бит проверки на четность и один или два стоповых бита. Иногда бит проверки на четность может отсутствовать. Сказанное иллюстрируется рисунком 5.1.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Рис. 5.1. Формат данных, передаваемых через COM-порт

Стартовый бит START сигнализирует о начале передачи данных. Далее передаются биты данных, вначале младшие, затем старшие.

Если используется бит четности P, то передается и он. Бит четности имеет такое значение, чтобы в пакете битов общее количество единиц было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой. Естественно, такой алгоритм не дает стопроцентной гарантии обнаружения ошибок. Так, если при передаче данных изменилось четное число битов, то четность сохраняется и ошибка не будет обнаружена. Поэтому на практике применяют более сложные методы обнаружения ошибок.

В самом конце передаются один или два стоповых бита STOP, завершающих передачу байта. Затем до прихода следующего стартового бита линия снова переходит в состояние MARK.

Использование бита четности, стартовых и стоповых битов определяют формат передачи данных. Очевидно, что передатчик и приемник должны использовать один и тот же формат данных, иначе обмен будет невозможен.

В литературе иногда неправильно отождествляют термины бит за секунду и боды. Эти термины действительно равнозначны, когда говорят о передаче данных через COM-порт, но при передаче данных по телефонной линии через модем с высокой скоростью значения скорости передачи информации в битах за секунду и бодах могут различаться. Более подробно об этом можно прочитать в главе «Модемы и факс-модемы», разделе «Боды, биты за секунду и символы в секунду».

Обычно компьютер оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения материнской платы.

Бывают специальные платы, содержащие четыре или восемь портов последовательной передачи данных. Их часто используют для подключения нескольких модемов и факс-модемов к одному центральному компьютеру.

Для каждого COM-порта микросхема 8250 содержит регистры передатчика и приемника данных, а также несколько управляющих регистров, доступных через команды ввода/вывода.

При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр. Затем байт «выдвигается» из сдвигового регистра по битам. Аналогично работает сдвиговый и буферный регистры приемника.

Программа имеет доступ только к буферным регистрам. Копирование информации в сдвиговые регистры и сдвиг данных выполняется микросхемой UART автоматически. Регистры, управляющие асинхронным последовательным портом, будут описаны в следующей главе.

Внешне каждый COM-порт асинхронного последовательного адаптера представлен собственным разъемом. Существует два стандарта на разъемы COM-порта: это DB25 и DB9. Первый разъем имеет 25, а второй 9 выводов. Несмотря на то, что разъем DB25 содержит в два с половиной раза больше выводов, чем DB9, они передают одинаковые сигналы. При необходимости можно приобрести переходник между разъемами DB25 и DB9.

Внутренний модем содержит COM-порт внутри себя, поэтому на плате внутреннего модема вы не обнаружите ни одного разъема COM-порта.

Приведем разводку разъема DB25 со стороны последовательного асинхронного адаптера:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Теперь приведем разводку разъема DB9 со стороны последовательного асинхронного адаптера:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Только два вывода этих разъемов используются для передачи и приема данных. Остальные передают различные вспомогательные и управляющие сигналы. На практике для подсоединения того или иного устройства может понадобиться различное количество сигналов.

5.2.1. Сигналы интерфейса RS-232-C

Здесь мы рассмотрим порядок взаимодействия компьютера и модема, а также двух компьютеров, непосредственно соединенных друг с другом. Сначала посмотрим, как происходит соединение компьютера с модемом.

Входы TD и RD используются компьютером и модемом по-разному. Компьютер использует вход TD для передачи данных, а вход RD для приема данных. И наоборот, модем использует вход TD для приема, а вход RD для передачи данных.

Поэтому для соединения компьютера и модема выводы их разъемов необходимо соединить напрямую (см. рис. 5.2).

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что этоras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это>

Рис. 5.2. Соединение компьютера и модема

Рассмотрим процесс подтверждения связи между компьютером и модемом (handshake). В начале сеанса связи компьютер должен удостовериться, что модем может произвести вызов (находится в рабочем состоянии). Затем после вызова абонента модем должен сообщить компьютеру, что он соединился с удаленной системой. Подробнее это происходит следующим образом.

Компьютер устанавливает сигнал на линии DTR, чтобы показать модему, что он готов к проведению сеанса связи. В ответ модем устанавливает сигнал на линии DSR. Когда модем произвел соединение с другим удаленным модемом, он устанавливает сигнал на линии DCD, чтобы сообщить об этом компьютеру.

Падение напряжения на линии DTR сообщает модему, что компьютер не может далее продолжать сеанс связи, например, из-за того, что выключено питание компьютера. В этом случае модем прервет связь. Падение напряжения на линии DCD сообщает компьютеру, что модем потерял связь и не может больше продолжать соединение с удаленным модемом.

В предыдущем разделе мы рассмотрели процедуру подтверждения связи между компьютером и модемом, а также между двумя компьютерами. Теперь мы рассмотрим механизм, с помощью которого можно регулировать передачу данных от компьютера модему и наоборот.

Когда одно устройство (например, компьютер), пытается передать данные с большей скоростью, чем они могут быть обработаны принимающей системой (модемом), результатом может стать потеря части передаваемых данных. Чтобы предотвратить передачу большего числа данных, чем то, которое может быть обработано, используют управление связью, называемое «управление потоком» (flow-controll handshake).

Стандарт RS-232-C определяет возможность управления потоком только для полудуплексного соединения. Полудуплексным называется соединение, при котором в каждый момент времени данные могут передаваться только в одну сторону.

Однако фактически этот механизм используется и для дуплексных соединений, когда данные передаются по линии связи одновременно в двух направлениях.

В полудуплексных соединениях компьютер подает сигнал RTS, когда ему надо передать данные. Модем отвечает сигналом по линии CTS, когда он готов, и компьютер начинает передачу данных. До тех пор, пока оба сигнала RTS и CTS не примут активное состояние, только модем может передавать данные.

При дуплексных соединениях сигналы RTS/CTS имеют противоположные значения по сравнению с теми, которые они имели для полудуплексных соединений.

Когда компьютер может принять данные, он подает сигнал по линии RTS. Если при этом модем готов для принятия данных, он возвращает сигнал CTS. Если напряжение на линиях RTS или CTS падает, то это сообщает передающей системе, что получающая система не готова для приема данных.

Соединить компьютер и модем не составляет труда, так как интерфейс RS-232-C как раз для этого и предназначен. Но если вы пожелаете связать вместе два компьютера при помощи такого же кабеля, который вы использовали для связи модема и компьютера, то у вас возникнут проблемы.

Однако в большинстве случаев этого недостаточно, так как для устройств DTE и DCE функции, выполняемые линиями DSR, DTR, DCD, CTS и RTS, асимметричны.

Устройство DTE подает сигнал DTR и ожидает получения сигналов DSR и DCD. В свою очередь, устройство DCE подает сигналы DSR, DCD и ожидает получения сигнала DTR. Таким образом, если вы соедините вместе два устройства DTE кабелем, который вы использовали для соединения устройств DTE и DCE, то они не смогут договориться друг с другом. Не выполнится процесс подтверждения связи.

Теперь перейдем к сигналам RTS и CTS, управления потоком данных. Иногда для соединения двух устройств DTE эти линии соединяют вместе на каждом конце кабеля. В результате получаем, что другое устройство всегда готово для получения данных. Поэтому, если при большой скорости передачи принимающее устройство не успевает принимать и обрабатывать данные, возможна потеря данных.

Чтобы решить все эти проблемы, для соединения двух устройств типа DTE используется специальный кабель, в обиходе называемый нуль-модемом.

Имея два разъема и кабель, вы легко можете спаять его самостоятельно, руководствуясь схемами, изображенными на рисунке 5.3.

Нуль-модемный кабель, представленный в левой части рисунка 5.3, на схеме 1, содержит значительно меньше проводов, чем нуль-модемный кабель, изображенный справа. За счет того, что на каждом конце кабеля линии RTS, CTS и DSR, DCD, DTR соединены вместе, процедуры подтверждения связи и управления потоком всегда будут заканчиваться успешно. На больших скоростях это может привести к потере информации, поэтому мы рекомендуем использовать вторую схему.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Схему такого переходника мы приводим на рисунке 5.4.

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Рис. 5.4. Переходник для разъемов DB25 и DB9

Заметим, что многие модемы можно настроить таким образом, что они не будут проверять состояние сигналов DTR и RTS. Более подробно эти возможности описаны в разделе «Расширенный набор AT-команд».

На этапе инициализации системы, модуль процедуры начальной загрузки BIOS тестирует имеющиеся асинхронные порты RS-232-C и инициализирует их. В зависимости от версии BIOS инициализирует первые два или четыре порта. Их базовые адреса записываются в области данных BIOS начиная с адреса 0040:0000h.

Чтобы просмотреть значения, записанные в области данных BIOS вашего компьютера, можно воспользоваться программой Debug, поставляемой вместе с операционной системой MS-DOS. Таким образом, можно определить, какие COM-порты установлены на компьютере.

Порты асинхронного адаптера могут вырабатывать прерывания:

Порты COM1 и COM3 асинхронного последовательного адаптера используют линию IRQ4 и вырабатывают прерывание INT 0Ch, а порты COM2 и COM4 используют линию IRQ3 и вырабатывают прерывание INT 0Bh.

Некоторые платы последовательного асинхронного адаптера позволяют присвоить COM-портам другие линии IRQ, например, IRQ5 или IRQ7.

Как видно, порты COM1, COM3 и COM2, COM4 используют одинаковые прерывания. Поэтому, как правило, нельзя одновременно использовать порты COM1 и COM3, так же как порты COM2 и COM4. Например, если к порту COM1 подключен модем, то мышь можно подключить только к порту COM2 или COM4

Теперь перейдем к подробному рассмотрению портов, используемых COM-портами.

5.3.1. Регистр данных

Регистр данных расположен непосредственно по базовому адресу COM-порта и используется для обмена данными и для задания скорости обмена.

При передаче данных в этот регистр необходимо записать передаваемый байт данных. После приема данных от внешнего устройства принятый байт можно также прочитать из этого же регистра.

В зависимости от состояния старшего бита управляющего регистра (расположенного по адресу base_adr + 3, где base_adr соответствует базовому адресу COM-порта) назначение этого регистра может изменяться. Если старший бит равен нулю, регистр используется для записи передаваемых данных. Если же старший бит равен единице, регистр используется для ввода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делителя, можно изменять скорость передачи данных. Старший байт делителя записывается в регистр управления прерываниями по адресу base_adr + 1.

Зависимость скорости передачи данных от значения делителя частоты представлена в следующей таблице:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Как следует из этой таблицы, максимальная скорость обмена информацией, которую можно достичь при использовании асинхронного адаптера, достигает 115200 бит за секунду, что примерно соответствует 12 Кбайт в секунду.

5.3.2. Регистр управления прерываниями

Этот регистр используется либо для управления прерываниями от асинхронного адаптера, либо (после вывода в управляющий регистр байта с установленным в 1 старшим битом) для вывода значения старшего байта делителя частоты тактового генератора.

В режиме управления прерываниями регистр имеет следующий формат:

D0 Разрешение прерывания при готовности принимаемых данных. Если бит содержит единицу, генерация прерывания при готовности принимаемых данных разрешена

D1 Разрешение прерывания после передачи байта (когда выходной буфер передачи пуст). Если бит содержит единицу, генерация прерывания после передачи байта разрешена

D2 Разрешение прерывания по обнаружению состояния BREAK или по ошибке. Если бит содержит единицу, то при обнаружении состояния BREAK или при возникновении ошибки происходит прерывание

D3 Разрешение прерывания по изменению состояния входных линий на разъеме RS-232-C (CTS, DSR, RI, DCD). Если бит содержит единицу, то при изменении состояния линий CTS, DSR, RI, DCD COM-порт вырабатывает прерывание

D7-D4 Не используются, должны быть равны 0

Для удобства доступа к регистрам UART мы определили для каждого регистра соответствующее объединение (см. файл UART_REG.H).

Ниже мы приводим объединение, которое можно использовать для доступа к отдельным полям регистра управления прерываниями из программ на языке Си:

// Смещение относительно базового адреса #define ICR_N 1 // Регистр управления прерываниями typedef union _ICR_ < struct < unsigned char in_ready : 1; unsigned char out_ready : 1; unsigned char err : 1; unsigned char change : 1; unsigned char reserv : 4; >bit_reg; unsigned char byte; > ICR;

5.3.3. Регистр идентификации прерывания

После того как произошло прерывание от COM-порта, программа может прочитать значение регистра идентификации прерывания, чтобы определить причину его возникновения.

Формат регистра представлен ниже:

D0 Если бит равен единице, значит нет прерываний, ожидающих обслуживания

D2-D1 Содержит идентификатор прерывания

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

В файле UART_REG.H регистр идентификации прерывания определен следующим образом:

5.3.4. Управляющий регистр

Управляющий регистр доступен для записи и чтения. Этот регистр управляет различными характеристиками UART: скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов (символов).

D1-D0 Данные биты определяют длину передаваемых слов в битах:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

D2 Бит определяет количество стоповых бит:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

D3-D4 Биты управляют проверкой на четность:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

D5 Фиксация четности. При установке этого бита бит четности всегда принимает значение 0, если биты D3 D4 равны 11, или 1, если биты D3 D4 равны 01

D6 Установка перерыва. Вызывает вывод строки нулей в качестве сигнала BREAK для подключенного устройства

D7 Бит используется для доступа к регистру установки скорости. Если бит D7 равен единице, то регистр данных и регистр управления прерываниями используются для загрузки делителя частоты тактового генератора. Если бит D7 равен нулю, то регистр данных и регистр управления прерываниями используются как обычно

Для облегчения доступа к отдельным полям управляющего регистра можно воспользоваться следующим объединением:

5.3.5. Регистр управления модемом

D0 Линия DTR. Сигнал подтверждения связи. Используется модемами для разрешения передачи данных между компьютером и микросхемой UART

D1 Линия RTS. Сигнал подтверждения связи. Используется модемами для разрешения передачи данных между компьютером и микросхемой UART

D2 Линия OUT1. Для некоторых модемов при установке этого бита в единицу происходит его аппаратный сброс

D4 Запуск диагностики при входе асинхронного адаптера, замкнутом на его выход (Digital Loopback test). Эта возможность реализована только для асинхронных портов, использующих микросхему UART 8250, или полностью совместимых с ней

D7-D5 Должны быть равны 0

Регистр управления модемом определен нами в файле UART_REG.H следующим образом:

// Смещение относительно базового адреса #define MCR_N 4 // Регистр управления модемом typedef union _MCR_ < struct < unsigned char dtr : 1; unsigned char rts : 1; unsigned char out1 : 1; unsigned char out2 : 1; unsigned char diag : 1; unsigned char reserv : 3; >bit_reg; unsigned char byte; > MCR;

5.3.6. Регистр состояния линии

Регистр состояния линии позволяет программе определить причину ошибок, которые могут произойти при передаче данных между компьютером и COM-портом. Формат регистра представлен ниже:

D0 Данные получены и готовы для чтения, при чтении данных бит сбрасывается

D1 Ошибка переполнения. Принят новый байт данных, а предыдущий еще не был считан программой. В результате предыдущий байт потерян

D2 Ошибка четности, сбрасывается после чтения состояния линии

D3 Ошибка синхронизации. Возникает, например, при отсутствии стоп-битов в принятом байте

D5 Регистр хранения передатчика пуст, в него можно записывать новый байт для передачи

D6 Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи. Если этот бит равен единице, то UART может принять очередной символ от компьютера

D7 Тайм-аут (устройство не связано с компьютером)

Доступ к отдельным полям регистра состояния линии можно организовать с помощью следующего объединения:

5.3.7. Регистр состояния модема

Регистр состояния модема позволяет программе определить состояние управляющих сигналов, передаваемых модемом асинхронному порту компьютера. Формат регистра состояния модема представлен ниже:

D0 Если бит D0 равен единице, линия CTS изменила состояние

D1 Если бит равен единице, линия DSR изменила состояние

D2 Если бит D2 равен единице, линия RI изменила состояние. Некоторые коммуникационные программы определяют по состоянию этого бита наличие звонка на телефонной линии

D3 Если данный бит равен единице, значит линия DCD изменила свое состояние. Некоторые коммуникационные программы определяют по состоянию этого бита, установил ли модем соединение с удаленным модемом

D4 Бит соответствует состоянию линии CTS. Эта линия используется совместно с линией RTS при реализации аппаратного управления потоком данных

D5 Бит соответствует состоянию линии DSR. Эта линия используется совместно с линией DTR при аппаратной реализации подтверждения связи

D6 Бит соответствует состоянию линии RI. Единица означает, что модем обнаружил звонок на телефонной линии

D7 Состояние линии DCD. Единица означает, что модемом получена несущая частота. Заметим, что при выполнении аналогового теста (analog test) этот бит должен содержать единицу. Если это не так, то возможно, что модем исправен (для внешних модемов), но кабель, соединяющий модем и компьютер, не полностью соответствует стандарту RS-232

Доступ к отдельным полям регистра состояния модема можно организовать с помощью следующего объединения:

Опишем основные возможности различных микросхем UART:

5.4.1. Как определить тип микросхемы UART

Как же определить, какая из этих микросхем UART установлена на вашем асинхронном адаптере? Кроме возможности заглянуть в документацию, существует еще один способ. Фактически этот способ основан на различиях в особенностях микросхем UART. Ниже приведены особенности микросхем UART различных типов:

Согласно этим особенностям микросхем UART возможен следующий алгоритм определения их типа:

5.4.2. Программа для определения типа микросхемы UART

Теперь приведем программу TST_UART, реализующую изложенный алгоритм. В данной программе используются созданные нами функции is_UART_8250() и is_UART_FIFO(). Первая позволяет определить по отсутствию регистра расширения микросхему UART 8250, а вторая по особенностям реализации внутреннего буфера данных различает остальные типы микросхем.

Исходный текст программы TST_UART представлен в листинге 5.1.

Листинг 5.1. Файл TST_UART.C

5.4.3. Изменения в регистрах UART 16550A

В этой главе мы рассмотрим изменения в формате регистров UART 16550A по сравнению с UART 8250.

Если биты D7 и D6 оба равны единице, то разрешено использование буферизации (FIFO). Если же только бит D7 содержит единицу, это означает, что вы имеете дело с микросхемой UART 16550. В ней режим буферизации реализован с ошибками, и использовать его не надо.

Бит D3 используется для сигнализации тайм-аута. Он устанавливается в том случае, если буфер FIFO содержит данные, которые необходимо прочитать. Это случается после небольшого промежутка времени, если в буфер не поступают новые символы.

Если бит D3 содержит единицу, то бит D2 также содержит единицу. Это означает, что буфер приемника содержит данные.

Для микросхем UART 8250 и 16450 биты D3, D6 и D7 всегда содержат нули. Биты D4 и D5 не используются во всех рассматриваемых микросхемах.

Итак, регистр управления режимом буферизации имеет следующий формат:

D0 Установка этого бита в единицу разрешает использование буферизации для принимаемых и передаваемых данных. Этот бит должен содержать единицу, если какой-либо из других битов содержит единицу

D1 Сброс приемного буфера. При установке этого бита в единицу буфер приемника очищается. Затем бит автоматически сбрасывается в ноль

D2 Сброс буфера передатчика. При установке этого бита в единицу буфер передатчика очищается. Затем бит автоматически сбрасывается в ноль

D3 Выбор режима прямого доступа. Бит не используется на большинстве последовательных асинхронных адаптеров

D4-D5 Не используются

D7, D6 Управление прерываниями от приемника. Если буферизация отсутствует, то прерывание происходит всякий раз при приеме нового символа. С разрешенной буферизацией UART может генерировать прерывание при получении заданного количества символов:

Количество символов, байт

5.4.4. Как использовать буферизацию?

При приеме данных наблюдается аналогичная картина, за исключением того, что можно изменить число символов, которое необходимо получить для генерации прерывания. Когда принимается необходимое число символов, генерируется прерывание, но все остальные символы, поступающие в приемник, также размещаются в буфере. При этом прерывание при получении данных не очищается до тех пор, пока в буфере не станет меньше символов, чем определено битами D7 и D6.

При программировании UART 16550A для использования режима буферизации необходимо выполнить следующие действия:

Операционная система Windows 3.1 поддерживает новые возможности асинхронных последовательных адаптеров, созданных на основе микросхемы UART 16550A. Поэтому, когда вы пишете приложение для Windows, нет необходимости самостоятельно определять тип микросхемы UART.

Теперь мы приведем первую телекоммуникационную программу AUX_TEST, управляющую асинхронным последовательным адаптером на уровне регистров. Программа инициализирует регистры COM-порта, устанавливая новую скорость передачи информации и формат передаваемых данных. Затем программа в цикле передает коды клавиш, нажатых на клавиатуре в COM-порт и считывает из него принятые данные, отображая их на экране.

Программа работает с асинхронным адаптером COM1. Для правильной работы необходимо замкнуть вместе контакты 2 и 3 разъема COM1. В этом случае данные передаваемые в COM-порт сразу же принимаются им обратно.

Главный файл программы AUX_TEST представлен в листинге 5.2.

Листинг 5.2. Файл AUX_TEST.C

После запуска программы AUX_TEST вызывается функция aux_stat, определенная в нашем приложении. Она заполняет структуру amd типа AUX_MODE, записывая в нее информацию о текущем режиме COM-порта.

Информация, записанная в этой структуре, отображается на экране. Изменяем поле baud структуры amd, содержащее значение скорости передачи данных, записывая в нее число 115200. Затем функция aux_init, определенная в программе, увеличивает скорость передачи информации до 115200 бит/с.

Затем начинает выполняться бесконечный цикл, в котором вводится символ с клавиатуры и передается в COM-порт:

Сразу после передачи кода нажатой клавиши в COM-порт, вводим символ из этого же порта и отображаем его на экране:

Включаемый файл SYSP.H, представленный в листинге 5.3, содержит описания функций aux_stat, aux_init, aux_inp, aux_outp и определение структуры AUX_MODE.

Листинг 5.3. Файл SYSP.H

Теперь перейдем к рассмотрению функций aux_stat, aux_init, aux_inp и aux_outp, определенных в программе AUX_TEST.

5.5.1. Инициализация асинхронного адаптера

Выполнив ввод из управляющего регистра, программа может получить текущий режим адаптера. Для установки нового режима измените нужные вам поля и запишите новый байт режима обратно в управляющий регистр.

Если вам надо задать новое значение скорости обмена данными, перед записью байта режима установите старший бит этого байта в 1, при этом регистр данных и управляющий регистр используются для задания скорости обмена.

Перед началом работы необходимо также проинициализировать регистр управления прерываниями (порт 3F9h), даже если в вашей программе не используются прерывания от асинхронного адаптера. Для этого сначала надо перевести регистр данных и регистр управления прерываниями в обычный режим, записав ноль в старший бит управляющего регистра. Затем можно устанавливать регистр управления прерываниями. Если прерывания вам не нужны, запишите в этот порт нулевое значение. На этом инициализацию можно считать законченной.

Для того чтобы узнать текущее состояние асинхронного адаптера, вы можете использовать функцию aux_stat, представленную в листинге 5.4.

Листинг 5.4. Файл AUX_STAT.C

Прочитав состояние адаптера, вы можете изменить нужные вам поля в структуре AUX_MODE и вызвать функцию aux_init для изменения текущего режима COM-порта. Исходный текст этой функции можно найти в листинге 5.5.

Листинг 5.5. Файл AUX_INIT.C

5.5.2. Передача данных

Перед записью байта данных в регистр передатчика необходимо убедиться в том, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего символа завершена.

Признаком того, что регистр передатчика свободен, является установленный в 1 бит 5 регистра состояния линии с адресом base_adr + 5. Функция aux_outp (см. листинг 5.6) ждет окончания передачи текущего символа, затем посылает в асинхронный адаптер следующий символ.

Листинг 5.6. Файл AUX_OUTP.C

Аналогично передаче данных перед вводом символа из регистра данных (адрес base_adr) необходимо убедиться в том, что бит 0 регистра состояния линии (адрес base_adr + 5) установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника.

Для приема данных мы используем функцию aux_inp (см. листинг. 5.7).

Листинг 5.7. Файл AUX_INP.C

Для разрешения прерываний необходимо установить биты регистра управления прерываниями асинхронного адаптера, соответствующие тем прерываниям, которые мы желаем обрабатывать.

Когда произошло прерывание, программа-обработчик прерывания должна проанализировать причину прерывания, прочитав содержимое регистра идентификации прерывания с адресом base_adr + 2.

Может случиться так, что одновременно произойдет несколько прерываний. В этом случае бит 0 регистра идентификации прерывания будет установлен в 1. Если такая ситуация имеет место, перед завершением обработки прерывания вам надо снова прочитать регистр идентификации прерывания и обработать следующее прерывание.

Так следует поступать до тех пор, пока бит 0 регистра идентификации прерывания не станет равным нулю.

Если вы решили воспользоваться прерываниями, вырабатываемыми портами асинхронного адаптера, необходимо соответствующим образом запрограммировать контроллер прерываний компьютера.

В предыдущих томах из серии «Библиотека системного программиста» мы рассказывали о контроллере прерываний и о механизме прерываний в персональном компьютере IBM PC/XT/AT. Без умения работать с контроллером прерываний вы не сможете использовать режим прерываний при программировании последовательного асинхронного порта.

Ниже мы приведем полезные сведения о контроллере прерываний, необходимые для написания телекоммуникационных программ, работающих под управлением прерываний.

5.6.1. Механизм прерываний

Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое особое событие в системе, требующее моментальной реакции.

Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях, связанных с работой устройств, например, о том, что наконец-то завершилась печать символа на принтере и неплохо было бы выдать следующий символ, или о том, что получен очередной символ из последовательного порта и его надо записать в буфер.

Использование прерываний при работе с медленными внешними устройствами позволяет совместить ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую производительность системы.

Иногда желательно сделать систему нечувствительной ко всем или отдельным прерываниям. Для этого используют так называемое маскирование прерываний, о котором мы еще будем подробно говорить.

Составление собственных программ обработки прерываний и замена стандартных обработчиков DOS и BIOS является ответственной и сложной работой. Необходимо учитывать все тонкости работы аппаратуры и взаимодействия программного и аппаратного обеспечения. При отладке возможно разрушение операционной системы с непредсказуемыми последствиями, поэтому надо очень внимательно следить за тем, что делает ваша программа.

5.6.2. Таблица векторов прерываний

Инициализация таблицы происходит частично BIOS после тестирования аппаратуры и перед началом загрузки операционной системой, частично при загрузке MS-DOS. MS-DOS может переключить на себя некоторые прерывания BIOS.

5.6.3. Маскирование прерываний

Часто при выполнении критических участков программ для того, чтобы гарантировать выполнение определенной последовательности команд целиком, приходится запрещать прерывания. Это можно сделать командой CLI. Ее нужно поместить в начало критической последовательности команд, а в конце расположить команду STI, разрешающую процессору воспринимать прерывания. Команда CLI запрещает только маскируемые прерывания, немаскируемые всегда обрабатываются процессором.

Если вы используете запрет прерываний с помощью команды CLI, следите за тем, чтобы прерывания не отключались на длительный период времени, так как это может привести к нежелательным последствиям. Например, будут отставать часы.

Если вам надо запретить не все прерывания, а только некоторые, например, от асинхронного адаптера, то для этого надо воспользоваться услугами контроллера прерываний. Подробно об этом немного ниже, сейчас отметим только, что выдачей в этот контроллер определенной управляющей информации можно замаскировать прерывания от отдельных устройств.

5.6.4. Обработка аппаратных прерываний и контроллер прерываний

Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает необходимость их обслуживания. Например, по прерыванию таймера соответствующий обработчик прерывания увеличивает содержимое ячеек памяти, используемых для хранения времени. В отличие от программных прерываний, вызываемых запланировано самой прикладной программой, аппаратные прерывания всегда происходят асинхронно по отношению к выполняющимся программам. Кроме того, может возникнуть одновременно сразу несколько прерываний.

Для того чтобы система «не растерялась», решая, какое прерывание обслуживать в первую очередь, существует специальная схема приоритетов. Каждому прерыванию назначается свой уникальный приоритет. Если происходит одновременно несколько прерываний, то система отдает предпочтение самому высокоприоритетному, откладывая на время обработку остальных прерываний.

Приведем таблицу аппаратных прерываний, расположенных в порядке приоритета:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Для управления схемами приоритетов необходимо знать внутреннее устройство контроллера прерываний 8259. Поступающие прерывания запоминаются в регистре запроса на прерывание IRR. Каждый бит из восьми в этом регистре соответствует прерыванию. После проверки на обработку в настоящий момент другого прерывания запрашивается информация из регистра обслуживания ISR. Перед выдачей запроса на прерывание в процессор проверяется содержимое восьмибитового регистра маски прерываний IMR. Если прерывание данного уровня не замаскировано, то выдается запрос на прерывание.

Программируемый контроллер прерываний 8259 предназначен для обработки до восьми приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом общее число уровней прерываний будет достигать 64.

Однако часто возникает необходимость изменения текущего режима работы (запрет или разрешение прерываний определенного или всех уровней, обработка конца прерывания) или опроса состояния внутренних регистров контроллера. Для этого необходимо ознакомиться со справочными данными на микросхему 8259, где детально описано как первоначальное программирование контроллера, так и управление им во время работы.

Каждому приоритетному уровню прерывания микросхема ставит в соответствие определенный, задаваемый программно, номер прерывания.

Если контроллеры 8259 каскадированы, то ведомой микросхеме присваивается код (выдачей в микросхему соответствующего командного слова). Этот код равен номеру входа IRQ_ведущей микросхемы, с которым соединен выход запроса прерывания INT ведомой микросхемы. Внутри микросхемы приоритет зависит от номера IRQ и задается программно. Для компьютеров XT и AT самым высоким приоритетом внутри группы, обслуживаемой каждым контроллером, является вход IRQ0. Однако возможно программное изменение приоритетов в рамках так называемого приоритетного кольца. При этом дно приоритетного кольца имеет самый низкий приоритет.

Приведем возможные варианты задания приоритетов:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Для обработки прерываний контроллер имеет несколько внутренних регистров. Это регистр запросов прерываний IRR, регистр обслуживания прерываний ISR, регистр маски прерываний IMR. В регистре IRR хранятся запросы на обслуживание прерываний от аппаратуры. После выработки сигнала прерывания центральному процессору соответствующий разряд регистра ISR устанавливается в единичное состояние, что блокирует обслуживание всех запросов с равным или более низким приоритетом. Устранить эту блокировку можно либо сбросом соответствующего бита в ISR, либо командой специального маскирования.

Мы не будем подробно описывать команды инициализации контроллера 8259, так как программистам они, скорее всего, не понадобятся. Желающих разобраться во всех тонкостях задания начального режима работы контроллера прерываний мы отсылаем к справочной литературе по микросхеме 8259.

Рассмотрим команды операций. Существует три типа команд операций:

1. Маскирование запросов прерывания.

2. Команды обработки конца прерывания.

3. Опрос регистров и специальное маскирование.

Байты команды маскирования запросов прерывания выводятся соответственно в порты 21h и A1h для первого и второго контроллера 8259 компьютера AT. Команды операций второго и третьего типа используют порты с адресами 20h и A0h.

Для маскирования какого-либо уровня прерывания надо записать в регистр маски IMR по адресу 21h или A1h единицу в разряд регистра, соответствующий этому уровню. Например, для маскирования прерываний от НГМД в порт 21h надо заслать двоичное число 01000000.

В листинге 5.8 приведен пример программы LOCKFDD, маскирующей прерывание от флоппи-диска.

Листинг 5.8. Файл LOCKFDD.C

Чтобы «оживить» флоппи-диски, запустите программу UNLOCK, которая размаскирует все прерывания (в том числе и от флоппи-диска). Исходный текст этой программы представлен в листинге 5.9.

Листинг 5.9. Файл UNLOCK.C

Заметьте, что мы только что замаскировали прерывание именно от флоппи-диска, все остальные устройства продолжали нормально работать. Если бы мы выдали машинную команду CLI, то отключились бы все аппаратные прерывания. Это привело бы, например, к тому, что клавиатура была бы заблокирована.

Еще одно замечание, касающееся обработки аппаратных прерываний. Если вы полностью заменяете стандартный обработчик аппаратного прерывания, не забудьте в конце программы выдать команду обработки конца прерывания. Эти действия необходимы для очистки регистра обслуживания прерывания ISR. При этом разрешается обработка прерываний с более низким приоритетом, чем то, которое только что обрабатывалось.

Команды обработки конца прерывания приведем в виде таблицы:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

Команды третьего типа выдаются также в порты с адресами 20h и A0h. Они имеют следующий формат:

ras async adapter что это. Смотреть фото ras async adapter что это. Смотреть картинку ras async adapter что это. Картинка про ras async adapter что это. Фото ras async adapter что это

По команде обычного конца прерывания устанавливается в нулевое состояние разряд ISR, соответствующий последнему обслуженному запросу.

Команда специального конца прерывания устанавливает в нулевое состояние тот разряд ISR, номер которого указан в разрядах B0. B2 команды.

Команда циклического сдвига уровней приоритета с обычным концом прерывания устанавливает в ноль разряд ISR, соответствующий последнему обслуженному запросу, и этому же номеру запроса присваивается низший уровень приоритета.

Аналогично работает команда циклического сдвига уровней приоритета со специальным концом прерывания, только низший уровень приоритета присваивается тому входу IRQ, номер которого указан в разрядах B0. B2 команды.

Команда циклического сдвига уровней приоритета устанавливает статус уровней приоритета без выполнения операции конца прерывания. Разряды B0. B2 указывают дно приоритетного кольца.

После выполнения команд разрешения чтения регистров ISR или IRR при выполнении команды ввода из порта 20h и A0h считывается соответственно содержимое регистров ISR и IRR. Для получения содержимого регистра IMR необходимо выполнить чтение портов с адресами соответственно 21h и A1h.

Команда разрешения триггера специального маскирования блокирует действие тех разрядов ISR, которые замаскированы командой типа 1 (маскирования индивидуальных приоритетных уровней запроса прерывания). Специальное маскирование используется для обслуживания такого запроса, который блокируется старшим или равным по уровню приоритета обслуженным запросом, хранящимся в ISR, не сбрасывая последний.

В этом разделе мы опишем функции BIOS, облегчающие обслуживание асинхронного последовательного адаптера. Эти функции доступны через прерывание INT 14h.

Первая функция предназначена для инициализации портов асинхронного адаптера:

AL = параметры инициализации (см. ниже).

На выходе: AH = состояние порта асинхронного адаптера;

AL = состояние модема.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *