Hallo zusammen, hier mal wieder was für die Kuriositäten Sammlung: Ich verwende eine at90s2333 um über die serielle Schnittstelle Daten einzulesen und diese dann im SRAM zu speichern. Beim Speichervorgang passiert es nun ab und zu (völlig willkürlich) das Teile des Speichers, die ich überhaupt nicht bearbeite, gelöscht werden... Ist das Teil kaputt?? Gruß, Daniel
Wahrscheinlicher ist ein Programmfehler. Beachte auch, dass der Stack im SRAM liegt und sich nicht mit dem von dir genutzten Bereich überschneidet. Schmittchen.
Hm.. Der Stackpointer liegt am Ende des Speicherbereichs. Ich nutze momentan die ersten 32 Byte des Speichers für meine Werte. Wenn ich immer nur eine Routine auf einmal aufrufe sollte der Stackpointer kaum so groß werden, oder? Das Witzige ist ja das es in der Simulation wunderbar funktioniert.
> nur eine Routine auf einmal aufrufe sollte der Stackpointer kaum so groß werden,
oder?
richtig - normalerweise nicht.
Poste doch mal deinen Code (falls sehr groß, dann als Anhang) - dann
kann man evtl. genaueres sagen und nicht nur rumraten.
Vielleicht trat das Problem nur in der Simulation noch nicht auf.
Schmittchen.
Hallo, wenn Du mit push und pop arbeitest, dann bitte genau darauf achten, daß auch alles "gepushte" wieder "gepopt" wird, sonst läuft der SRAM voll. Dies ist in der Simulation kaum zu bemerken. Oder -- mal das Ende des SRAM in der Simulation beobachten
Ok, es funktioniert inzwischen... Danke an Schmittchen und Erwin! Ich habe die Interrupt Routine mit RJMP anstatt mit RETI verlassen, deswegen wurde die "gepushte" Rücksprungadresse nicht mehr "gepopt" und das SRAM ist vollgelaufen. Dankeschön und Servus!
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.