Hallo nochmal,
So in der Art sollte das Einstellen des Watchdogs doch funktionieren
oder?
Übergabewerte:
- watchdog_presc -> Wertebereich 0x0 - 0x9 -> entspricht 2k-1024k
clock cycles
- watchdog_mode -> Wertebereich 0x0 - 0x3:
0x0 = stopped, 0x1 = isr, 0x2 = System reset,
0x3 = isr & system reset
void watchdog_config(unsigned char watchdog_presc, unsigned char
watchdog_mode)
{
switch(watchdog_mode)
{
case 0x0: WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 0x0;
break;
case 0x1: WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = (watchdog_presc&0x7) | \
((watchdog_presc&0x8)<<2) | (1<<WDIE);
break;
case 0x2: WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = (watchdog_presc&0x7) |\
((watchdog_presc&0x8)<<2) | (1<<WDE);
break;
case 0x3: WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = (watchdog_presc&0x7) |\
((watchdog_presc&0x8)<<2) | (1<<WDIE) | \
(1<<WDE);
break;
default: WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 0x0;
}
}
nur wie läuft das mit dem Rücksetzen ab?!?
Einfach "WDR = 0;"?