mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Beginner Stack Problem mit ATMEGA 8515


Autor: Thomas G. (tomatos666)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Bitte zerfetzt mich jetzt nicht.
Ich bin auf dem gebiet ein Absoluter Neuling.

Ich habe ein PRogramm geschrieben das die LED auf den Ausgängen immer 
nach einer gewissen Zeit umschalten sollen.

Mit hilfe des Stack möchte ich gerne ein Unterprogramm mit der 
Zeitverzögeung aufrufen.

Habe folgenden code zusammengestellt.


.include "m8def.inc"

.def temp = r16

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

  ldi r20, 0xFF      ;
  out DDRB, r20      ;r20 als mein Ausgang an Port B Einstellen

start:

  ldi r20, 0b00000001        ;r20 neu beschreiben
    out PORTB, r20
  rcall sub1                      ; sub1 aufrufen

  ldi r20, 0b00000111        ;r20 neu beschreiben
  out PORTB, r20
  rcall sub1

  rjmp start      ;und alles wieder von vorne
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+++++++

sub1:          ;0.25 sek warten und dann weiter
          ldi  R21, $09
WGLOOP0:  ldi  R22, $BC
WGLOOP1:  ldi  R23, $C4
WGLOOP2:  dec  R23
          brne WGLOOP2
          dec  R22
          brne WGLOOP1
          dec  R21
          brne WGLOOP0

ret
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+++++++

Leider funktioniert mir das Programm nicht.
Die ausgängen bleiben in der Position 0b00000001 stehen.
Im AVR Simulator kommt die meldung:"AVR Simulator: Uninitialized stack 
pointer used at 0x0008"
Könnt ihr mir Bitte weiterhelfen?
Danke.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Beginner Stack Problem mit ATMEGA 8515
                             ^^^^^^^^^^^
> .include "m8def.inc"
            ^^

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Leider funktioniert mir das Programm nicht.
>Die ausgängen bleiben in der Position 0b00000001 stehen.
>Im AVR Simulator kommt die meldung:"AVR Simulator: Uninitialized stack
>pointer used at 0x0008"

Bei mir läuft das im Simulator problemlos. Hast du den richtigen 
Controller für den Simulator eingestellt?

MfG Spess

Autor: Thomas G. (tomatos666)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja den Atmega8515.
Kann es sein das mir es deshalb nicht funktioniert weil ich den Atmel 
mit 4 MHZ ansteuerere und für 0.25 sek im Stack den Zyklus 1000000 
durlaufen lasse obwohl der Stack im Grunde nur 16 Bit hat?!?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wie Stefan schon bemerkt hat, benutzt du das Includefile vom ATMega8.

Wenn du einen ATMega8515 hast, muss die erste Zeile

.include "m8515def.inc"

heißen.

MfG Spess

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Gruber schrieb:
> Kann es sein das mir es deshalb nicht funktioniert weil ich den Atmel
> mit 4 MHZ ansteuerere und für 0.25 sek im Stack den Zyklus 1000000
> durlaufen lasse obwohl der Stack im Grunde nur 16 Bit hat?!?

nein ganz bestimmt nicht. Schau doch einfach mal nach welchen Wert der 
Stackpointer hat, wenn die Fehlermeldung kommt.

Autor: Thomas G. (tomatos666)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Gruber schrieb:
> ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++
>
> sub1:          ;0.25 sek warten und dann weiter
>           ldi  R21, $09
> WGLOOP0:  ldi  R22, $BC
> WGLOOP1:  ldi  R23, $C4
> WGLOOP2:  dec  R23
>           brne WGLOOP2
>           dec  R22
>           brne WGLOOP1
>           dec  R21
>           brne WGLOOP0
>
> ret
> ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++

Danke!!!
Genau das war der Fehler läuft jetzt.
Danke!

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.