wenn ich den Inline-Assembler in der wdr.h in C "übersetze",
funktioniert es trotzdem nicht --- komisch ??? Der Reset wird
ausgelöst, aber die Zeit lässt sich nicht eingeben ...
asm ("cli");
asm ("wdr");
WDTCR = (1<<WDE) |(1<<WDCE); //Watchdog enabled
asm ("sei"); // I-Flag in SREG, wenn gesetzt
WDTCR = (1<<WDE) | 7 ;
//FUNKTIONIERT NICHT !!
#define _wdt_write(value) \
_asm__ __volatile_ ( \
"in _tmp_reg_,__SREG__" "\n\t" \
"cli" "\n\t" \
"wdr" "\n\t" \
"out %0,%1" "\n\t" \
"out _SREG_,__tmp_reg__" "\n\t" \
"out %0,%2" \
: /* no outputs */ \
: "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
"r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \
"r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
_BV(WDE) | (value & 0x07)) ) \
: "r0" \
)