Forum: Mikrocontroller und Digitale Elektronik Registerinhalt nach reset


von Henning (Gast)


Lesenswert?

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?

von André Kronfeldt (Gast)


Lesenswert?

Keine Angabe von Controllertyp -> Keine Antwort.

von Andreas Jäger (Gast)


Lesenswert?

Wenn's nicht in der Doku steht -> Controller wechseln!

von Henning (Gast)


Lesenswert?

hmm ich meine den AVR 8515.
eigentlich sollte es im datasheet drinn stehen, aber ich hab´s nicht
gefunden. deswegen die frage

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wieso interessiert das überhaupt? Register und Speicher werden  nicht
ohne Initialisierung gelesen, Punkt.

von Henning (Gast)


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

Hi!
Es kann Unsinn drinn stehen! Kann aber auch nützlich sein bei
Fehlersuche, denn der Ram bleibt ja bei Reset erhalten.

MFG Uwe

von Henning (Gast)


Lesenswert?

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.

von Joerg Wunsch (Gast)


Lesenswert?

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.

von Henning (Gast)


Lesenswert?

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?

von Uwe (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

> ... 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.

von Henning (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.