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
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.
@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
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
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
@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
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
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
Es gibt neuere, pin- und funktionskompatible AVRs, die einen Watchdog-Interrupt mit nachfolgendem RESET haben, der Mega1281 zum Beispiel.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.