You need to check U1IIR (Interrupt Identification Register) and not
U1LSR (Line Status Register). Also Bit 0 of IIR is 1 if there is no
> I have a strange problem.
> I am using a vectored IRQ on UART1. Sometimes I boot the application
> and it works fine. Other times I boot it and it locks up on the IRQ
> vector handler, that is it keeps re-entering the IRQ handler and never
> process the 'main loop'.
> On Entry to the IRQ handler, VICIRQStatus=0x80, indicating Uart1, but
> the U1LSR register is 0 (most of the time, regular int's also occur).
> I am writing 0 to the VICVectAddr at the end of the routine, and like
> I said, sometimes it works fine.
> Is there some condition where it is possible to have a U1 interuppt
> when U1LSR=0?