ATtiny2313 Watchdog

Jun 26, 2006 4 Replies
0-1848695394-1151330231=:76621 Content-Type: TEXT/PLAIN; charset=iso-8859-2; format=flowed Content-Transfer-Encoding: 8BIT


Nie dokoñca zrozumia³em jak uruchomiæ watchdoga w tym AVRku. Watchdog ma resetowac kontroler po 1 sekundzie. Wydaje mi sie ¿e wystarczy ustawiæ to tak :



WDTCSR = (1<<WDP2) | (1<<WDP1);



ale czy napewno ?


Zagl±dnij do noty katalogowej, tam s± gotowe procedury, tylko przekleiæ. Aby zmodyfikowaæ preskaler trzeba wpierw ustawiæ bit WDCE tego rejestru, podobnie jak to ma miejsce podczas zerowania pieska. Kolejna sprawa to jeszcze w³±czenie watchdoga i jego skonfigurowanie (co ma siê dziaæ po przekroczeniu czasu).

Micha³

Zagl±da³em. Ja chce siê nauczyæ, a nie przeklejaæ gotowy kod. Skoro pytam to oznacza, ¿e nie zrozumia³em tego opisu.

Jakto podobnie jak podczas zerownia ? Przecie¿ zeruje siê jedn± instrukcj± WDR.

No w³a¶nie, to mo¿e wspólnie to zrobimy, bo ja pewnien nie jestem. Kolejna propozycja :

WDTCSR = (1<<WDCE) | (1<<WDE); WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP1);

Piotr Chmiel napisał(a):

[...]

Korzystaj z biblioteki standardowej gdzie tylko można. Jak w kolejnym projekcie zechcesz zmienić procesor, nie trzeba będzie połowy kodu pisać od nowa.

Aby włączyć watchdoga wystarczy dołączyć plik <avr/wdt.h> i napisać:

wdt_enable (WDTO_1S);

Ta funkcja zapewnia konfigurację watchdoga przy wyłączonych przerwaniach (ważne!) i z właściwą kolejnością zapisów. Resztę doczytasz w dokumentacji avr-libc. Jeżeli chcesz jednak wszystko zrobić na piechotę

- po prostu przepisz kawałek funkcji _wdt_write z pliku avr/wdt.h.

Nie korzystam z GCC. I nie chce korzystaæ z "gotowców", a jak zmienie procka to bêde przerabia³. Chcia³em siê dowiedzieæ jak skonfigurowac WD na piechote, ale póki co wszyscy tylko gotowce polecaj±.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required