Gast
#497814
Einen schönen guten Morgen!
ich programmiere mit ATmega16, ich will den Watchdog nicht für Reset
verwenden, sondern als ganz normalen Timeout mißbrauchen. Kann man die
Funktion von "Reset" diabeln und dafür z.B. eine Funktion aufrufen
lassen, wenn der Watchdog losgeht?
aus der wdt.h hier die ASM Funktion von dem _wdt_write(timeout)
(= wdt_enable(timeout) )
#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" \
)
Ich kenne mich mit ASM nicht gut aus, es müsste ja ein Befehl ähnlich
"JMP 0" oder so kommen, kann man den nicht durch was anderes ersetzen?
Oder ist die Reset - Funktion per Hardware festgelegt?