Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Pozdrav svima, To se događa svima nama. Vi gradite projekt, entuzijastično povezujete sve senzore i odjednom Arduino visi i nikakav se ulaz ne obrađuje.
"Što se događa?", Pitat ćete i početi kopati po svom kodu, samo da shvatite da ste zapeli u beskonačnoj petlji. Hvala Bogu da je Arduino bio na vašoj klupi, a ne na udaljenom mjestu.
Danas ćemo pogledati kako možemo upotrijebiti nadzorni mjerač vremena na Arduinu da se to spriječi.
Korak 1: Što je ovaj mjerač vremena za nadzor?
Arduino watchdog timer, kao što naziv implicira, je timer koji radi odvojeno od glavnog CPU -a na ploči. Ovaj mjerač vremena može se koristiti za povremenu provjeru stanja ploče, a u slučajevima kada se ploča zaglavila u softverskoj petlji ili je zapela zbog kvara na hardveru, mjerač vremena za nadzor može resetirati Arduino i pokrenuti ga iznova.
Prema zadanim postavkama, kad se ne koristi, taj je mjerač vremena onemogućen na svim projektima i samo kad ga omogućimo, moramo ga povremeno obavijestiti da ne resetira našu ploču ako i dalje radi kako se očekuje.
Da bismo mogli koristiti mjerač vremena čuvara, prvo moramo uključiti datoteku avr/wdt.h u našu Arduino skicu. Ovo je standardna knjižnica koja sadrži radnje čuvara.
Korak 2: Kako omogućiti mjerač vremena za nadzor?
Da bismo omogućili mjerač vremena, koristimo funkciju “wdt_enable” gdje moramo ući u prazni interval u kojem će se ploča resetirati. Ovisno o našem načinu uporabe, to može biti od 15 milisekundi do 8 sekundi u unaprijed definiranim postavkama koje se nalaze u biblioteci čuvara.
PRAG - STALNI NAZIV
15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S
Korak 3: Neka vaš program radi
Sada, s omogućenim mjeračem vremena, kako bismo spriječili njegovo resetiranje našeg Arduina, moramo povremeno pozivati funkciju “wdt_reset” za poništavanje mjerača vremena prije isteka praga.
Prilikom odabira intervala resetiranja ključno je uzeti u obzir sve dugotrajne operacije poput čitanja ili slanja podataka ili povezivanja s vanjskim senzorima. Prag resetiranja trebao bi biti barem jedan i pol puta veći od ovih vremena kako bi se spriječilo slučajno resetiranje.
Korak 4: Primjer uporabe
U primjeru programa koji možete preuzeti ovdje, prvo smo postavili mjerač vremena za nadzor s intervalom za resetiranje od 4 sekunde. Zatim da bismo znali da smo u funkciji postavljanja, 3 puta brzo trepćemo LED diodu, a zatim u glavnoj petlji prvo resetiramo mjerač vremena, palimo LED s postupno dužim intervalima, a zatim ga isključujemo. Sljedeća petlja resetira mjerač vremena sve dok vrijeme uključivanja ne bude duže od 4 sekunde.
Kad se to dogodi, mjerač vremena čuvara resetira ploču i postavljanje se ponovno izvodi.
Korak 5: Problemi s mjeračem vremena za nadzor
Jedan od mogućih problema s mjeračem vremena za nadzor, ovisno o pokretačkom sustavu za učitavanje vašeg Arduina, jest da ako je vrijednost mjerača nadzornog sata preniska i pokretački program za učitavanje ne resetira mjerač vremena pri prijenosu novog koda, mogli biste oštetiti svoju Arduino ploču na način da uvijek će ostati zaglavljen u fazi pokretanja. Bootloader će se pokušati pokrenuti, ali mjerač vremena će nastaviti poništavati ploču, ne dopuštajući joj da se pravilno pokrene. Da biste spriječili ovakve probleme, uvijek koristite pragove od 2 sekunde ili više.
Korak 6: Uživajte
Ako imate primjer gdje ste koristili mjerač vremena u pravom projektu, javite mi u komentarima, obavezno lajkujte video i ne zaboravite se pretplatiti.
Svaka čast i hvala na čitanju/gledanju!