Wenn der PIC mit der Abarbeitung seines Programms anfängt, so soll er das von einem bekannten festgelegte Startzustand aus tun. So steht dann z.B. der programme counter (PC) auf Null, (so dass das Programm vom Anfang an ausgeführt wird) und die diversen Hardware-Teile des PIC befinden sich ein einem "sicheren" Zustand (z.B. sind alle Port-Pins auf Input geschaltet).
Erreicht wird das durch ein Reset des
Chips. Es gibt mehrere Möglichkeiten ein Reset auszulösen.
Über einen Reset-Taster verbindet
das MCLR-Pin
mit Vss. Drückt man den Taster kurz, dann startet der PIC neu.
Eigentlich ist das MCLR-Pin nur deshalb vorhanden, damit man einen
externen Reset-Taster anschließen kann. Braucht man keinen
Reset-Taster, dann ist auch das MCLR-Pin überflüssig. Moderne
PICs erlauben es deshalb, in der Konfiguration das MCLR-Pin zu einem
normalen IO-Port-Pin zu machen. Dadurch steht dann ein
zusätzliches IO-Pin zur Verfügung.
Der Reset-Puls an MCLR muss wenigstens
ein paar Mikrosekunden lang sein (>2..5 us), damit er vom PIC
akzeptiert wird.
Der Watchdog ist ein kleiner Timer im PIC, der einen eigenen internen RC-Taktgeber besitzt, und somit von der Funktion des PIC unabhängig ist. Dieser Watchdogtimer (WDT) löst, wenn er eingeschaltet ist, alle 18 ms (Toleranzbereich: 7 ms ... 33 ms) ein Reset des PIC aus. Der Reset kann nur verhindert werden, wenn das im PIC laufende Programm den WDT immer wieder zurücksetzt, bevor er einen Reset auslösen kann. Dieses Rücksetzen erfolgt mit dem Befehl clrwdt (oder sleep).
Das
ordnungsgemäß laufende Programm muss also so
programmiert
werden, dass in kurzen Abständen (z.B. alle 5 ms) der Befehl
clrwdt
ausgeführt wird, dann kommt der WDT nicht dazu ein Reset
auszulösen.
Stürzt das Programm aber ab, wird der WDT nicht mehr gelöscht
und startet den PIC neu.
Da 18 ms eine recht
kurze Zeit ist, kann man sie durch einen dem WDT vorgeschalteten
Vorteiler verlängern. Das ist aber der Vorteiler des Timer0. Wenn man disen
Vorteiler für den WDT einsetzt, steht er dem Timer0 nicht mehr zur
Verfügung.
Neuere PICs (z.B. PIC16F88x) haben WDTs deren Timeout-Periode
sich durch einen zusätzlichen 16-Bit-Vorteiler im Bereich von 1 ms
bis zu 256 Sekunden einstellen lässt.
Autor: sprut
erstellt am: 06.09.2011
letzte Änderung: 15.08.2012