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]
Lesezeichen