Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Balkonkraftwerk Speicher und Wechselrichter Tests und Tutorials

K
K
 
(4 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Als Watchdog (Wachhund) bezeichnet man die sogenannte „Watchdogtimer-Schaltung“ (WDT) innerhalb eines Microcontrollers, die dafür sorgt das der Controller bei einem undefinierten Zustand ein RESET ausführt.
+
Als Watchdog (Wachhund) bezeichnet man die sogenannte "Watchdogtimer-Schaltung" (WDT) innerhalb eines Microcontrollers, die dafür sorgt, daß der Controller bei einem undefinierten Zustand ein RESET ausführt.  
Mit dem Starten des Watchdogtimers läuft ein von der Systemclock getakteter Hardware-Zähler ab einem programmierbaren Zählerstand los. Kommt es nach der gewählten Zeit zu einem Überlauf, so wird immer automatisch ein RESET für den gesamten Controller ausgelöst und somit das im Controller abgelegte Programm neu gestartet.
+
  
Um zu verhindern das der COntroller sich jedoch ständig neu startet, muß das Programm immer rechtzeitig den Watchdogtimers zurücksetzen. Dies kann kan mehreren Stellen im üblichen Programmablauf geschehen. Falls also das Programm aus irgendwelchen Gründen nicht mehr planmäßig abläuft oder auch stehenbleibt (z.B. wegen Endlosschleife), wird in den meisten Fällen der Watchdogtimers nicht mehr zurückgesetzt. Dadurch wird durch den Reset zumindest der Controller wieder in einen definierten Zustand gebracht.
+
Mit dem Starten des Watchdog-Timers läuft ein von der Systemclock, oder seperat getakteter Hardware-Zähler ab einem programmierbaren Zählerstand los. Kommt es nach der gewählten Zeit zu einem Überlauf, so wird automatisch ein RESET-Signal für den Controller ausgelöst und somit die Hardware initialisiert und das im Controller abgelegte Programm neu gestartet.
  
Ein Watchdogtimer findet man in den meisten [[Atmel]] Avr Controllern. Dort kann dieser auch per Software de- als auch aktiviert werden.
+
Um zu verhindern, daß der Controller sich ständig neu startet, muß das Programm immer rechtzeitig den Watchdogtimer zurücksetzen. Dies kann an mehreren Stellen im üblichen Programmablauf geschehen. Falls also das Programm aus irgendwelchen Gründen nicht mehr planmäßig abläuft oder auch stehenbleibt (z.B. wegen Endlosschleife), wird in den meisten Fällen der Watchdogtimer nicht mehr zurückgesetzt. Dadurch wird durch den Reset zumindest der Controller wieder in einen definierten Zustand gebracht.
 +
 
 +
Ein Watchdogtimer findet man in den meisten [[Atmel]] [[AVR]]-Controllern sowie den PIC Controllern. Dort kann dieser auch per Software deaktiviert und aktiviert werden.
 +
 
 +
Damit der Watchdog wirkungsvoll bleibt sollte man das Zurücksetzen so selten wie möglich machen. In der Regel wird man das Programm erst ohne den Watchdog-Reset entwickeln und erst wenn alles fertig ist, die nötigen Resets einfügen. Der Watchdog sollte normalerweise nur als zusätzliche Sicherung eingeplant sein, also bei normaler Benutzung nie auftreten.
 +
 
 +
Beim AVR kann die Watchdog-hardware auch als Timer zusammen mit Stromsparmodi benutzt werden, um den Controller den größen Teil der Zeit im Powerdown modus zu halten.
 +
 
 +
Hier ein Beispiel zur Programmierung des Watchdogs bei AVRs:
 +
 
 +
'****************************************************
 +
'*              Watchdog - Test                    *
 +
'*                                                  *
 +
'* Es soll hier das Prinzip des Watchdogs gezeigt  *
 +
'* werden.                                          *
 +
'****************************************************
 +
 +
Config Watchdog = 2048                                      'Führe nach 2048 mSec. eine Reset durch
 +
Dim I As Word
 +
 +
I = 1
 +
  While I > 0                                                ' Endlos-Schleife
 +
    Start Watchdog                                          ' Starte den Watchdog
 +
    ' Es folgt der eigentliche Programmcode
 +
    Print I
 +
    Incr I
 +
    'Waitms 3000
 +
    ' Wird die Zeile "Waitms 3000" auskommentiert, soll 3000mSec gewartet werden. Der Watchdog führt aber
 +
    ' vorher und zwar nach 2048 mSec..ein Reset durch.
 +
    Stop Watchdog                                            ' Stoppe den Watchdog
 +
    ' Sollte es zu einem Absturz kommen, kann der Watchdog nicht gestoppt werden und es kommt nach
 +
    ' 2024 mSec. zum Reset
 +
Wend
 +
End
  
 
==Siehe auch==
 
==Siehe auch==
 +
* [[avr-gcc#Reset auslösen|Beispiel für avr-gcc]]
 
* [[Microcontroller]]
 
* [[Microcontroller]]
  
 
[[Kategorie:Microcontroller]]
 
[[Kategorie:Microcontroller]]
 
[[Kategorie:Grundlagen]]
 
[[Kategorie:Grundlagen]]

Aktuelle Version vom 30. Juli 2011, 20:53 Uhr

Als Watchdog (Wachhund) bezeichnet man die sogenannte "Watchdogtimer-Schaltung" (WDT) innerhalb eines Microcontrollers, die dafür sorgt, daß der Controller bei einem undefinierten Zustand ein RESET ausführt.

Mit dem Starten des Watchdog-Timers läuft ein von der Systemclock, oder seperat getakteter Hardware-Zähler ab einem programmierbaren Zählerstand los. Kommt es nach der gewählten Zeit zu einem Überlauf, so wird automatisch ein RESET-Signal für den Controller ausgelöst und somit die Hardware initialisiert und das im Controller abgelegte Programm neu gestartet.

Um zu verhindern, daß der Controller sich ständig neu startet, muß das Programm immer rechtzeitig den Watchdogtimer zurücksetzen. Dies kann an mehreren Stellen im üblichen Programmablauf geschehen. Falls also das Programm aus irgendwelchen Gründen nicht mehr planmäßig abläuft oder auch stehenbleibt (z.B. wegen Endlosschleife), wird in den meisten Fällen der Watchdogtimer nicht mehr zurückgesetzt. Dadurch wird durch den Reset zumindest der Controller wieder in einen definierten Zustand gebracht.

Ein Watchdogtimer findet man in den meisten Atmel AVR-Controllern sowie den PIC Controllern. Dort kann dieser auch per Software deaktiviert und aktiviert werden.

Damit der Watchdog wirkungsvoll bleibt sollte man das Zurücksetzen so selten wie möglich machen. In der Regel wird man das Programm erst ohne den Watchdog-Reset entwickeln und erst wenn alles fertig ist, die nötigen Resets einfügen. Der Watchdog sollte normalerweise nur als zusätzliche Sicherung eingeplant sein, also bei normaler Benutzung nie auftreten.

Beim AVR kann die Watchdog-hardware auch als Timer zusammen mit Stromsparmodi benutzt werden, um den Controller den größen Teil der Zeit im Powerdown modus zu halten.

Hier ein Beispiel zur Programmierung des Watchdogs bei AVRs:

'****************************************************
'*              Watchdog - Test                     *
'*                                                  *
'* Es soll hier das Prinzip des Watchdogs gezeigt   *
'* werden.                                          *
'****************************************************

Config Watchdog = 2048                                      'Führe nach 2048 mSec. eine Reset durch
Dim I As Word

I = 1
 While I > 0                                                 ' Endlos-Schleife
    Start Watchdog                                           ' Starte den Watchdog
    ' Es folgt der eigentliche Programmcode
   Print I
   Incr I
   'Waitms 3000
   ' Wird die Zeile "Waitms 3000" auskommentiert, soll 3000mSec gewartet werden. Der Watchdog führt aber
   ' vorher und zwar nach 2048 mSec..ein Reset durch.
   Stop Watchdog                                            ' Stoppe den Watchdog
   ' Sollte es zu einem Absturz kommen, kann der Watchdog nicht gestoppt werden und es kommt nach
   ' 2024 mSec. zum Reset
Wend
End

Siehe auch


LiFePO4 Speicher Test