mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit RCALL


Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.