Attiny watchdog timer

Miroslav Mraz mraz na seznam.cz
Sobota Leden 19 20:12:55 CET 2013


Dobře, tak to necháme být. Hlavně, že jsem přišel na to, kde je problém.
Já zase ty AVR tolik nedělám, tak si nechám poradit. Tohle jsem nějak
přehlédl. Moc dík.
Ona i tahle mrňavá čudla jako je Attiny45 je docela složitá, tak jsem se
v tom trochu zamotal. Ale docela se mi líbí, dají se s tím dělat velká
kouzla.

Mrazík

Miroslav Šinko píše v So 19. 01. 2013 v 19:34 +0100:
> Nie je bug, ze wdt_disable() neobsahuje nulovanie bitu v MCUSR. Toto 
> nulovanie je potrebne len raz po resete, ked bol reset vyvolany 
> watchdogom. OK, po resete je najjednoduchsie znulovat cely MCUSR.
> Ak je potom pocas behu programu potrebne zakazat watchdog, staci 
> wdt_disable vo verzii, aka je. Rozsirenie o dalsie instrukcie zbytocne 
> kradne kapacitu programovej pamati a strojovy cas.
> 
> Vo wdt.h je v uvodnom komentari uvedeny aj doporuceny kod na zakazanie 
> WDT po resete (ktory priamo vyvracia teoriu o bugu :-) ):
> 
> uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
> 
> void get_mcusr(void) \
>   __attribute__((naked)) \
>   __attribute__((section(".init3")));
> void get_mcusr(void)
> {
>   mcusr_mirror = MCUSR;
>   MCUSR = 0;
>   wdt_disable();
> }
> 
> Aj to pisu, ze premenna mcusr_mirror je potrebna, len ak chceme neskor 
> vysetrovat povodny stav MCUSR.
> 
> miro
> 




Další informace o konferenci Hw-list