Reset-Problem beim Mega16

Lach, war schon klar dass es nur ein Beispiel von dir war :D

Jawoll, das Gosub war eindeutig ein Gosub zuviel...
Mit einem Return macht er nun auch keinen frechen Reset mehr.

Danke an Euch alle, ich möcht garnicht wissen wie ich das jemals wieder gut machen kann :rolleyes:
 
Stacküberlauf

Hallo,

Aus dem Main herraus gehts mit "Gosub Auslesen".
Die IF-Abfrage schlägt zu, wenn an PinA ein Wert anliegt, der nicht in der Tabelle steht, also zB wenn der Kanalschalter nicht richtig einrastet.
In dieser IF-Abfrage gehe ich mit "Gosub Main" zurück.

Mit Gosub hin, und mit Gosub zurück ?!
Läuft da dann nicht irgendwas über? Wäre ein "Return" nicht richtiger?
Bei Gosub wird er die Rücksprungadresse auf den Stack legen. Und der Stack
arbeitet sich von oben nach unten im Speicher voran. Irgendwann wird er dann
deine Speicherstellen für die Variablen erreicht haben und die Werte darin
überschreiben :) Das nennt man klassisch : Stack-Überlauf :D :D
So etwas tut man nicht ! :rolleyes:

Gruß
Dino
 
Danke an Euch alle, ich möcht garnicht wissen wie ich das jemals wieder gut machen kann :rolleyes:

Hi !

Na na... letztlich hast du den Fehler doch selber gefunden. ;)


Dann mal weiter im Takt....

Gruß,
Cassio
 
So etwas tut man nicht ! :rolleyes:
Ok, ich werd versuchen sowas in Zukunft bleiben zu lassen :D

Lag ich also garnicht so falsch mit "überlaufen".

Stimmt Cassio, ich hab den Fehler selber gefunden. Aber ohne Euch hätte ich mich wohl (vorerst) nicht weiter mit dem Code befasst ....
 
Hi @ All,

wie mir scheint komme ich mit meinem Beitrag nun etwas zu spät und Micha hat sein Problem bereits selbst gelöst.

Damit verbuche ich das folgende unter der Rubrik Nachtrag:

Bei Verschachtelten bedingungen, verschiedenen Sprungen, auch bei Variablenübergaben usw. hatte ich auch schon das Problem sporadisch wiederkehrender Resets die ich mir einfach nicht erklären konnte.

Hilfreich war bisher bei mir immer ein Blick auf die Variablen

$framesize = 128
$hwstack = 128
$swstack = 32

Sind die zu klein gewählt so reicht die HW-Stack-Size und/oder die SW-Stack-Size nicht aus und es folgen sporadische Resets und Fehlverhalten in der SW.

Die Framesize wird interessant, wenn Du bei Funktionen Variablen übergeben oder in Funktionen mit lokalen Variablen arbeiten möchtest. Wenn dieser Wert nicht ausreichend dimensioniert ist dann überschreibst Du Dir ggf. anderen Code und dann .....

Unscheinbare Konstanten für den Compiler mit großer Wirkung! Da solltest Du immer ein Auge drauf haben.

Grüße,
Markus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)