Spisu treści:
- Krok 1: Co to jest zegar Watchdog?
- Krok 2: Jak włączyć zegar Watchdog?
- Krok 3: Utrzymuj działanie programu
- Krok 4: Przykładowe użycie
- Krok 5: Problemy z zegarem Watchdog
- Krok 6: Ciesz się
Wideo: Arduino Hang Guardian - samouczek Arduino Watchdog Timer: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Cześć wszystkim, To się zdarza nam wszystkim. Budujesz projekt, entuzjastycznie łączysz wszystkie czujniki i nagle Arduino zawiesza się i żadne dane wejściowe nie są przetwarzane.
„Co się dzieje?”, zapytasz i zaczniesz przekopywać swój kod, tylko po to, by zdać sobie sprawę, że utknąłeś w nieskończonej pętli. Dzięki Bogu Arduino było na twojej ławce, a nie w odległym miejscu.
Dzisiaj przyjrzymy się, jak możemy użyć timera watchdoga na Arduino, aby temu zapobiec.
Krok 1: Co to jest zegar Watchdog?
Zegar nadzorujący Arduino, jak sama nazwa wskazuje, jest zegarem działającym niezależnie od głównego procesora na płycie. Ten zegar może być używany do okresowego sprawdzania stanu płyty, a w sytuacji, gdy płyta utknęła w pętli oprogramowania lub utknęła z powodu awarii sprzętu, zegar watchdoga może zresetować Arduino i uruchomić go od nowa.
Domyślnie, gdy nie jest używany, ten zegar jest wyłączony we wszystkich projektach i tylko wtedy, gdy go włączymy, musimy okresowo informować go, aby nie resetował naszej płyty, jeśli nadal działa zgodnie z oczekiwaniami.
Aby móc korzystać z timera watchdoga, najpierw musimy dołączyć plik avr/wdt.h do naszego szkicu Arduino. Jest to standardowa biblioteka przechowująca akcje watchdoga.
Krok 2: Jak włączyć zegar Watchdog?
Aby włączyć timer, używamy funkcji „wdt_enable”, gdzie musimy przejść w przedziale progowym, w którym płyta zostanie zresetowana. W zależności od naszego przypadku użycia może to być od 15 milisekund do nawet 8 sekund we wstępnie zdefiniowanych ustawieniach zawartych w bibliotece watchdog.
PRÓG - NAZWA STAŁA
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
Krok 3: Utrzymuj działanie programu
Teraz, przy włączonym zegarze, aby zapobiec resetowaniu naszego Arduino, musimy okresowo wywoływać funkcję „wdt_reset”, aby zresetować zegar watchdoga przed wygaśnięciem przedziału progowego.
Wybierając interwał resetowania, ważne jest, abyśmy wzięli pod uwagę każdą długą operację, taką jak odczyt lub wysyłanie danych lub podłączenie do zewnętrznych czujników. Próg resetowania powinien być co najmniej półtora raza większy niż te czasy, aby zapobiec przypadkowym resetom.
Krok 4: Przykładowe użycie
W przykładowym programie, który możesz pobrać tutaj, najpierw ustawiliśmy zegar watchdoga z interwałem resetowania wynoszącym 4 sekundy. Następnie, aby wiedzieć, że jesteśmy w funkcji konfiguracji, migamy szybko diodą 3 razy, a następnie w pętli głównej najpierw resetujemy timer, zapalamy diodę LED w coraz dłuższych odstępach czasu, a następnie ją wyłączamy. Następna pętla ponownie resetuje timer, aż czas rozpalania będzie dłuższy niż 4 sekundy.
Kiedy tak się stanie, zegar watchdoga resetuje planszę i konfiguracja jest wykonywana ponownie.
Krok 5: Problemy z zegarem Watchdog
Jednym z możliwych problemów z zegarem watchdoga, w zależności od bootloadera twojego Arduino, jest to, że jeśli wartość zegara watchdoga jest zbyt niska, a bootloader nie resetuje zegara podczas przesyłania nowego kodu, może to doprowadzić do uszkodzenia płyty Arduino w taki sposób, że zawsze utknie w fazie rozruchu. Bootloader będzie próbował się uruchomić, ale zegar będzie nadal resetował płytę, nigdy nie pozwalając jej poprawnie się uruchomić. Aby zapobiec takim problemom, zawsze używaj przedziałów progowych wynoszących 2 sekundy lub więcej.
Krok 6: Ciesz się
Jeśli masz przykład, w którym użyłeś timera watchdoga w prawdziwym projekcie, daj mi znać w komentarzach, upewnij się, że podoba Ci się film i nie zapomnij zasubskrybować.
Pozdrawiam i dziękuję za czytanie/oglądanie!
Zalecana:
Timer z Arduino i enkoderem obrotowym: 5 kroków
Timer z Arduino i enkoderem obrotowym: Timer jest narzędziem często wykorzystywanym zarówno w działalności przemysłowej, jak i domowej. Ten zespół jest tani i łatwy w wykonaniu. Jest również bardzo wszechstronny, ponieważ jest w stanie załadować program wybrany zgodnie z potrzebami. Jest kilka napisanych przeze mnie programów dla Ardui
Steampunked Dream Guardian Night Light: 9 kroków (ze zdjęciami)
Steampunked Dream Guardian Night Light: Cześć wszystkim Mój bliski przyjaciel poprosił mnie kilka tygodni temu o stworzenie prezentu zaręczynowego (oczywiście oprócz pierścionka!) dla jego dziewczyny. Oboje są jak ja, strażakami ochotnikami i uwielbiają Steampunk Objects. Mój przyjaciel pomyślał o św
Power Timer z Arduino i enkoderem obrotowym: 7 kroków (ze zdjęciami)
Zegar zasilania z Arduino i enkoderem obrotowym: Ten zegar zasilania jest oparty na zegarze przedstawionym pod adresem: https://www.instructables.com/id/Timer-With-Arduin… Moduł zasilania i SSR (przekaźnik półprzewodnikowy ) zostały do niego dołączone. Obciążenia o mocy do 1KW mogą być obsługiwane i przy minimalnych zmianach l
Eye Guardian: Ochrona oczu wyzwalana dźwiękiem: 9 kroków (ze zdjęciami)
Eye Guardian: Ochrona oczu wyzwalana dźwiękiem: Eye Guardian to zasilana z Arduino, wyzwalana ciągłym dźwiękiem odzież do ochrony oczu o wysokiej decybeli. Wykrywa dźwięki ciężkiego sprzętu i obniża okulary ochronne podczas używania sprzętu. ZarysW pierwszym kroku wyjaśnię Inspirati
The Pi Guardian: 6 kroków (ze zdjęciami)
The Pi Guardian: Czy kiedykolwiek chciałeś złapać tę jedną osobę, która kradnie twoje cukierki na Halloween? A co z tym irytującym współlokatorem, który nie zostawi twojej lodówki w spokoju? Dzięki zastosowaniu Raspberry Pi 3, Pi Camera i czujnika PIR wszystko to jest teraz możliwe. Proste