Spisu treści:

Arduino Hang Guardian - samouczek Arduino Watchdog Timer: 6 kroków
Arduino Hang Guardian - samouczek Arduino Watchdog Timer: 6 kroków

Wideo: Arduino Hang Guardian - samouczek Arduino Watchdog Timer: 6 kroków

Wideo: Arduino Hang Guardian - samouczek Arduino Watchdog Timer: 6 kroków
Wideo: Arduino watchdog timer Demo 2024, Lipiec
Anonim
Image
Image

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?

Jak włączyć zegar nadzoru?
Jak włączyć zegar nadzoru?

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?

Jak włączyć zegar nadzoru?
Jak włączyć zegar nadzoru?
Jak włączyć zegar nadzoru?
Jak włączyć zegar nadzoru?

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

Utrzymuj swój program w ruchu
Utrzymuj swój program w ruchu

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

Przykładowe użycie
Przykładowe użycie
Przykładowe użycie
Przykładowe użycie
Przykładowe użycie
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ę

Cieszyć się
Cieszyć 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: