www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stack overflow?


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich verwende einen C167. Funktioniert soweit. Nur nach einer gewissen 
Zeit kommt mir immer ein Stack overflow (gehe zumindest so aus, da der 
entsprechende interrupt ausgelöst wird).
Hab mal verschiedene Stack-grössen ausprobiert (64,129,256 ud 512kb), 
reagiert zumindest von gefühl her genau gleich...

Bin nun hingegangen, und sende mir den wert des SP andauernd über die 
serielle schnittstelle auf den PC. Wenn ich mir die Werte anschaue, 
schauts für mich eigentlich ok aus.
vor dem Stack overflow bewegen sich die Werte des SP zwischen FBC6 und 
FBCA(STKUN = FC00, STKOV = FA0C). Dann scheint auf einmal alles etwa 2 
Sekunden still zu stehen, und dann fängt die LED (welche bei einem 
Stackoverflow blinken soll) an zu blinken. Der SP liegt dann bei FB9C.

Nun hab keinen blassen was in den 2 sekunden dazwischen passieren 
soll... ne idee wie ich dies rausfinden könnte????? hatte jemand 
ähnliche probleme? weiss momentan nicht so recht wie ich weiter vorgehen 
soll (viritueller stack?), ideen/anregungen?

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwo eine Rekursion ohne Abbruchbedingung eingebaut? Hast für den 
Controller einen Simulator oder hat er JTAG?

Autor: Florian Müller (flomll)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein änliches Problem! Ich schreibe Daten auf ein Display über 
das SPI und verwende eine TIMER ISR. Diese TIMER ISR wird derzeit nur 
verwendet um zu einem bestimmten Zeitpunkt das BACK_LIGHT zu aktivieren. 
(nur zu Testzwecken) Nachdem er die ISR verlässt arbeitet das AVRS für 
2-3 Sekunden und im Anschluss startet das Programm neu!!! Habe auch noch 
keine Idee. Es kann fast nur an einem StackOverflow liegen! Wie kann man 
denn die Stackgrößer verändern?

Habe mir auch den Assembler schon angeschaut und die ISR scheint mir 
richtig zu sein! Es werden alle Register auf den Stack geladen und nach 
der ISR wieder mit reti zurück gesprungen. Jedoch kommt er nirgends an!

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.