www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Die Suche nach dem Stackfehler im Heuhaufen


Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hoffe nicht alle mit dem wort "Stackfehler" schon in der
betreffzeile abzuschrecken, aber hier steht ja seit neustem
aussagekrüftigen Betreff wählen...

also: mein Problem, mein AVR macht wirre dinge, die nicht zu erklären
sind. (erhöht ein registerpaar um viel zu viel, das ich in dem ganzen
programm nur 3 mal benutze...)
Sicher ist das ein Stackfehler; ich bin in soweit schon beruhigt, das
selbst das AVR Studio meldet "AVR Simulator Stck pointer changed after
subroutine call".

Nur wie finde ich den am einfachsten? ich gehe jetz schon seit fast 2
Stunden das Programm schritt für schritt durch und erwische den Fehler
immer dann, wenn ich eine Routine überspringe... Wie löst ihr einen
solchen Fehler. Das er da ist ist ja so ziemlich nachgewiesen...

vielen dank schonmal für jegliche hinweise! Ich drehe noch ne runde mit
meinem Simulator, vieleich erwische ich den diesesmal.

Autor: edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hoi
in die speicherplaetze,die fuer Stack vorgesehen sind schreibst du ein
bitmuster. Lasse den simulator laufen und schaue danach ob und wieviele
stackplaetze ''ueberschrieben '' wurden. Falls deine vermutung
stimmt, dann muessten alle plaetze ueberschrieben worden sein.

versuchs mal
ed

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nope, wenn ich das ganze schrittweise durchgehe, dann scheint alles zu
klappen. irgendwann löst dann das avr studio aus und wenn ich dann aber
zurück in meiner (gewollten und programmierten) endlosschleife bin ist
der stack richtig.

warum löst der simulator aus, wenn alles richtig zu sein scheint.

ich werde versuchen, das ganze programm auf das nötige zu minimieren.
dann müsste ich den fehler eingrenzen können?! hoffe mal es klappt.

und danke für die antwort

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DEn Fehler: "AVR Simulator Stck pointer changed after
subroutine call" bekommst du auch wenn per Einzelschritt in eine
Routine gehst und sie dann nicht per Einzelschritt verlässt.

Wenn du dir also den Anfang anzeigen läßt, aber dann den Rest der
Routine überspringst um mit einen Befehl nach den Aufruf weiter zu
machen.

Hab ich bei mir auch schon häufiger gehabt, ist aber kein Fehler in
deinem Programm sondern vom Debugger. Must also wohl oder übel noch mal
wo anders nach deinem Käfer suchen

Mike

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm es ist natürlich immer das blödeste: ich habe per inc einen zähler
ehöht und wollte mit carry den überlauf abfragen -> Zero währe richtig
gewesen. also kein stack fehler

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.