Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Laderegler Test Tueftler Seite

(Siehe auch)
Zeile 1: Zeile 1:
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.
+
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 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.
 
Mit dem Starten des Watchdog-Timers 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 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 Watchdogtimers 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.
+
Um zu verhindern, daß der Controller sich ständig neu startet, muß das Programm immer rechtzeitig den Watchdogtimers 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. Dort kann dieser auch per Software deaktiviert und aktiviert werden.
+
Ein Watchdogtimer findet man in den meisten [[Atmel]] [[AVR]]-Controllern sowie den PIC Controllern. Dort kann dieser auch per Software deaktiviert und aktiviert werden.
  
Hier ein Beispiel zur Programmierung des Watchdogs:
+
Hier ein Beispiel zur Programmierung des Watchdogs bei AVRs:
  
'****************************************************
+
'****************************************************
'*              Watchdog - Test                    *
+
'*              Watchdog - Test                    *
'*                                                  *
+
'*                                                  *
'* Es soll hier das Prinzip des Watchdogs gezeigt  *
+
'* Es soll hier das Prinzip des Watchdogs gezeigt  *
'* werden.                                          *
+
'* werden.                                          *
'****************************************************
+
'****************************************************
 
+
Config Watchdog = 2048                                      'Führe nach 2048 mSec. eine Reset durch
+
Config Watchdog = 2048                                      'Führe nach 2048 mSec. eine Reset durch
Dim I As Word
+
Dim I As Word
 
+
I = 1
+
I = 1
While I > 0                                                ' Endlos-Schleife
+
  While I > 0                                                ' Endlos-Schleife
  Start Watchdog                                          ' Starte den Watchdog
+
    Start Watchdog                                          ' Starte den Watchdog
  ' Es folgt der eigentliche Programmcode
+
    ' Es folgt der eigentliche Programmcode
  Print I
+
    Print I
  Incr I
+
    Incr I
  'Waitms 3000
+
    'Waitms 3000
  ' Wird die Zeile "Waitms 3000" auskommentiert, soll 3000mSec gewartet werden. Der Watchdog führt aber
+
    ' Wird die Zeile "Waitms 3000" auskommentiert, soll 3000mSec gewartet werden. Der Watchdog führt aber
  ' vorher und zwar nach 2048 mSec..ein Reset durch.
+
    ' vorher und zwar nach 2048 mSec..ein Reset durch.
  Stop Watchdog                                            ' Stoppe den Watchdog
+
    Stop Watchdog                                            ' Stoppe den Watchdog
  ' Sollte es zu einem Absturz kommen, kann der Watchdog nicht gestoppt werden und es kommt nach
+
    ' Sollte es zu einem Absturz kommen, kann der Watchdog nicht gestoppt werden und es kommt nach
  ' 2024 mSec. zum Reset
+
    ' 2024 mSec. zum Reset
Wend
+
Wend
End
+
End
  
 
==Siehe auch==
 
==Siehe auch==

Version vom 10. Juni 2007, 14:10 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 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 Watchdogtimers 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.

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