Reply by Richard Duits January 10, 20062006-01-10
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
interrupt pending.

Richard.
nonuckingfumber wrote:

> 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? >
> >. >
>




An Engineer's Guide to the LPC2100 Series

Reply by nonuckingfumber January 10, 20062006-01-10
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?