Hi All. Just looking for a little help ... I must be doing something silly, but for the life of me I can't figure it out. I've taken the TMR0 interrupt code from blinky, and used it as my own ISR. When I use this code in a new project, I can set a breakpoint at the start of the ISR, and I will always reach the breakpoint in the simulator. So far, so good. Yet when I run the application on real hardware, the breakpoint is never reached, i.e. the ISR is never serviced. Yet the rest of the application runs fine, as is witnessed by a continually up-counting counter in the main loop (proves that application isn't resetting, via watchdog or whatever). Also, my examination of the peripherals doesn't reveal any differences in the Interrupt and TMR0 configurations from the way they're setup in the simulator. Also, there's no evidence of resets or restarts (that I can find). Normally, I'd say there was something wrong with the interrupt code ... but Blinky as supplied by Keil works fine in the simulator and on real code. I should also add that I've already written several decent-sized apps that do not involve any interrupts, and they work identically in the simulator and on real hardware. I'm new to ARM. What am I missing?
The problem is not caused by ULINK (or any other JTAG debugger). It is due to a problem in the VIC (vectored interrupt controller) of the ARM Device. See also: http://www.keil.com/support/docs/2888.htm It is also documented in the current Philips User's Manuals under the topic SPURIOUS INTERRUPTS.
OK, thanks for the clarification -- I thought that the debug interface was the source of the spuriour interrupts, but as you've pointed out, this is more of an inherent VIC issue. Anyway, very glad to see that we have a fix. It's been working perfectly here for several days now ...