— по приему символа (в режиме FIFO — прерывание по тайм-ауту).
IIR
— регистр
идентификации прерываний и признака режима FIFO (только для чтения). Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника. Ниже описано назначение бит регистра IIR.
♦ Биты [7:6] — признак режима FIFO:
• 11 — режим FIFO 16550A;
• 10 — режим FIFO 16550;
• 00 — обычный.
♦ Биты [5:4] — не используются.
♦ Бит 3 — прерывание по тайм-ауту приема в режиме FIFO (в буфере есть символы для считывания).
♦ Биты [2:1] — причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):
• 11 — ошибка/обрыв линии, сброс выполняется чтением регистра состояния линии;
• 10 — принят символ, сброс выполняется чтением данных;
• 01 — передан символ (регистр
THR
пуст), сброс выполняется записью данных;
• 00 — изменение состояния модема; сброс выполняется чтением регистра состояния модема.
♦ Бит 0 — признак необслуженного запроса прерывания (1 — нет запроса, 0 — есть запрос).
В режиме FIFO причину прерывания идентифицируют биты [3:1].
♦ 010 — принят символ. Сброс выполняется чтением регистра данных приемника.
♦ 110 — индикатор тайм-аута (за 4-кратный интервал времени символа не передано и не принято ни одного символа, хотя в буфере имеется, по крайней мере, один). Сброс выполняется чтением регистра данных приемника.
♦ 001 — регистр
THR
пуст. Сброс выполняется записью данных.
♦ 000 — изменение состояния модема (
CIS
,
DSR
,
RI
или
DCD
). Сброс выполняется чтением регистра
MSR
.
FCR
— регистр управления FIFO (только для записи). Ниже описано назначение бит регистра
FCR
:
♦ Биты [7:6] —
ITL
(Interrupt Trigger Level) — уровень заполнения FIFO-буфера, при котором вырабатывается прерывание:
сброс счетчика FIFO-приемника (записью единицы; сдвигающий регистр не сбрасывается).
♦ Бит 0 —
TRFIFOE
(Transmit And Receive FIFO Enable) — разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.
LCR
— регистр управления линией (настройки параметров канала). Ниже описано назначение бит регистра
LCR
.
♦ Бит 7 —
DLAB
(Divisor Latch Access Bit) — управление доступом к делителю частоты.
♦ Бит 6 —
BRCON
(Break Control) — формирование обрыва линии (посылка нулей) при
BRCON
=1.
♦ Бит 5 —
STICPAR
(Sticky Parity) — принудительное формирование бита паритета:
• 0 — контрольный бит генерируется в соответствии с паритетом выводимого символа;
• 1 — постоянное значение контрольного бита: при
EVENPAR
=1 — нулевое, при
EVENPAR
=0 — единичное.
♦ Бит 4 —
EVENPAR
(Even Parity Select) — выбор типа контроля: 0 — нечетность, 1 — четность.
♦ Бит 3 —
PAREN
(Parity Enable) — разрешение контрольного бита:
• 1 — контрольный бит (паритет или постоянный) разрешен;
• 0 — контрольный бит запрещен.
♦ Бит 2 —
STOPВ
(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) — разрешение режима диагностики:
• 0 — нормальный режим;
• 1 — режим диагностики (см. ниже).
♦ Бит 3 —
IE
(Interrupt Enable) — разрешение прерываний с помощью внешнего выхода
OUT2
; в режиме диагностики поступает на вход
MSR.7
:
• 0 — прерывания запрещены;
• 1 — прерывания разрешены.
♦ Бит 2 —
OUT1C
(OUT1 Bit Control) — управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход
MSR.6
.
♦ Бит 1 —
RTSC
(Request To Send Control) — управление выходом
RTS
; в режиме диагностики поступает на вход
MSR.4
:
• 0 — активен (-V);
• 1 — пассивен (+V).
♦ Бит 0 —
DTRC
(Data Terminal Ready Control) — управление выходом