We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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