I debug program for ADUC7026 in uVision IDE using simulator. I have simple C code for Timer0 IRQ Handler as following:
void IRQ_Handler() __irq { if (IRQSIG & RTOS_TIMER_BIT) { if (btn_delay) btn_delay--; if (hl_delay) hl_delay--; T0CLRI = 0x1; } }
In Disassembly window I see that code translated into about 20 instructions. If ADUC have core clock frequency 41.76 MHz, one clock is about 25 ns and this code is 20x25=500 ns long (if all instructions are 1 clock long, I have not found any info about ARM instructions length). Plus interrupt latency about 20...30 clock. So total time is about 1 us. But in Performance Analyzer Window I see the execution time for that handler 3 us!!! Why so?
Actually most ARM instructions take longer than 1 cycle to execute. Look for ARM7TDMI Technical Reference Manual here: arm.com/.../index.html This document includes instruction cycle timings. Also note that in any particular microcontroller accesses to memory/registers may generate extra wait states.
Regards, - mike
Thank you very much Regards Vitaliy