Attiny watchdog timer

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Sobota Leden 19 10:56:27 CET 2013


Pro zacatek bych zkusil dat WDR na zacatek programu, kouknout do 
datasheetu, jestli se resetem WD zakaze - mozna ze ne a nastavi se navic 
na nejakou defoultni hodnotu treba 100ms...
Cili na zacatek neco jako wdt_disable()
Dne 19.1.2013 10:52, Miroslav Mraz napsal(a):
> Zdravím,
> zasekl jsem se na jednoduchém problému. Mám Attiny45, fuses default (wdt
> je tedy vypnutý) a kód v C:
>
> #define F_CPU 1000000UL  // 1 MHz
> #include <avr/io.h>
> #include <util/delay.h>
> #include <avr/wdt.h>
>
> int main (void) {
>     DDRB  |=  (1<<DDB0); // LED vystup
>     PORTB &= ~(1<<PB0);  // rozsvitim
>     _delay_ms (1000);    // pockam 1s
>     PORTB |=  (1<<PB0);  // zhasnu
>     wdt_enable (WDTO_1S);
>     for (;;) {
>       wdt_reset();
>       _delay_ms (200);
>       PORTB ^= (1<<PB0);
>     }
>     return 0;
> }
>
> To funguje podle očekávání. Problém nastane, pokud vynechám v hlavní
> smyčce funkci wdt_reset(), tedy instrukci wdr. Pak bych očekával, že
> procesor rozsvítí na 1s ledku, dvakrát blikne a zresetuje se - tedy
> cyklus se bude opakovat. Není tomu tak. Rozsvítí 1s, dvakrát blikne a
> začne blikat s frekvencí cca 10Hz - dostane se tedy do jakéhosi
> nedefinovaného stavu. Tuší někdo, kde by mohl být problém ?
>
> Mrazík
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list