Forum: Mikrocontroller und Digitale Elektronik Watchdog Mega128 (Daten sichern)


von Thomas (Gast)


Lesenswert?

Hallo,

ich habe hier einen Watchdog auf einem MEGA128 programmiert der auch 
ohne Probleme funktioniert.
Nun möchte ich gerne einige Daten sichern bevor sich der Controller 
verabschiedet.
Ich suche nun schon eine ganze Weile nach einer Möglichkeit jedoch ohne 
Erfolg.
Hat jemand einen Tip da es anscheinend wenn ich mich nicht verlesen habe 
keine ISR dafür gibt.

Thomas

von Hc Z. (mizch)


Lesenswert?

Falls Du den eingebauten Watchdog meinst:  Wenn der zubeißt, geht man im
Allgemeinen davon aus, dass der Controller sich in einem undefinierten 
Zustand befindet.  Dafür ist er da.  Da dann kein Verlass mehr auf die 
Daten ist, kann auch nichts gesichert werden - welchen Sinn sollte das 
auch haben?

Du solltest Deine Daten bereits in einem Zustand gesichert
haben, in dem man ihnen noch vertrauen kann.

von Thomas (Gast)


Lesenswert?

@Hazeh,

ich kann ja nicht den ganzen Tag Daten in den EEPROM speichern nur um 
die Daten zu Verfügung zu haben wenn ich Sie mal nach einem Absturz 
brauche und bis dahin ist vieleicht das EEPROM defekt wegen zu vieler 
Schreibzugriffe.
Einen Absturz können auch äussere Einflüsse verursachen die man nicht 
vorhersehen kann.
Ich bin nichte der Profi doch habe ich gesehen das verschiedene 
Controller eine
WDT_vect zur Verfügung haben welche dafür genutzt werden kann die hat 
der 128 jedoch nicht.
Daher die Frage ob es einen Weg gibt dies dennoch zu realisieren.

Thomas

von spess53 (Gast)


Lesenswert?

Hi

Ein Watchdog-Reset sollte die absolute Ausnahme sein.

>Einen Absturz können auch äussere Einflüsse verursachen die man nicht
>vorhersehen kann.

Welche sind das bei dir? Hast du ein konkretes Problem, oder willst du 
nur übervorsichtig sein?

MfG Spess

von Lui S. (lute)


Lesenswert?

Hallo Thomas,

der Watchdog im ATmega128 macht wirklich nur einen Reset, wenn er 
zuschlägt.
Du könntest Deine Daten auch in einem externen Speicher z.B. FRAM 
ständig ablegen. FRAM kann nahezu beliebig oft beschrieben werden, er 
ist schnell und er behält die Daten bei Stromausfall.
Eine andere Idee, die mir einfällt, ist den "Watchdog" mit einem Timer 
selber zu schreiben. Du konfigurierst einen Timer so, dass er immer 
läuft und bei Overflow ein Interrupt ausgelöst wird. In die ISR 
schreibst du dann deine Datensicherung und machst dann den Reset. Der 
"Watchdog Reset" wäre dann, den Timer auf 0 zurücksetzen.
Das funktioniert aber nur, wenn dein Controller nicht in einer anderen 
ISR "hängt" und Interrupts grade gesperrt sind. Vielleicht musst Du den 
richtigen Watchdog zusätzlich nutzen um so einen Fall abzufangen. (wobei 
dann keine Daten gesichert werden)

Gruß, Lui

von Thomas (Gast)


Lesenswert?

@spess53,

letzteres, ich schreibe eine Art Log Datei in einen externen EPROM und 
diesen Status wollte ich sichern.
Dann muss ich in eben beim Start eine routine schreiben die den Wert 
ermittelt auch nicht schlimm.

qLui,

ich sehe schon die Daten sind futsch. Wegen dem einen int mache ich 
nicht rum. Die Platine ist schon fertig :-|.

Gruß und Danke an alle

Thomas

von spess53 (Gast)


Lesenswert?

Hi

>letzteres, ich schreibe eine Art Log Datei in einen externen EPROM und
>diesen Status wollte ich sichern.
>Dann muss ich in eben beim Start eine routine schreiben die den Wert
>ermittelt auch nicht schlimm.

Na was denn nun, schlägt der Watchdog egal zu oder nicht?

MfG Spess

von Andreas W. (geier99)


Lesenswert?

Thomas schrieb:

> Daher die Frage ob es einen Weg gibt dies dennoch zu realisieren.
>
Du kannst ja beim Neustart abfragen, ob ein Watchdog Reset aufgetreten 
ist und dann dementsprechend die Daten sicheren. (und hoffen das die 
Daten noch gültig sind :-) )

Besser ist es natürlich eine Checksumme über die Daten zu bilden um 
festzustellen ob diese noch gültig sind.

Bye
 Andreas

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Es gibt neuere, pin- und funktionskompatible AVRs, die einen 
Watchdog-Interrupt mit nachfolgendem RESET haben, der Mega1281 zum 
Beispiel.

von Peter D. (peda)


Lesenswert?

Thomas schrieb:
> Einen Absturz können auch äussere Einflüsse verursachen die man nicht
> vorhersehen kann.

Nein, ein Watchdog spricht nur dann an, wenn durch einen Softwarefehler 
das Programm hängen bleibt.
Gegen Hardwarefehler ist er wirkungslos.

Es kann naürlich sein, daß an den Eingangspins Signale anliegen, mit 
denen Du nicht gerechnet hast und deswegen Dein Programm hängen bleibt.
Aber das sehe ich als Softwarefehler an.
Vermeiden kann man das nämlich durch Softwaremaßnahmen, z.B. durch 
Maskieren unrelevanter Einganspins, Default-Entscheidungen oder 
Timeouts.


Peter

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.