Watchdog i AT89S8252?!?

M

mrcube_ns

Guest
Jeg har brug for at bruge vagthund i AT89s8252 (jeg ny i Atmel programmering).

Hvordan det?

Nogle kode eksempler er velkomne.

På forhånd tak.

Mr.Cube

 
Prøvekode

/ / Opdater makro
# define REFRESH_WATCHDOG () WMCON = WMCON | 0x02

void main ()
(
/ / Init WatchDog
WMCON = WMCON | 0xE0; / * Timeoutperioden = 2048ms * /
WMCON = WMCON | 0x01; / * Aktiver WatchDog * /

while (1)
(
/ / Forfriskende
REFRESH_WATCHDOG ();
)
)

 
Et lille tip: ikke opdatere din vagthund inde i en interrupt rutine, fordi det meste af tiden afbryder kører stadig, mens dine vigtigste rutine er gået ned for nogle obskure grund

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />Bedre genopfriske din vagthund inde i en rutine, der hedder ikke alt for ofte, eller sætte nogle flag inde et par rutiner og kun opdatere din vagthund (og nulstille flagene), når alle flag er set (dette kan gøres i dit interrupt rutine), virker meget bedre for mig ...

venlig hilsen

 
Hvis jeg forstår godt, du skal genopfriske wd hver 2 sek (max), som Xtal?

Mr.Cube

PS.C-mand, du ikke bange for, at din UC vil genstarte computeren, selvom nogle af disse flag ikke er indstillet ( 'couse af nogle betingelser eller input hedder)?

 
WD opererer fra en uafhængig oscillator.
Kig på datablad side 9.
http://www.atmel.com/dyn/resources/prod_documents/doc0401.pdf.
Refresh skal være hurtigere end tilfaeldigt udvalgte periode.

 

Welcome to EDABoard.com

Sponsor

Back
Top