Bolo
|
While trying to find out why I can't get uart0 interrupts to work, I discovered that the IPEND bit 4 is set all the time, which globally disables interrupts. I am printing it from a simple myfunc() command '%a' which calls this function: Code:void dump_interrupt_registers() {
printf("UART0_IER = %08x \r\n", *pUART0_IER);
printf("EVT10 = %08x \r\n", *pEVT10);
printf("IMASK = %08x \r\n", *pIMASK);
printf("SIC_IMASK = %08x \r\n", *pSIC_IMASK);
printf("IPEND = %08x \r\n", *pIPEND);
printf("ILAT = %08x \r\n", *pILAT);
}
Here is the output: Code:
##Version - SRV-1 Blackfin w/picoC 0.91 20:16:14 - Aug 19 2009
myfunc: version 1.41
UART0_IER = 00000000
EVT10 = 00003144
IMASK = 0000001f
SIC_IMASK = 00000000
IPEND = 00000012
ILAT = 00000000
I get this result after a reset or power-up, before I try to enable uart interrupts, or doing anything else. Can someone please run this same function and tell me what output they get? I am wondering if I have a bad BlackFin chip, or if there is something in the stock firmware that could cause this bit to be set. According to the BF Programmer Reference Manual, this bit should only get set temporarily upon entry or exit from an interrupt service routine, and can only be changed by the Core Event Controller, not the user code. Thanks! Bolo
|