удали CodeVision - все проблемы сразу пропадут. вместо этого установи GTA - норм будет заменаneo-neo писал(а):буду постепенно проги удалять с компа
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
удали CodeVision - все проблемы сразу пропадут. вместо этого установи GTA - норм будет заменаneo-neo писал(а):буду постепенно проги удалять с компа
научитесь задавать вопросы так, чтобы вашу проблему можно было понять сразу, без наводящих вопросов. кстати, в этом очень помогают знаки препинания.neo-neo писал(а):может я не так что делаю
Код: Выделить всё
для вставки своего кода.
что именно, с вашей точки зрения, за проблема возникает с продемонстрированным нам кодом? формально в нем ошибок нет, а есть ли в нем ошибки по смыслу станет ясно только в том случае, если вы озвучите, какой смысл следует ожидать.Код: Выделить всё
TCNT1H=TC >> 8;
TCNT1L=TC & 0xff;
Код: Выделить всё
TC=TCNT1H << 8;
TC=TC+TCNT1L;
этот режим работает так: когда он включен, первое переполнение WDT вызывает прерывание. при переходе к обработчику прерывания WDT автоматически переключается на режим сброса, т.е. следующее переполнение WDT уже вызовет не прерывание, а сброс.SIM31 писал(а):Сначала прерывание, потом неизбежный сброс по выходу из него? Или можно WDT сбросить и продолжить работу?
Код: Выделить всё
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/256k
// Watchdog timeout action: Reset
#pragma optsize-
WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (0<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);Код: Выделить всё
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/256k
// Watchdog timeout action: Reset + Interrupt
#pragma optsize-
//WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
//WDTCSR=(1<<WDIF) | (1<<WDIE) | (0<<WDP3) | (0<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);Код: Выделить всё
#asm("WDR")
WDTCSR=(1<<WDCE)|(1<<WDE);
WDTCSR=(1<<WDIE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);Возможно надо обновлять Proteus 8.3, но не факт что там что-то поправили, может новые контроллеры добавляют. Но может и ошибся где-то или надо что-то править ))PC=0x012A. [AVR WATCHDOG] Timer expired - Interrupt generated and processor will be reset after its handling. [U1]
Код: Выделить всё
while (1)
{
WDTCSR=(1<<WDCE)|(1<<WDE);
WDTCSR=(1<<WDIE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
}