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