Witam
Problem jest następujący,jak wstawie sekwencje uruchamiania watchdoga na poczoatku programu to jest ok i watchdog dziala dobrze, natomist jesli wstawie tą sekwencję po opóźnieniu wiekszym od 19 ms to watchdog resetuje atmege w taki sposób ze program sie zatrzymuje i nawet reczny reset nie pomaga, dopiero wylaczenie zasilna jest skuteczne, poniżej kod fragmentu programu:
co może byc przyczyna takiego dziwnego zachowania?
pozdrawiam
Problem jest następujący,jak wstawie sekwencje uruchamiania watchdoga na poczoatku programu to jest ok i watchdog dziala dobrze, natomist jesli wstawie tą sekwencję po opóźnieniu wiekszym od 19 ms to watchdog resetuje atmege w taki sposób ze program sie zatrzymuje i nawet reczny reset nie pomaga, dopiero wylaczenie zasilna jest skuteczne, poniżej kod fragmentu programu:
int main(void)
{
DDRC = 0x1f;
PORTC =0xfe;
DDRD = 0x1f;
PORTD = 0xff; //podciagniecie do vcc
DDRB = 0xf; //PB0 i PB1 i PB2 jako wyjscia
PORTB=0xff; //podciagniete do vcc
_delay_ms(19);//jesli to opóznienie bedzie wieksze od 19ms to watchdog nie działa, ponizej tego czasu jest ok
//MCUSR &= ~(1<<WDRF);
/* Start timed equence */
WDTCSR |= (1<<WDCE) | (1<<WDE);//(1<<WDCE)
/* Set new prescaler(time-out) value = 256K cycles (~2 s) */
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP1)| (1<<WDP0);//
cbi(PORTB,PB3);
itd...
co może byc przyczyna takiego dziwnego zachowania?
pozdrawiam