Forum: Mikrocontroller und Digitale Elektronik Probleme mit RCALL


von Walter (Gast)


Lesenswert?

In meinem Programm werden sämtliche rcall-Anweisungen ignoriert. Sowohl
der Simulator als auch der Controller verhalten sich so als würden die
rcall-Anweisungen garnicht dastehen. Auch die normale call Anweisung
wird ignoriert. Ersetzt man rcall durch jjmp so erfolgt der Sprung.
Stackpointer ist aber korrekt gesetzt.

Habe dann das Beispiel von dieser Seite ins AVR Studio für den Atmega 8
gebraxht. Ergebnis: selbst bei diesem Beispielprogramm springt er
nicht! Was ist da los?

.include "m8def.inc"

.def temp = r16

         ldi temp, LOW(RAMEND)             ; LOW-Byte der obersten
RAM-Adresse
         out SPL, temp
         ldi temp, HIGH(RAMEND)            ; HIGH-Byte der obersten
RAM-Adresse
         out SPH, temp

         rcall sub1                        ; sub1 aufrufen

loop:    rjmp loop


sub1:
                                           ; hier könnten ein paar
Befehle stehen
         rcall sub2                        ; sub2 aufrufen
                                           ; hier könnten auch Befehle
stehen
         ret                               ; wieder zurück

sub2:
                                           ; hier stehen normalerweise
die Befehle,
                                           ; die in sub2 ausgeführt
werden sollen
         ret                               ; wieder zurück

von Ronny Schulz (Gast)


Lesenswert?

Wie lässt Du den durchlaufen?

Wenn Du F10 im Debugger drückst dann geht er nicht in die Routinen rein
(bzw. arbeitet die zwar ab aber du siehst das nicht). Mit F11 kannst Du
dein komplettes Programm verfolgen. Ich denke auch hier liegt der
Fehler.

Und wie sieht der Stackpointer aus, wenn Du über "rcall loop 1"
gegangen bist?

von Walter (Gast)


Lesenswert?

DANKE! Alles funktioniert jetzt

Der Tip mit F11 brachte den Simulator zum Laufen. Dann habe ich wegen
mangelnder Konzentration auch noch das falsche HEXFile geflasht.

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.