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

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


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

Начнем с регистра идентификации прерывания. Этот регистр доступен только для чтения. По сравнению с UART 8250 в нем добавлены два бита - D6 и D7, которые показывают состояние буфера FIFO.

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

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

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

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

Для управления режимом буферизации UART 16550A имеет дополнительный регистр - регистр управления буферизацией FIFO. Этот регистр разделяет общий адрес с регистром идентификации прерываний - base_adr + 2. Но в отличие от регистра идентификации прерываний, доступного только для чтения, этот регистр доступен только для записи.

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

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

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

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

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




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

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

Биты D7 D6

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

00

1

01

4

10

8

11

14


Содержание раздела