Visible to Intel only — GUID: dqo1673379992583
Ixiasoft
Visible to Intel only — GUID: dqo1673379992583
Ixiasoft
5.13.6.6. UART Controller Interrupts
The assertion of the UART interrupt output signal occurs when one of the following interrupt types are enabled and active:
Interrupt Type |
Priority |
Source |
Interrupt Reset Control |
---|---|---|---|
Receiver line status |
Highest |
Overrun, parity and framing errors, break condition. |
Reading the line status Register. |
Received data available |
Second |
Receiver data available (FIFOs disabled) or RCVR FIFO trigger level reached (FIFOs enabled). |
Reading the receiver buffer register (FIFOs disabled) or the FIFO drops below the trigger level (FIFOs enabled) |
Character timeout indication |
Second |
No characters in or out of the Receive FIFO during the last 4 character times and there is at least one character in it during this Time. |
Reading the receiver buffer Register. |
Transmit holding register empty |
Third |
Transmitter holding register empty (Programmable THRE Mode disabled) or Transmit FIFO at or below threshold (Programmable THRE Mode enabled). |
Reading the IIR register (if source of interrupt); or, writing into THR (FIFOs or Programmable THRE Mode not enabled) or Transmit FIFO above threshold (FIFOs and Programmable THRE Mode enabled). |
Modem Status |
Fourth |
Clear to send or data set ready or ring indicator or data carrier detect. If auto flow control mode is enabled, a change in CTS (that is, DCTS set) does not cause an interrupt. |
Reading the Modem status Register. |
You can enable the interrupt types with the interrupt enable register (IER_DLH).
Once an interrupt is signaled, you can determine the interrupt source by reading the Interrupt Identity Register (IIR).
The UART has a programmable THRE interrupt mode to increase system performance. You enable the programmable THRE interrupt mode with the interrupt enable register (IER_DLH.PTIME). When the THRE mode is enabled, THRE interrupts and the dma_tx_req signal are active at and below a programmed transmit FIFO buffer empty threshold level, as shown in the flowchart.
The threshold level is programmed into FCR.TET. The available empty thresholds are empty, 2, ¼, and ½. The optimum threshold value depends on the system's ability to begin a new transmission sequence in a timely manner. However, one of these thresholds should prove optimum in increasing system performance by preventing the transmit FIFO buffer from running empty.
In addition to the interrupt change, line status register (LSR.THRE) also switches from indicating that the transmit FIFO buffer is empty, to indicating that the FIFO buffer is full. This change allows software to fill the FIFO buffer for each transmit sequence by polling LSR.THRE before writing another character. This directs the UART to fill the transmit FIFO buffer whenever an interrupt occurs and there is data to transmit, instead of waiting until the FIFO buffer is completely empty. Waiting until the FIFO buffer is empty reduces performance whenever the system is too busy to respond immediately. You can increase system efficiency when this mode is enabled in combination with automatic flow control.
When not selected or disabled, THRE interrupts and LSR.THRE function normally, reflecting an empty THR or FIFO buffer.