Так вот время сброса оказалось ОЧЕНЬ неточным: от 2с до 6с!
Это нормально? WDT при каждом включении сбрасываю:
Код
WDT_ON:
cli ; запрещаем прерывания
wdr ; сбрасываем WDT
in temp,MCUSR ;
andi temp,(0xff & (0<<WDRF));
out MCUSR, temp ; сбрасываем флаг MCUSR, для работы с WDE
lds temp,WDTCSR ;
ori temp,(1<<WDCE)|(1<<WDE); разрешаем изменение WDT
sts WDTCSR,temp ;
ldi temp,(1<<WDP0)|(0<<WDP1)|(0<<WDP2)|(1<<WDE)|(0<<WDCE)|(1<<WDP3);
sts WDTCSR,temp ; WDT на 8сек
ret ;
Offtop: почему авр не хотит после инициализации UART отправлять символы, сперва надо что принять? (МК при отправке не зависает, проходит подпрограмму, ничего не отослав по UART, и работает дальше. А вот если сперва принять хотя бы один символ, то все отсылается.)cli ; запрещаем прерывания
wdr ; сбрасываем WDT
in temp,MCUSR ;
andi temp,(0xff & (0<<WDRF));
out MCUSR, temp ; сбрасываем флаг MCUSR, для работы с WDE
lds temp,WDTCSR ;
ori temp,(1<<WDCE)|(1<<WDE); разрешаем изменение WDT
sts WDTCSR,temp ;
ldi temp,(1<<WDP0)|(0<<WDP1)|(0<<WDP2)|(1<<WDE)|(0<<WDCE)|(1<<WDP3);
sts WDTCSR,temp ; WDT на 8сек
ret ;
Спасибо.