Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Interrupt pending but not raised

2005-12-06 by andersryl

Hi,

I have a very peculiar problem regarding interrupts on my Olimex 
E2214 board (using gcc and gld with Eclipse).

I'm trying to get my board to communicate with a Windows application 
using the UART1. The way it works is that the Win app sends frames 
with commands to the test board to which the ARM responds by sending 
a new frame back to the PC. I have set the UART1 to give interrupts 
when the RxFIFO is filled with 8 bytes.

Each frame consists of 12 to 100 bytes (11 bytes header and 1-89 
bytes of data).

The communication works fine the first 4 rounds (request+reply).

However the fifth time the Win app starts sending a "request-frame" 
the ARM does not generate any interrupts. I can see that there are 
interrupts pending (by debug print-outs with the other UART from a 
busy-waiting loop*) and that the peripherals that should give 
interrupts are enabled to do so.

I also have a timer running giving an interrupt after 2 seconds if 
no data is received (should not happen in normal operation due to 
frequent requests from the Win app). This timer interrupt works fine 
until the Win app starts sending frames. After the last request 
(as described above) this interrupt is also pending but no interrupt 
is raised.

From debug print-outs from the ISRs I also see that I never leave my 
two ISRs (One for UART1 and one for Timer0) with any interrupts 
pending.

*) Debug print-outs after the fifth Win app request frame:
VICIRQStatus: 0x00000080
VICIntEnable: 0x00000090
VICVectAddr:  0x000000D4
T0IR:               0x00
T0TCR:              0x01
T0MCR:            0x0003
U1IIR:              0xC4

VICIRQStatus: 0x00000090
VICIntEnable: 0x00000090
VICVectAddr:  0x00000000
T0IR:               0x01
T0TCR:              0x01
T0MCR:            0x0003
U1IIR:              0xC4

Sorry about the long post.
Any help is greatly accepted.

/Anders

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.