mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Registerinhalt nach reset


Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: André Kronfeldt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Angabe von Controllertyp -> Keine Antwort.

Autor: Andreas Jäger (Gast)
Datum:

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

Autor: Henning (Gast)
Datum:

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.