Attiny watchdog timer

Andrej Jancura aj.hwlist na gmail.com
Sobota Leden 19 11:13:28 CET 2013


Dobry den,

2013/1/19 Miroslav Mraz <mraz na seznam.cz>:
> 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
>
>

To vyzera ako keby reset nastavil nejaku delicku inak, ako cakate.
Myslim si, ze druhy reset nie je 1s ale nieco ine, pretoze vam to
zacne periodicky resetovat. Zrejme to wdt_1s musite nastavit kazdy
krat, ked je reset spolu s hodinami. Ja som watchdog debugoval tak, ze
som si nechal generovat na nejakom pine kratke pulzy po kazdom
prikaze.

A.

>
> _______________________________________________
> 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