Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Zdravo svima, To se dešava svima nama. Gradiš projekt, entuzijastično povezuješ sve senzore i odjednom Arduino visi i ne obrađuje se ulaz.
"Što se događa?", Pitat ćete i početi kopati po svom kodu, samo da shvatite da ste se zaglavili u beskonačnoj petlji. Hvala Bogu da je Arduino bio na vašoj klupi, a ne na udaljenoj lokaciji.
Danas ćemo pogledati kako možemo upotrijebiti mjerač vremena čuvara na Arduinu kako bismo spriječili da se to dogodi.
Korak 1: Šta je ovaj mjerač vremena za nadzor?
Arduino watchdog timer, kao što naziv govori, je mjerač vremena 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 se zaglavila zbog kvara na hardveru, mjerač vremena čuvara može resetirati Arduino i pokrenuti ga iznova.
Prema zadanim postavkama, kad se ne koristi, taj timer je onemogućen na svim projektima i samo kad ga omogućimo, moramo se pobrinuti da mu povremeno kažemo 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 biblioteka koja sadrži radnje čuvara.
Korak 2: Kako omogućiti mjerač vremena čuvara?
Da bismo omogućili mjerač vremena, koristimo funkciju “wdt_enable” gdje moramo ući u interval praga u kojem će se ploča resetirati. Ovisno o našem slučaju upotrebe, 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 resetiranje mjerača vremena unatrag prije isteka praga.
Prilikom odabira intervala za resetiranje ključno je uzeti u obzir sve dugotrajne operacije poput čitanja ili slanja podataka ili povezivanja na vanjske senzore. 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 upotrebe
U primjeru programa koji možete preuzeti ovdje, prvo smo postavili mjerač vremena za nadzor sa 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 ponovno postavlja tajmer sve dok vrijeme uključivanja ne bude duže od 4 sekunde.
Kada se to dogodi, mjerač vremena čuvara resetira ploču i postavljanje se ponovo izvodi.
Korak 5: Problemi sa mjeračem vremena čuvara
Jedan od mogućih problema s mjeračem vremena za nadzor, ovisno o pokretaču za pokretanje vašeg Arduina, je taj da ako je vrijednost mjerača nadzornog sata preniska i pokretački program za učitavanje ne poništava tajmer pri učitavanju novog koda, možete oštetiti vašu 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 pravilno pokretanje. 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!