Časovač v Arduine (Watchdog)

Časovač v Arduine (Watchdog)

ATmega328P má zabudovaný (Watchdog časovač), čo je užitočná funkcia, ktorá pomáha systému zotaviť sa zo scenárov, kedy systém zamrzne v dôsledku chýb v napísanom kóde alebo v dôsledku podmienok, ktoré môžu nastať v prípade problému s hardvérom.

Časovač je potrebné nakonfigurovať podľa potreby aplikácie.

Watchdog používa interný zdroj hodín 128 kHz. Keď je aktivovaný, začne počítať od 0 po hodnotu zvolenú používateľom. Ak sa časovač watchdog nevynuluje v čase, keď dosiahne užívateľom zvolenú hodnotu, watchdog resetuje mikrokontrolér.

Watchdog timer ATmega328P je možné nakonfigurovať na 10 rôznych nastavení času (čas, po ktorom pretečie watchdog timer, čím spôsobí reset).

Tieto časy sú: 16 ms, 32 ms, 64 ms, 0,125 s, 0,25 s, 0,5 s, 1 s, 2 s, 4 s a 8 s.

Príklad:

Budeme používať len zabudovanú LED pripojenú na kolík 13 dosky Arduino UNO. Pre tento príklad náčrtu je potrebná iba doska Arduino UNO.

Na začiatku kódu je vypnutý časovač Watchdog. Pred zapnutím funkcie Watchdog sa použije oneskorenie 3 sekundy. Toto oneskorenie je dôležité, aby bootloader v Arduine skontroloval, či sa nahráva nový kód, a aby mal čas na napálenie kódu do flash.

Je to dôležité ako preventívne opatrenie. Môže nastať situácia, kedy v dôsledku chybného kódovania alebo nesprávnych úvah; napísaný kód opakovane resetuje mikrokontrolér vo veľmi krátkych časoch donekonečna.

To poškodí dosku Arduino a povedie k tomu, že sa na dosku nenahrajú náčrty. Nemusí to platiť pre nový zavádzač Optiboot, ktorý prichádza s novšou verziou Arduina, no pri tých starších sa to určite stane. V prípade, že týmto spôsobom rozbijete Arduino, budete musieť napáliť bootloader pomocou iného Arduina cez ISP.


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky