I have a problem getting a UART0 receive interrupt to function using
Eclipse. I cannot get the ISR for UART0 to respond to an interrupt
request. It appears the request is enabled and acknowledged, but not
processed. I suspect the problem is with the crt0.s assembler startup
code. Unfortunately, I don't really know a lot about what needs to be
there in terms of interrupt handlers. I've attached a copy of the
crt0.s file, along with a snippet showing the interrupt initialization
routine and the UART0 ISR (barebones - just sends back a "u" to indicate
the routine has been serviced and clears the interrupt).
Here are the values of the status registers before I hit a key to send a
character to UART0:
VICIRQStatus = 0x0
VICFIQStatus = 0x0
VICIntSelect = 0x0
VICIntEnable = 0x40
VICSoftInt = 0x0
VICDefVectAddr = 0x494
VICVectAddr0 = 0x3A0
VICVectCntl0 = 0x26
VICVectAddr1 = 0x374
VICVectCntl1 = 0x27
U0IER = 0x1
U1IER = 0x0
And here are the status registers after I hit the key to send a
character to UART0
VICIRQStatus = 0x40
VICFIQStatus = 0x0
VICIntSelect = 0x0
VICIntEnable = 0x40
VICSoftInt = 0x0
VICDefVectAddr = 0x494
VICVectAddr0 = 0x3A0
VICVectCntl0 = 0x26
VICVectAddr1 = 0x374
VICVectCntl1 = 0x27
U0IER = 0x1
U1IER = 0x0
As you can see, the VICIRQStatus changed, but the interrupt never
vectored to the service routine. Does there need to be a low-level
assembler handler in the crt0.s code, or am I doing something wrong in
the high-level code?
Thanks for any help in this matter!