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.
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
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.