wie sind register und Ram-speicherstellen gesetzt, nachdem die betriebsspannung eingeschaltet wird? Haben die einen definierten wert, muss man die zurücksetzen oder ist das egal? bleiben die speicherwerte nach dem Reset (durch Watchdog oder meinem taster) erhalten?
hmm ich meine den AVR 8515. eigentlich sollte es im datasheet drinn stehen, aber ich hab´s nicht gefunden. deswegen die frage
Wieso interessiert das überhaupt? Register und Speicher werden nicht ohne Initialisierung gelesen, Punkt.
naja man könnte die aber wecklassen, wenn sowieso schon 00 drinsteht und ich ne $00 brauche... so der gedankengang. aber du hast ja recht der Flashspeicher hat ja nun auch nach dem löschen ein $FF was... doch nich... einem nop entspricht. mist - ich hab´s gewusst.
Hi! Es kann Unsinn drinn stehen! Kann aber auch nützlich sein bei Fehlersuche, denn der Ram bleibt ja bei Reset erhalten. MFG Uwe
danke uwe, dann müssten die werte auch durch watchdog erhalten bleiben. genau das wollt ich wissen. dann kann ich da zB meine EEprom zeiger ablegen, und überschreibe nach einem reset die alten werte nicht (unbedingt) in meinem eeprom.
Ja, Du mußt dann nur sauber den watchdog-Reset erkennen. Die IO-Register werden übrigens auf definierte Werte rückgesetzt. Das steht ziemlich eindeutig im Datenblatt: ``During Reset, all I/O registers are set to their initial values, and the program starts execution from the Reset Vector.'' Die IO-Register werden also eindeutig beschrieben, alles andere ist random bzw. so, wie es vorher war. Eben nochmal ins Datenblatt geguckt: falls Du mit »AVR 8515« einen AT90S8515 meinst, hast Du Pech gehabt. Der hat kein MCUSR-Register, in dem man die Reset-Quelle auslesen könnte. Damit kannst Du einen watchdog reset nicht vom power-on reset unterscheiden. Falls Du dagegen einen ATmega8515 meinst (bzw. Dich angesichts dieser Problematik für einen solchen stattdessen entscheidest), der hat ein MCUCSR mit den nötigen Bits. Beachte, daß Du die Bits möglichst umgehend nach einem Reset auslesen und allesamt löschen solltest, sie werden nicht von der Hardware gelöscht.
hey danke, hab aber leider erst jetz gelesen. nein, meinen AT90S8515 habe ich schon "ein jahr länger"... also werd ich mich wohl nicht mehr umentscheiden. geht um eine Regelung für die Fußbodenheizung. Die platine habe ich schon vor nem jahr erstellt, nur jetz endlich angefangen richtig zu programmieren. Problem: Wenn das ganze fertig ist wird es jedoch ewig laufen. und wenn ich den aktuellen EEpromzeiger für die protokollierten werte immer in mein Uhreneeprom (I2C Uhr) schreibe wird der sicherlich irgendwann aufgeben... angenommen alle 10 min Messwerte speicher. alle 10 min eepromzeiger speichern -> 5x in der stunde -> 120x am tag-> 42720x im jahr dann halten die Speicherzellen im Uhreneeprom in denen der EEprom Zeiger liegt das ganze knapp 2,34 Jahre aus. Ist das nicht zu kurz? Wie würdet ihr das lösen? einen Zeiger, der auf die Adresse des 2ten Zeigers zeigt, der Auf die Adresse des aktuellen Speicherplatzes zeigt?
Hi! Warum Messwerte speichern, es soll sich doch kümmern, oder? Wenn schon speichern dann serielles EEProm und $FF als "Aufzeichnungsende" suchen lassen.Ich würde es jedenfalls so angehen. MFG Uwe
> ... meinen AT90S8515 habe ich schon "ein jahr länger"... also werd > ich mich wohl nicht mehr umentscheiden. Wenn Du den Chip einfach ersetzen kannst (am Ende hast Du einen gesockelten DIL benutzt, oder?), dann wäre die Umentscheidung auf einen ATmega8515 ja kein Thema. Mir ist noch eingefallen, daß Du natürlich eine RAM-Prüfsumme hinterlegen kannst, es genügt ja, einen Teil des RAMs zu prüfen, den Du ansonsten in Deinem Programm nicht weiter benutzt. Du beschreibst ihn mit einem Muster Deiner Wahl, dessen Prüfsumme Du kennst, und wenn diese nach einem Reset übereinstimmt, war es kein Power-on-Reset. Allerdings kannst Du einen externen Reset (falls dieser in Deiner Schaltung möglich ist) dann trotzdem nicht von einem Watchdog-Reset unterscheiden. Wichtig ist auch, daß Du den zu prüfenden RAM-Bereich wirklich selbst überschreibst und nicht nur eine Prüfsumme über das Zufallsmuster legst, das nach dem Power-on dort liegt: diese Zufallsmuster sind sehr oft bei jedem Einschalten gleich.
an den DIL sockel habe gedacht, aber erstmal bleibe ich beim altem. die sache mit der Prüfsumme im ram ist eine gute idee, ich werdes wohl übernehmen. zusätlich den bereich abspeichern, in dem ich die Daten als letztes gespeichert habe und dann nach einem Zeichen für Aufzeichnungsende suchen. alles gute ideen. ich mache mich dann mal ran...
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.