www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Fehler: Uninitialized stack pointer used at.


Autor: David H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen ich habe volgendes Programm geschreiben:

.include "m8def.inc"
;----------------------------------------------------------------------- 
-
;Reset and Interrupt vector             ;VNr.  Beschreibung
  rjmp  main  ;1   POWER ON RESET
  reti    ;2   Int0-Interrupt
  reti    ;3   Int1-Interrupt
  reti    ;4   TC2 Compare Match
  reti    ;5   TC2 Overflow
  reti    ;6   TC1 Capture
  reti    ;7   TC1 Compare Match A
  reti    ;8   TC1 Compare Match B
  reti    ;9   TC1 Overflow
  rjmp  led  ;10  TC0 Overflow
  reti    ;11  SPI, STC Serial Transfer Complete
  reti    ;12  UART Rx Complete
  reti    ;13  UART Data Register Empty
  reti    ;14  UART Tx Complete
  reti    ;15  ADC Conversion Complete
  reti    ;16  EEPROM Ready
  reti    ;17  Analog Comparator
  reti    ;18  TWI (I²C) Serial Interface
  reti    ;19  Store Program Memory Ready
;----------------------------------------------------------------------- 
-
;Start, Power ON, Reset
main:
  ldi  r16,0b11111111
  out  PORTD,r16
  out  DDRB,r16
  ldi  r19,0b00000001

  ldi     r16, 0b00000001      ; CS00 setzen: Teiler 1
    out     TCCR0, r16
    ldi     r16, 0b00000001      ; TOIE0: Interrupt bei Timer Overflow
    out     TIMSK, r16

    sei


;----------------------------------------------------------------------- 
-
mainloop:  wdr

  nop

  rjmp  mainloop



led:

  out    PORTB,r19
  rol    r19

  reti

So weit so gut. Aber wenn mein Interrupt beendet ist bekomme ich eine 
fehlermeldung das:

AVR Simulator: Uninitialized stack pointer used at 0x001c
AVR Simulator: Invalid opcode 0xffff at address 0x000808
AVR Simulator: Uninitialized stack pointer used at 0x08fc

Meine Frage ist jetzt was mach ich mit meinem srack pointer falsch?

Vielen dank schon mal führ die Antwort.

David

PS: Ich weis das programm hat keinen all zu großen Sinn und das 
lauflicht an portD würde sehr schnell laufen aber zum simulierren dauert 
das mit einem größeren teiler zu lange.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David H. wrote:

> Meine Frage ist jetzt was mach ich mit meinem srack pointer falsch?

Du hast ihn nicht initialisiert.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Stack

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.