Hallo,
ich würde gerne um den nachfolgenden Code nachvollziehen kann den
Debugger im AVR Studio4 Verwenden.
wenn ich dann mit step into (F11) hinein springe dann komme ich nur bis
1
Warten1:
2
decr16;r16-1
3
brneWarten1
und dann springt der gelbe Pfeil immer nur zwischen dec und brne hin und
her auch wenn ich 500mal F11 drücke.
aber er müsste doch, wenn r16 auf null decrementiert ist eine zeile
weiter springen, kann mir vielleicht jemand sagen wie ich durch den
ganzen Code mit dem Debugger komme ?
Michael H. schrieb:> und dann springt der gelbe Pfeil immer nur zwischen dec und brne hin und> her auch wenn ich 500mal F11 drücke.
Bist du sicher, dass du dich nicht verzählt hast?
Was stehen dabei in r16 für Werte?
Eigentlich sollte es nach 255 Durchläufen weitergehen.
Mal blöde gefragt (als privater Windowsverweigerer ist mein letzter
Kontakt mit AVR Studio lange her, und auf der Arbeit hab ich nur
schwerere Geschütze) - aber zeigt der Debugger nicht den Inhalt der
Register an? Verändert sich, wenn Du dec r16 ausführst, der Wert, der
für r16 angezeigt wird? Wird, wenn das Register von 1 auf 0 springt, das
Zero-Flag gesetzt? Wenn beides ja, und brne trotzdem wieder zurück
springt, isses wohl ein Bug im Simulator. Letzeres halte ich für nicht
ausgeschlossen, zumal die Folge dec (register) und brne (label)
eigentlich ein typisches Konstrukt ist.
Marc V. schrieb:> Natürlich.> Gerade beim debuggen.
Ich habe nachgesehen (in einer alten VM) - auch das AVR-Studio 4 hat
Break-Points. Dann kann und sollte man diese auch nutzen - oder? Das hat
sich beim Debuggen (aus meiner Sicht) bewährt :-)
Nachdenklicher schrieb:> Verändert sich, wenn Du dec r16 ausführst, der Wert, der> für r16 angezeigt wird? Wird, wenn das Register von 1 auf 0 springt, das> Zero-Flag gesetzt? Wenn beides ja, und brne trotzdem wieder zurück> springt, isses wohl ein Bug im Simulator.
Nö, der Teil, der den AVR-Core simuliert, ist fehlerfrei, jedenfalls
beim Simulator V2. Fehler gibt es (teils reichlich) in der Simulation
der Periperie.
Und natürlich verläßt man die Schleife. Nach 512 mal Taste drücken.
Wenn nicht, dann liegt es mit einiger Wahrscheinlichkeit daran, dass man
den Einsprung in ISRs per Debugger-Einstellung skippt, eine solche ISR
aber die Flags kaputt macht. Denn geskipped wird nur die Darstellung im
Debugger, nicht aber die Ausführung der ISR selber.
c-hater schrieb:> Wenn nicht, dann liegt es mit einiger Wahrscheinlichkeit daran, dass man> den Einsprung in ISRs per Debugger-Einstellung skippt, eine solche ISR> aber die Flags kaputt macht.
Wo siehst Du eine ISR?
Hi
>Hat das Studio 4 keine Break-Points?
Aber da must du auch erst mit dem Cursor hin und den Breakpint setze. Da
kannst du auch gleich mit 'Run to Cursor' weiter machen.
Aber Michael H. (h_m) scheint das eh nicht mehr zu interessieren.
MfG Spess
Hugo H. schrieb:> Wo siehst Du eine ISR?
Nirgendwo. Allerdings ist es ja leider recht üblich, dass nicht der
komplette Code gepostet wird. Deswegen habe ich schonmal vorbeugend die
Lösung geliefert, falls es sich rausstellen sollte, dass wir es hier
wieder mal mit so einem Traffic-Troll zu tun haben, der sich der
Salami-Taktik bedient, um den Thread möglichst lang werden zu lassen.
c-hater schrieb:> Allerdings ist es ja leider recht üblich, dass nicht der> komplette Code gepostet wird.> Michael H. schrieb:> kann mir vielleicht jemand sagen wie ich durch den> ganzen Code mit dem Debugger komme ?
entweder setzt du nach dem brne einen Breakpoint und lässt das Ding im
Autostep oder Runmodus laufen, dann brauchst du nicht so oft klicken,
denn er hält genau am Breakpoint an. Oder du änderst in der
Registerübersicht den Wert von R16 z.B. auf 1 dann brauchst du nicht so
oft klicken. evtl. erst die Registeransicht auf dezimal umstellen sonst
stehen dort hex Werte.
Das Ding nennt sich übrigens Simulator, ein Debugger wäre der Atmel ICE
damit kannst du das Programm im µC laufen lassen und im AVR-Studio
prüfen ob alles so gemacht wird wie du es wünscht.
Wenn dein µC aber mit 1 oder 8 MHz (1 bzw. 8 Millionen Befehle pro
Sekunde) läuft, dann läuft deine Schleife so schnell ab, dass du das an
der LED nicht siehst.
Normalerweise macht man das so, dass man am Breakpoint die Stoppuhr des
Simulators auf 0 stellt und es automatisch bis zum nächsten Breakpoint
laufen lässt, dann schaut man sich auf der Stoppuhr an wie lange das
gedauert hat.
Habe gerade kein AVR-Studio hier, vielleicht kannst du einen Screenshot
machen das Zeichne ich dir die Stellen ein.