Forum: Mikrocontroller und Digitale Elektronik Atmel Studio 6: Simulation ATMega328P; Verhalten bei Continue (F5) anders als StepOver (F10)


von Hawa M. (hawamand)


Angehängte Dateien:

Lesenswert?

Ich habe in Atmel Studio 6 (Version gemäss Screenshot) beim Simulieren 
eines Projekts für den ATMega328P das seltsame Verhalten, dass bei 
StepOver (F10) nicht dasselbe Verhalten resultiert wie bei Continue (F5) 
mit gesetzten Breakpoints.
Das Projekt ist als .zip File angehängt, ebenso separat dazu noch das .c 
File.
Gewünschter Ablauf:
- 1ms Zeitbasis mit Timer0
- in main() Pulsform generieren auf PORTD2 Out -> wirkt auf INT0 Eingang
- Timer2 als Zeitbasis für die Messung der Pulsbreite
- INT0 aktiviert, any change, Messung der Pulsbreite
(Mit einem einzelnen Input könnte auch das Capture Feature von Timer1 
verwendet werden, im Endausbau würde das aber nicht mehr klappen. 
Deshalb ist der Test mit Timer1 in dieser Form ausgefallen.)

Wenn ich nun die Simulation mit gesetzten Breakpoints anwerfe, dann 
funktioniert alles wunderbar, auf PORTD2 wird ein Puls von 2 Heartbeats 
ausgegeben mit 8 Heartbeats Pause. Soweit so gut.

Wenn ich nun Einzelschritte mit StepOver (F10) anschaue, dann kommt es 
vor, dass das GlobalInterrupt Flag in main() spontan zurückgesetzt wird 
und der Ablauf dann natürlich unterbrochen wird. Einige solche Fälle 
habe ich auch als Screenshot angehängt, jeweils unmittelbar nach dem 
Clear des Flags (wird noch rot dargestellt).
Die Anzahl F10 drücken bis zum "Fehler" ist unterschiedlich, ebenso die 
Position des "Fehlers" im Disassembly.

Dann werde ich wohl nur noch mit Breakpoints und Continue simulieren und 
stets das GlobalInterrupt Flag im Auge behalten müssen.

Hat sowas schon mal wer beobachtet?
Kann mal jemand versuchen, dieses Verhalten zu reproduzieren?

Gruss!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.