Hallo,

ich werde gerade wahnsinnig mit einer Schleife hier, hoffe dass das hier reinpasst

Also, ich möchte bei meinem Atmel Mega8 mit einem 4 MHZ Osziallator eine Verzögerung von 5 Milisekunden (Befehle in der Prozedur können erstmal vernachlässigt werden) erzeugen.

Ich benutze folgenden Code:

Code:
;ldi reg1, X
ldi reg1, 113 ;1 Takt

;Dauer von Schleife 1 (abhängig von x,y):
;s1(x) = x + x + 2(x-1) + 1 + (x * s2(y)	
;Zusammengefasst:
;s1(x) = 3x*(y+1)-1

schleife1:
	;ldi reg2, Y
	ldi reg2, 58 ;1 Takt * x

	;Dauer von Schleife 2 (abhängig von y);
	;ist s2(y) = 3y-1
	schleife2:
		dec reg2 ;1 Takt*y
	brne schleife2 ;2 Takte * (y-1) + 1

	dec reg1 ;1 Takt * x
brne schleife1 ;2 Takte * (x-1) + 1
Jetzt hab ich mir nen kleines Pascal-Programm geschrieben, dass mithilfe der Formel, die ich für diesen Algorithmus aufgestellt hab, alle möglichen Lösungen berechnet

Eregebnis waren hier (unter Anderem) für X 113 und für y 58, was auch rein rechnerisch ganz gut passt. Wenn ich das ganze jetzt aber im AVR Studio simulieren lasse, dann kommt der PC wahnwitzerweise auf eine Länge von 5004ms. Bei 4 MHZ sind 4ms immerhin 16 Taktzyklen..

Jetzt ist meine Frage: Ungenaue Simulation oder hängt da noch der Wurm drin?!

[Edit]Man sollte die Software auch richtig benutzen können.. trotzdem dankeschön [/edit]