EmbeddedRelated.com
Forums
The 2025 Embedded Online Conference

LPC2148, URAT and FIFO interrupts

Started by Jan Thogersen September 1, 2006
Hi all,

I'm playing with the uart fifo's on the LPC2148 and I have some problems
getting the receiver buffer timeout interrupt to work. When I disable
the fifo the interrupt works just fine. I get the interrupt when the
uart have received a new byte. However, when the fifo i on I should get
an interrupt when the receiver times out.
Maybe I haven't enabled the right interrupt...
As far as I know, the processor should invoke an interrupt when the
receiver fifo reached the trigger level, but also if it receives lets
say one byte and then none for a while.
And it's this timeout I'm trying to get. Here is the way that I
initializes the uart: U1IER = U1IER_RBR_Interrupt_Enable;

Thanks in advance!

Regards
Jan

An Engineer's Guide to the LPC2100 Series

Jan I've been using this for quite some time, with no problems. Here
is the init code snippet:
// Clear and enable FIFO, trig level 8
*(po->Ubase + FCR) = 0x87;
// Enable Rx interrupt
*(po->Ubase + IER) = 0x01;

When I get an Rx interrupt, I first get the IIR and mask with 0x0F.
0x00: Modem Status
0x06: Uart error
0x02: Transmitter FIFO empty
0x0C: Reciever FIFO stale (the one you deon't get)
0x04: Reciever FIFO at trig fill level
I then empty the reveiver FIFO in the ISR (until bit 0 in LSR is no
longer set). If I don't do that I may not get another reciever FIFO
stale interrupt.

Regards,
Lars Marmsater

--- In l..., Jan Thogersen wrote:
>
> Hi all,
>
> I'm playing with the uart fifo's on the LPC2148 and I have some
problems
> getting the receiver buffer timeout interrupt to work. When I
disable
> the fifo the interrupt works just fine. I get the interrupt when
the
> uart have received a new byte. However, when the fifo i on I should
get
> an interrupt when the receiver times out.
> Maybe I haven't enabled the right interrupt...
> As far as I know, the processor should invoke an interrupt when the
> receiver fifo reached the trigger level, but also if it receives
lets
> say one byte and then none for a while.
> And it's this timeout I'm trying to get. Here is the way that I
> initializes the uart: U1IER = U1IER_RBR_Interrupt_Enable;
>
> Thanks in advance!
>
> Regards
> Jan
>

The 2025 Embedded Online Conference