This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interrupt problem

hi,

I've been using TL16C752b in my project. The trigger level of Rx fifo is set to 8. When the interrupt is generated, software is respond to that. Meantime,there is data receiving in the Rx line. So, 9 bytes are read in this interrupt  respond and after that the INTA goes inactive.But about 1.4us later(Baud rate is 57600),the INTA signal is active again(only IER0 is set so it is either a RHR interrupt or a timeout interrupt) but the 10th UART word is not received completely yet.The IIR is 0xC1(indicate that no interrupt is pending). My question is, why is the second interrupt generated?Is this a valid interrupt(Since the IIR shows no interrupt is pending)?

Thanks

  • Hello Jiaxin,

    When software reads the 9 characters from the RHR that clears the interrupt. The second interrupt is not valid since the device RHR has not reeached the trigger level, and the 10th byte is not completely received at this point.

    Attached is an errata for the TL16C752B device. In your case, since the RX line is still active you should not see a timeout interrupt. In the Work Around, the errata states:

    Work Around:

    If software is responding to an asserted INT and a read of the IIR reports no active interrupt, then assume it is caused by a new byte being received.
    Check the LSR; if LSR0 = 1 (at least one character is in the RHR), read the RHR
    and repeat.


    Best Regards,

    Joe

    sllz049.pdf
  • Thanks for the detailed answer, Joe. It worked.