avr-gcc-list
[Top][All Lists]

## Re: [avr-gcc-list] How to calculate loops?

 From: Laszlo Subject: Re: [avr-gcc-list] How to calculate loops? Date: Fri, 06 Aug 2004 00:20:28 -0700 User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040113

I'm going way out on a limb, since (ducking) I don't even have avr-gcc. I've done all my work in ASM so far. If (and I'm speculating here) _delay_loop_1() takes a 8 bit parameter and simply counts down clock ticks, you would be looking at a loop of about 3 clock cycles per count: one clock cycle for the DEC and [about] two cycles for the BRNE. So multiply that .25us period per cycle times 3 cycles per loop times the parameter passed in. Also, the very last BRNE check only takes one cycle, not two; So subtract one cycle at .25us from all of that.
```
_delay_loop_1(1)  = (.25us * 3 * 1)  - .25us = 0.5us
_delay_loop_1(69) = (.25us * 3 * 69) - .25us = 51.5us

```
If _delay_loop_1() is actually a subroutine (rather than a macro), add to that about another 7 cycles for the RCALL/RET.
```
```
If someone realizes I have no idea what I'm talking about, I'll gladly accept a good smacking-down. ;)
```
Laszlo

Johan Nilsson wrote:
```
```Hmm
```
im using the avr-gcc _delay_loop_1(), but where do i find how long time it goes? if i use 4Mhz , and the AVR instuctions takes one cycle, how long execution time does that instruction take?
```Does it take 0,25 mikroseconds?
Can anyone explain this to me?
```
```
--
"That's the last time *I* answer to the name 'Sarah Conner'!" - me

```