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...
Hans schrieb: > wollte ich den Watchdog-Timer als > zusätzliche Sicherheit für die LEDs dazuschalten. Ist das dein Ernst?
Hans schrieb: > Wieso nicht? Weil ein Watchdog für Lauflichter etwas übertrieben ist. Zeig mal Code her.
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.
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.
Hans schrieb: > Es handelt sich tatsächlich um eine LED Matrix. Dann hab ich dir Unrecht getan. Tschuldigung.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.