Wer kennt das Problem?? Der Watchdog ATmega8 (5 Volt und 1MHz interner Oszillator) lässt sich nicht auf die 1,9 Sekunden programmieren. Habe laut Datenblatt die Bits für 1,9 Sekunden Sekunden gesetzt, aber er arbeitet irgendwo im Millisekundenbereich. .include "m8def.inc" wdr ;Watchdog zurücksetzen ldi r16,0b00001111 ;Watchdog aktivieren (max. Zeit) out wdtcr,r16
Hallo, siehe Datenblatt Seite 43 (Rev. L) To disable an enabled Watchdog Timer and/or changing the Watchdog Time-out, the following procedure must be followed: 1. In the same operation, write a logic one to WDCE and WDE. A logic one must be written to WDE regardless of the previous value of the WDE bit. 2. Within the next four clock cycles, in the same operation, write the WDE and WDP bits as desired, but with the WDCE bit cleared. daher solltest du das probieren .include "m8def.inc" wdr ;Watchdog zurücksetzen ldi r16,0b00011000 ;NEU DAZU <--- out wdtcr,r16 ;NEU DAZU <--- ldi r16,0b00001111 ;Watchdog aktivieren (max. Zeit) out wdtcr,r16 Gruß Thorsten
Thorsten, danke für Deinen Tipp, hab es gerade mal getestet, funktioniert wunderbar. Werde den Code mal hier veröffentlichen. Wünsch Dir ein schönes Wochenende. Gruß Bernhard
Moin! Ich brauche zum ersten mal die Watchdog, da ich mit dem RFM12 herumexperimentiere und das Modul hin und wieder alle paar Tage stehen bleibt. Nun bin ich über diesen Beitrag gestolpert. Um die Watchdog EINZUSCHALTEN reicht folgender Code: .include "m8def.inc" wdr ;Watchdog zurücksetzen ldi r16,0b00001001 ;WDE setzten Bit 4 / Watchdog Time setzten Bit 0 1 2 out wdtcr,r16 main: wdr ; Watchdog regelmäßig zurücksetzten rcall sonstwas. jmp main Zum Testen im AVRStudio: .include "m8def.inc" wdr ;Watchdog zurücksetzen - und in Main regelmäßig zurücksetzten ldi r16,0b00001001 ;WDE setzten Bit 4 / Watchdog Time setzten Bit 0 1 2 out wdtcr,r16 nop ; Hier einen Breakpoint setzten um zu sehen wann die WD auslöst main: jmp main
;##################################################### ; Watchdog - Routinen - ATMEGA8 - Die Watchdog Fuse darf nicht gesetzt sein ;##################################################### Watchdog_ON: ldi r16,0b00011000 ;WDCE setzen da Änderung folgt / WDE ein out wdtcr,r16 ldi r16,0b00001111 ;WDE EIN und Zeitbasis setzen Bit 0 1 2 out wdtcr,r16 Watchdog_OFF: ldi r16,0b00011000 ;WDCE setzen da Änderung folgt / WDE ein out wdtcr,r16 ldi r16,0b00000000 ;WDE AUS out wdtcr,r16
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.