Таблица 11.9. Обработка прерываний UART1
U1IIR [3:0] |
Приоритет |
Тип прерывания |
Источник прерывания |
Метод сброса прерывания |
0001 |
Нет |
Нет |
- |
|
оно |
Наиболее высокое |
Состояние линии Rx/ошибка |
ОЕ, или РЕ, или FE, или BI |
Чтение U1LSR |
0100 |
Вторичное |
Принятые данные доступны |
Принятые данные доступны или достигнут уровень срабатывания триггера-защелки в приемном буфере FIFO (U1FCR0 = 1) |
Чтение U1RBR или снижение уровня срабатывания триггера-защелки приемного буфера FIFO UART1 |
1100 |
Вторичное |
Индикация тайм-аута символа |
В приемном буфере FIFO находится, как минимум, один символ, при этом в течение некоторого периода времени не производится операций ввода или удаления символов в буфере FIFO. Длительность этого периода времени зависит от того, сколько символов находится в буфере FIFO и какой установлен уровень срабатывания триггера-защелки (от 3.5 до 4.5 периодов длительности символа). Точное время определяется как: [(длина слова) х 7 - 2] х 8 + [(уровень триггера — количество символов) х 8 + 1] х RCLK |
Чтение U1RBR |
Таблица 11.9. Обработка прерываний UART1 (продолжение)
U1IIR [3:0] |
Приоритет |
Тип прерывания |
Источник прерывания |
Метод сброса прерывания |
0010 |
Третичное |
THRE |
THRE |
Чтение U1IIR (если он — источник прерывания) или запись bUITHR |
0000 |
Четверичное |
Состояние модема |
CTS, или DSR, или RI, или DCD |
Чтение LUMSR |
Примечание. Значения 0011,0101,0111,1000,1001,1010,1011,1101,1110,1111 зарезервированы.
RLS-прерывание UART1 (U1IIR[3:1] = 011) является прерыванием с самым высоким приоритетом и генерируется всякий раз, когда на входе Rx UART1 имеет место одно из четырех условий (состояний) ошибки: ошибка переполнения (ОЕ), ошибка четности (РЕ), ошибка кадровой синхронизации (FE) и прерывание останова (BI). Состояния ошибки приема UART1, которые вызывают прерывание, отображаются в значениях битов U1LSR[4:1]. Прерывание сбрасывается после чтения U1LSR.
RDA-прерывание UART1 (U1IIR[3:1] = 010), как и СП-прерывание (U1IIR[3:1] = 110), имеет второй уровень приоритета. Прерывание RDA активизируется, когда приемный буфер FIFO UART1 заполняется до уровня срабатывания триггера-защелки, определенного битами U1FCR[7:6], и сбрасывается, когда приемный буфер FIFO UART1 освобождается ниже уровня срабатывания триггера-защелки. Когда прерывание RDA активно, центральный процессор может читать блок данных, размер которого определен уровнем срабатывания триггера-защелки.
СП-прерывание (U1IIR[3:1] = ПО) имеет второй уровень приоритета и генерируется, когда приемный буфер FIFO UART1 содержит не менее одного символа и не пополняется и/или не освобождается в течении времени, равного от 3.5 до 4.5 периодов длительности символа. Любая активность приемного буфера FIFO UART1 (чтение или запись сдвигового регистра приема U1RSR UART1) сбросит прерывание. Это прерывание используется, чтобы сохранить U1RBR после того, как символьное сообщение (последовательность символов) было получено, а заданный уровень срабатывания триггера (защелки) еще не достигнут. Например, если периферийное устройство хочет послать 105 символов, и уровень срабатывания триггера (защелки) установлен равным 10 символов, центральный процессор получил бы 10 прерываний RDA, приводящих к перемещению 100 символов и от 1 до 5 прерываний CTI (в зависимости от сервисной подпрограммы), приводящих к перемещению (сохранению) 5 символов.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |