Warteschleife - Ich steh kurz vorm Wahnsinn
Servus
Wiedermal ich mit einer eigentlich einfachen Frage. Ich möchte hier klare Antworten sodass man das ganze dann in das Wiki stellen kann. Grund: Weder bei µC.net noch hier findet sich ein solcher Artikel und ich denke für den ein oder anderen könnte das Interessant sein.
Nehmen wir mal eine verschachtelte Schleife aus 3 Zählern. Dann ist die Gesamtzeit am Ende, wenn ich mich nich Täusche, die dritte Wurzel aus den Zylklen mal der Taktzeit des Systems (1/Systemfreq.). Richtig/Falsch?
Bei dieser Schleife
Code:
delay: ; Warte Schleife, Verschachteltes
ldi zaehl3,0x8 ; Incrementieren von 3 Zaehlern
del2:
ldi zaehl1,0xFF
del:
ldi zaehl2,0xFF
del1:
dec zaehl2
brne del1
dec zaehl1
brne del
dec zaehl3
brne del2
ret
aus dem Musterprogramm kommme ich auf
Code:
0x08 = 8
FF = 255
FF = 255
=> Cycles = 8*255*255 = 520200
_______
=> t=³-\520200 * 1/4MHz = 20,1µs
Problem: Ich sitz hier vorm PC wie ein Ochse und es tut sich, genua, nix. Er zählt die schleife und zählt und zählt und ... ja wie der Duracell-Hase ...
Also, stimmt die Berechnung und die Simulation schlägt mir ein schnippchen oder steh ich auf der Leitung?
BTW: Ich möchte das Tool aus dem Internet nicht nutzen! Diese Warteschleifen sind fürn Po, wofür gibts Timer, es geht mir nur um die Berechnung.
Grüße