Регистр разрешения прерываний. Единичное значение бита соответствует разрешению прерывания, назначение битов приведено в табл. 9. Если работа с портом идет без использования прерываний, то их следует запретить путем записи 0 в этот регистр.
В табл. 10, 14 значком * отмечены биты, не используемые в i8250.
Таблица 9. Регистр разрешения прерываний
Бит
Значение
7,6,5,4
= 0, не используются
По изменении статуса модема (STS, DSR, RI, RLSD )
По ошибке приема данных
По завершении передачи
По приему символа ( в режиме FIFO - по тайм-ауту)
Регистр идентификации прерываний (табл. 10). Ввиду того, что контроллер обслуживается одним прерыванием, а возникать оно может в четырех различных ситуациях, в процедуре обработки прерывания необходимо выяснить, по какой причине произошло прерывание.
00 – прерывание от приемника; 01 – есть данные в приемнике
10 – буфер передатчика пуст; 11 – изменение статуса модема
1 – нет запроса прерывания, 0 – есть запрос
В режиме FIFO биты 3-0 имеют иной смысл:
Продолжение табл. 10
2,1,0*
011 – обрыв, ошибка/обрыв линии; сброс - чтение регистра состояния линии
010 - принят символ; сброс - чтение регистра приемника
110 - индикатор тайм-аута (4-кратный интервал времени передачи символа). Генерируется, если в FIFO- буфере есть символы
001 - регистр передатчика пуст; сброс - запись в регистр передатчика
000 - изменение состояния модема; сброс - чтение регистра состояния модема
Регистр управления FIFO (только для записи, только 16550+) представлен в табл.11. Для очистки буферов FIFO необходимо запретить и затем снова разрешить режим FIFO. Для задания основных параметров адаптера применяется регистр управления линией (табл. 12). Бит 7 регистра управления линией называется DLAB и предназначен для определения назначения регистров 0 и 1. Он устанавливается в единичное состояние только на время программирования делителя управления скоростью передачи.
Таблица 11. Регистр управления FIFO
Бит
Значение
7,6
Уровень заполнения FIFO-буфера, при котором генерируется прерывание (00 - 1 байт, 01 - 4 байта, 10 - 8 байт, 11 - 14 байт)
5,4
Резерв
Разрешение операций DMA
Сброс счетчика FIFO-передатчика
Сброс счетчика FIFO-приемника
Разрешение («1») режима FIFO для передатчика и приемника. При смене режима FIFO буфера очищаются!
Таблица 12. Регистр управления линией
Бит
Значение
DLAB. Управление доступом к регистрам адаптера интерфейса.
1 – режим программирования делителя, 0 – чтение/запись
Формирование «обрыва линии» (вывод нулей)
Принудительная четность (если 0, то бит паритета генерируется в соответствии с паритетом символа, «1» - всегда равен инверсному значению бита 4 этого регистра)
Тип паритета («1»-четность, «0»-нечетность)
Разрешение бита контроля четности («1» – формируется, «0» – запрещен)
Длина стоп-бита («0»-1, «1»-1,5 при длине слов 5 бит и 2 при длине слова 6-8 бит)
1,0
Длина слова в битах
00 - 5; 01 - 6; 10 - 7; 11 - 8
Бит 4 управляет типом паритета, бит 3 задает разрешение контроля паритета. Бит 2 задает длину стоп-бита. Биты 1-0 определяют длину слова. Наиболее часто применяются слова длиной 7 и 8 бит.
Регистр управления модемом позволяет управлять модемом. Назначения битов приведены в табл. 13.
Таблица 13. Регистр управления модемом
Бит
Значение
7,6,5
=0 – резерв
«0» – нормальный режим, «1» – режим диагностики
OUT2 инверсный (разрешить прерывания от RS-232)
OUT1 инверсный (используется только в режиме диагностики)
В режиме диагностики выход передатчика переводится в состояние «1», вход приемника отключается, выход сдвигающего регистра передатчика логически соединяется с входом приемника; входы DSR, CTS, RI, DCD отключаются от входных линий и соединяются с DTRС, RTSC, OUT1, OUT2 соответственно, выходы управления модемом переводятся в пассивное состояние. Переданный в таком режиме байт должен немедленно приниматься, что позволяет проверять внутренние каналы данных порта и сдвиговые регистры.
Регистр состояния линии позволяет определить состояние приемопередатчика (табл.14).
Регистр состояния модема (табл. 15) позволяет определить состояние модема. Биты 3-0 вызывают прерывание «Изменение состояния модема». «1» в любом из этих битов свидетельствует о том, что состояние линии изменилось по сравнению с состоянием на момент последнего чтения этого регистра.
Таблица 14. Регистр состояния линии
Бит
Значение
7*
Ошибка принятых данных в режиме FIFO (буфер FIFO содержит хотя бы один символ, принятый с ошибкой)
Буфер передатчика пуст (символов нет ни в регистре передатчика, ни в сдвиговом регистре, ни в буфере FIFO)