Нифига подобного! Почему тогда заработало только так?
///----- сверхэкономичная пауза на ватчдоге для пропуска дребезга и помех -----//
lowpower_pause: //~16ms
wdr
cli
//запустить WDT на прерывания
WDTCR,((1<<WDTIE)|(1<<WDCE)|(0<<WDE)|(0<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
sei
sleep
cli
//отключить WDT
WDTCR,((0<<WDTIE)|(1<<WDCE)|(0<<WDE)|(0<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
sei
ret
//----- конец сверхэкономичная пауза на ватчдоге для пропуска дребезга и помех -----//
И если делать фсё по мануалу:
WDTCR,((0<<WDTIE)|(1<<WDCE)|(0<<WDE)|(0<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
WDTCR,((1<<WDTIE)|(0<<WDCE)|(0<<WDE)|(0<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
тоесть сначала (1<<WDCE), а вследующем (0<<WDCE) | (1<<WDTIE)
то нифига не работает.
И если отключать так, то WDT не отключается!
MCUSR,0
WDTCR,((0<<WDTIE)|(0<<WDP3)|(1<<WDCE)|(0<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) ;?!?!
WDTCR,((0<<WDTIE)|(0<<WDP3)|(0<<WDCE)|(0<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) ;
отключается только
WDTCR,((0<<WDTIE)|(0<<WDP3)|(1<<WDCE)|(1<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
WDTCR,((0<<WDTIE)|(0<<WDP3)|(0<<WDCE)|(0<<WDE)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0)) //16ms
Или надо чтобы (x<<WDCE) | (x<<WDE) всегда были одинаковые?