mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stackpointerfehler


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HIIIIILFEEEEE !
Ich werd noch verrückt, meine Unterprogrammsprünge
funktionieren nicht, obwohl ich den Stackpointer initialisiert habe.
Mein Problem ist der erste Unterprogrammaufruf funktioniert, ist das
erste Unterprogramm jedoch beendet (mit ret) so springt er nicht
in das main Programm zurück von dem er aus in das Unterprogramm
gesprungen ist sondern springt anscheinend auf Adr. 0x0000 wo der rjmp
des Main Programm ist. -> Somit wird wieder ganz am Anfang des Main
Programms begonnen....
Wer weiß meinen Fehler, wäre Euch sehr dankbar...


Mein Main Programm:


MAIN:
    ;Initialisierung des Stack Pointers
     ldi   stack,HIGH(RAMEND)
     out   SPH,stack
     ldi   stack,LOW(RAMEND);Initiate Stackpointer
     out   SPL,stack ; wegen Interrupts und Unterprogr.
    ;Stackpointerinitialisierung ende


    ldi mp,0xff
    out DDRC,mp
    ldi mp,0x00
    out PORTC,mp

    ldi DATENREG, 0b01000001
    ldi X_ADRESSREG_LOW,0b10101010
    ldi X_ADRESSREG_HIGH, 0b00000111

    rcall INFO_IN_SR ; SR->Schieberegister

    rcall SCHREIBEN_IN_DPRAM
LOOP:    jmp LOOP


Vielen Dank

Peter

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich jmp xxx lese sollte es ein avr mit mehr als 8k flash sein. Ein
beliebter Fehler ist die Assembler-Option "Wrap raltive jumps"
enabled zu lassen. Dann erzeugen rcall/rjmp keine Fehler und es werden
allerdings falsche Adressen berechnet.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich simuliere den Ablauf durch einen Singelstepmodus im
AVR Studio. Beim Assemblieren habe ich leider die Option
Wrap relative jump nicht gefunden..
Übrigens ich verwende den ATmega32 Baustein

Peter

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Findest du bei AVR-Studio 4.xx unter dem Menü PROJEKT, AVR Assembler
Setup

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hilfe,
Problem beseitigt...
Ursache: Falsche Version des AVRStudios....
Neuere Version eingespielt jetzt funktionierts !


Danke nochmal
Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage doch noch was wird durch die Assemblerfunktion
Wrap relative Jump ausgelöst ?

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.