Forum: Mikrocontroller und Digitale Elektronik Watchdog beim C18-Compiler


von Hans (Gast)


Lesenswert?

Hallo,
ich habe ein Programm für einen PIC 18F2550 in C geschrieben. Nachdem 
dies einwandfrei funktionierte wollte ich den Watchdog-Timer als 
zusätzliche Sicherheit für die LEDs dazuschalten. Doch irgendwie 
funktioniert das auch nach Tagelangem herumprobieren nicht.

Wenn der Watchdog-Vorteiler nicht auf 1:1 steht, funktioniert garnichts 
mehr richtig, unabhängig davon ob der Watchdog überhaupt eingeschalten 
ist oder nicht. Und wenn er auf 1:1 steht stürtzt der PIC nach 2m18s ab, 
egal ob ich ihn mit        _asm   clrwdt  _endasm     per 
Timer0-Interrupt alle 1,4ms zurücksetzte oder nicht.

Hat jemand eine Idee was ich falsch mache oder warum es nicht 
funktioniert?

Schonmal Danke für eure bemühungen...

von Oliver J. (skriptkiddy)


Lesenswert?

Hans schrieb:
> wollte ich den Watchdog-Timer als
> zusätzliche Sicherheit für die LEDs dazuschalten.
Ist das dein Ernst?

von Hans (Gast)


Lesenswert?

Wieso nicht?

von Oliver J. (skriptkiddy)


Lesenswert?

Hans schrieb:
> Wieso nicht?
Weil ein Watchdog für Lauflichter etwas übertrieben ist.

Zeig mal Code her.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn LEDs in einer Matrix mit hohem Pulsstrom angesteuert werden, dann 
ist es schon sinnvoll den Watchdog zu verwenden, damit eine LED nicht 
dauerhaft den hohen Strom abbekommt falls das Programm mal stehen 
bleibt.

von Karl H. (kbuchegg)


Lesenswert?

Schon.
Aber wie sinnvoll ist es

> Und wenn er auf 1:1 steht stürtzt der PIC nach 2m18s ab,
> egal ob ich ihn mit        _asm   clrwdt  _endasm     per
> Timer0-Interrupt

Das ganze mit einem Timer INterrupt zu machen. Wenn sich der µC in einer 
Endlosschleife verfangen hat, kommt der INterrupt ja trotzdem noch und 
der Watchdog wird resettet und resettet, obwohl der µC schon lange seine 
eigentliche Aufgabe nicht mehr wahrnimmt. Wenn im selben Interrupt die 
LED-Matrix weitergeschaltet wird, ist das ja noch ok, aber von einer 
Matrix war bisher noch nicht die Rede.

von Hans (Gast)


Lesenswert?

Es handelt sich tatsächlich um eine LED Matrix.

von Oliver J. (skriptkiddy)


Lesenswert?

Hans schrieb:
> Es handelt sich tatsächlich um eine LED Matrix.
Dann hab ich dir Unrecht getan.

Tschuldigung.

von Hans (Gast)


Lesenswert?

Schön dass das soweit geklärt ist, aber hat keine eine Idee für das 
komische Verhalten? Also spätestens wenn der Watchdog in de CONFIG-Zeile 
ausgeschalten ist dürfte die Einstellung des Vorteilers doch überhaupt 
keinen Einfluss mehr haben. Oder sehe ich das falsch?

von heinzhorst (Gast)


Lesenswert?

Für so etwas ist der Watchdog nicht gedacht. Das macht man mit Timern.

Hans schrieb:
> 1:1 steht stürtzt der PIC nach 2m18s

Teilerfaktor vergrößern.

Hans schrieb:
> _asm   clrwdt  _endasm

Ich mach das mit
1
//clear watchdog timer
2
ClrWdt();

funktioniert auch. Zumindest auf dem 18f46k20.

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.