Tartalomjegyzék:

Az Arduino Hang Guardian - Arduino Watchdog Timer bemutató: 6 lépés
Az Arduino Hang Guardian - Arduino Watchdog Timer bemutató: 6 lépés

Videó: Az Arduino Hang Guardian - Arduino Watchdog Timer bemutató: 6 lépés

Videó: Az Arduino Hang Guardian - Arduino Watchdog Timer bemutató: 6 lépés
Videó: [Lập Trình Arduino] Bài 10: Watchdog Timer 2024, November
Anonim
Image
Image

Sziasztok, Mindannyiunkkal előfordul. Felépít egy projektet, lelkesen csatlakoztatja az összes érzékelőt, és hirtelen az Arduino lefagy, és a bemenet nem kerül feldolgozásra.

„Mi folyik itt?”, Megkérdezi, és elkezdi ásni a kódot, hogy rájöjjön, hogy elakadt egy végtelen ciklusban. Hála Istennek, az Arduino a padján volt, és nem egy távoli helyen.

Ma megvizsgáljuk, hogyan használhatjuk az Arduino őrségi időzítőjét ennek megakadályozására.

1. lépés: Mi ez a Watchdog Timer?

Hogyan lehet engedélyezni a Watchdog Timer -t?
Hogyan lehet engedélyezni a Watchdog Timer -t?

Az Arduino watchdog időzítője, ahogy a neve is sugallja, egy időzítő, amely a táblán lévő fő CPU -tól elkülönítve fut. Ezzel az időzítővel rendszeresen ellenőrizhető a tábla állapota, és olyan körülmények között, amikor a tábla beszorult egy szoftverhurokba, vagy elakadt a hardver meghibásodása miatt, a figyelő időzítő visszaállíthatja az Arduino -t, és elölről kezdheti.

Alapértelmezés szerint, amikor nincs használatban, ez az időzítő minden projekten le van tiltva, és csak akkor, ha engedélyezzük, rendszeresen közölnünk kell vele, hogy ne állítsa alaphelyzetbe a táblát, ha továbbra is a várt módon működik.

A watchdog időzítő használatához először be kell vonnunk az avr/wdt.h fájlt az Arduino vázlatunkba. Ez a szabványos könyvtár, amely a felügyeleti műveleteket tartalmazza.

2. lépés: Hogyan engedélyezhető a Watchdog Timer?

Hogyan lehet engedélyezni a Watchdog Timer -t?
Hogyan lehet engedélyezni a Watchdog Timer -t?
Hogyan lehet engedélyezni a Watchdog Timer -t?
Hogyan lehet engedélyezni a Watchdog Timer -t?

Az időzítő engedélyezéséhez a „wdt_enable” funkciót használjuk, ahol át kell lépnünk azon a küszöbintervallumon, amelyen a kártya alaphelyzetbe áll. Használati esettől függően ez 15 milliszekundumtól 8 másodpercig terjedhet az előre meghatározott beállításokban, amelyek a watchdog könyvtárban találhatók.

THRESHOLD - Állandó név

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

3. lépés: Folytassa a program futását

Folytassa a program futását
Folytassa a program futását

Most, amikor az időzítő engedélyezve van, hogy megakadályozzuk az Arduino alaphelyzetbe állítását, időnként meg kell hívnunk a „wdt_reset” funkciót, hogy visszaállítsuk az őrszem időzítőjét a küszöbérték lejárta előtt.

A visszaállítási intervallum kiválasztásakor elengedhetetlen, hogy figyelembe vegyünk minden olyan hosszadalmas műveletet, mint az adatok olvasása vagy küldése, vagy külső érzékelőkhöz való csatlakozás. A visszaállítási küszöbértéknek legalább másfélszer nagyobbnak kell lennie, mint ezek az idők, hogy elkerüljék a véletlen visszaállításokat.

4. lépés: Példa használat

Példa használat
Példa használat
Példa használat
Példa használat
Példa használat
Példa használat

Az itt letölthető példaprogramban először állítottuk be a watchdog időzítőt 4 másodperces visszaállítási időközönként. Aztán, hogy tudjuk, hogy a beállítási funkcióban vagyunk, háromszor gyorsan felvillanunk egy LED -et, majd a fő hurokban először visszaállítjuk az időzítőt, fokozatosan hosszabb időközönként világítunk egy LED -et, majd kikapcsoljuk. A következő ciklus ismét alaphelyzetbe állítja az időzítőt, amíg a világítási idő meg nem haladja a 4 másodpercet.

Amikor ez megtörténik, a watchdog időzítő alaphelyzetbe állítja a táblát, és a beállítás újra végrehajtódik.

5. lépés: A Watchdog Timer kérdései

Az egyik lehetséges probléma a watchdog időzítővel az Arduino rendszerbetöltőjétől függően az, hogy ha a watchdog időzítő értéke túl alacsony, és a rendszerbetöltő nem állítja vissza az időzítőt az új kód feltöltésekor, akkor az Arduino kártya károsodását okozhatja. mindig a rendszerindítási fázisban ragad. A rendszerbetöltő megpróbál elindulni, de az időzítő folyamatosan visszaállítja a táblát, és soha nem teszi lehetővé a megfelelő indítást. Az ilyen problémák elkerülése érdekében ügyeljen arra, hogy mindig 2 másodperces vagy annál hosszabb küszöbintervallumokat használjon.

6. lépés: Élvezze

Élvezd
Élvezd

Ha van egy példája arra, hogy hol használta a watchdog időzítőt egy valódi projektben, akkor ossza meg velem a megjegyzésekben, győződjön meg róla, hogy tetszik a videó, és ne felejtse el feliratkozni.

Gratulálok és köszönöm, hogy olvastad/nézted!

Ajánlott: