Forum: Mikrocontroller und Digitale Elektronik AtmelStudio 7 - Problem beim Debuggen


von T.Baumbach (Gast)


Lesenswert?

Hallo,

ich habe eine einfache Assembler-Routine, die ich in meinem main.c 
Aufrufe.
Wenn ich die Assembler-Routine schrittweise mit F10 debugge, dann stoppt 
der Debugger irgendwann und der gelbe Pfeil (wo ich mich im ASM-Code 
gerade befinde) verschwindet.
Dies passiert an unterschiedlichen Stellen im Assembler-Code.

Hier der Code:
1
secondfunc_asm:
2
  LDI    R16, 8                  ; Zähler auf 8 setzen
3
  
4
  LOOP:
5
    SBI   _SFR_IO_ADDR(PORTB), 5 ; Pin auf HIGH
6
    SBRS  R1, 7
7
    NOP
8
    CBI   _SFR_IO_ADDR(PORTB), 5 ; Pin auf LOW      
9
    LSL    R1 
10
11
    DEC    R16
12
    CPI    R16, 0  
13
    BRNE  LOOP
14
RET

Habe den Code hier auf wenige Zeilen reduziert, um das Wesentliche zu 
zeigen. So wie der Code hier gezeigt ist, macht er kaum Sinn, aber das 
Problem tritt hier auf.

Woran kann das liegen, dass der Debugger an unterschiedlichen Stellen 
einfach stoppt und ich nicht weiter debuggen kann?

Danke...

von T.Baumbach (Gast)


Lesenswert?

Hallo,

habe noch vergessen zu sagen, dass ich nicht auf einem realen AVR 
debugge sondern im Simulator von AtmelStudio7.
Ausgewählt habe ich dort den Atmega328.

von T.Baumbach (Gast)


Lesenswert?

Hallo,

habe mal ein Video davon erstellt:

http://screencast.com/t/y2VVkutMk

Der erste Durchlauf dauert nur ein paar Sekunden, der zweite ein wenig 
länger.
Kann mir das nicht erklären :-(

von Pandur S. (jetztnicht)


Lesenswert?

R1 haette man noch vor dem Loop setzen koennen. Was macht denn der 
Stack, wurde der initialisiert ?

von T.Baumbach (Gast)


Lesenswert?

Hallo Oh doch,

habe es auch mit folgendem Code probiert, löst aber das Problem nicht:
1
secondfunc_asm:
2
3
  ; Stack initialisieren
4
  ldi r16, lo8(RAMEND)
5
  out _SFR_IO_ADDR(SPL), r16
6
  ldi R16, hi8(RAMEND)
7
  out _SFR_IO_ADDR(SPH), r16
8
  
9
  LDI    R17, 8                  ; Zähler auf 8 setzen
10
  
11
  LOOP:
12
    SBI   _SFR_IO_ADDR(PORTB), 5 ; Pin auf HIGH
13
    SBRS  R1, 7
14
    NOP
15
    CBI   _SFR_IO_ADDR(PORTB), 5 ; Pin auf LOW      
16
    LSL    R1 
17
18
    DEC    R17
19
    CPI    R17, 0  
20
    BRNE  LOOP
21
RET

von T.Baumbach (Gast)


Lesenswert?

Hallo,

hat vielleicht noch jemand eine Idee woran das liegen könnte?

Danke...

von Bastian W. (jackfrost)


Lesenswert?

Ich hab das mal mit deinem ASM Code probiert und bei mir ist es so das 
Atmel Studio 7 willkürlich statt Stepover in den Running mode geht. Wenn 
ich dann aber auf Pause klicke ist es nur einen Schritt weiter geangen. 
Auch der Cycle Counter ist nur um eines erhöht, egal wie lange ich 
warte.

Gruß JackFrost

von T.Baumbach (Gast)


Lesenswert?

Hallo Bastian,

danke für Deine Hilfe.
Was bedeutet das nun? Kann man mit AtmelStudio 7 keinen ASM-Code 
debuggen?
Ich hab mal irgendwo gelesen, dass Andere Probleme mit Sprungbefehlen in 
ASM hatten und dann die Compiler-Optimierungen abgeschaltet haben.
Habe das auch mal probiert (-O0) aber das bringt nichts.
Müssen da evtl. noch andere Einstellungen aktiviert / deaktiviert 
werden?

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.