Не получается ресетить контроллер при помощи собаки через 2 секунды, вернее - 1 раз ресетит а потом цикл while крутит.
Делал всё по даташиту
WDTCSR = (1<<WDCE) |(1<<WDE);
WDTCSR = (1<<WDE) | (1<<WDP2) |(1<<WDP1) |(1<<WDP0);
Спасибо
А я его нарочно вот этим asm("wdr"); - не сбрасываю - хочу посмотреть как он работает.pyzhman писал(а):Как бэ, если в цикле или в прерываниях (если они есть) вачдог сбрасывается, то почему бы и не крутить?
А я в даташите прочёл следующее:Делал всё по даташиту
C Code ExampleNote: The Watchdog Timer should be reset before any change of the WDTCSR.WDPКод: Выделить всё
void WDT_Prescaler_Change(void) { __disable_interrupt(); __watchdog_reset(); /* Start timed sequence */ WDTCSR |= (1<<WDCE) | (1<<WDE); /* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */ WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0); __enable_interrupt(); }
bits, since a change in the WDTCSR.WDP bits can result in a time-out when switching to
a shorter time-out period.