Podstawowe wskazówki dotyczące projektowania PCB: Jak zaimplementować timer strażnika (watchdog timer) w projekcie PCB

Utworzono: listopad 1, 2017
Zaktualizowano: październik 16, 2020
Boiling kettle

Kiedy pracujesz z domu, są pewne zalety tej pracy. Możesz przygotowywać własne posiłki, zrobić pranie podczas lunchu i pić tyle herbaty, ile chcesz. Do gotowania wody na herbatę używam czajnika na kuchenkę, więc kiedy wpadam w strefę pisania, polegam na jego wysokim świstle, aby dać mi znać, kiedy woda się zagotuje.

Czasami, gdy jestem nieostrożny, nie zakładam pokrywki prawidłowo. W rezultacie czajnik pozostaje cichy, pomimo tego, że płynna woda w środku szybko zamienia się w gaz. Moje nieostrożne zachowanie w tym scenariuszu oznacza tylko, że będę pił mniej herbaty, ale w systemach wbudowanych konsekwencje są znacznie większe, jeśli nie wiesz, jak obsługiwać Watchdog Timer (WDT). Gdy Twój timer nie działa, zablokowany mikrokontroler pozostanie zablokowany i spowoduje, że Twój system wbudowany pozostanie nieaktywny. Spójrzmy, jak działa timer stróżujący, jak zaimplementować obwód timera stróżującego i jak sprawić, by działały poprawnie za pierwszym razem, aby uniknąć tego scenariusza.

Dlaczego systemy wbudowane nie mogły się odzyskać, pomimo posiadania WDT

Timer Strażnika (Watchdog Timer, WDT) to prosta funkcja zabezpieczająca w elektronice, która pomaga w ponownym uruchomieniu mikrokontrolera w przypadku awarii sprzętu lub oprogramowania obwodu strażnika. Timery Strażnika STM32 są dostępne jako oddzielny układ scalony (IC) lub jako wbudowana funkcja w samym mikrokontrolerze. Niekorzystanie z WDT w projektowaniu systemów wbudowanych jest często nie do wybaczenia.

Sposób działania Timerów Strażnika jest prosty. Są programowane do odliczania przez ustalony interwał czasowy strażnika. Podczas normalnej pracy mikrokontroler okresowo odświeża licznik czasowy timera, aby zapobiec jego wygaśnięciu. Jeśli mikrokontroler nie odpowiada, nie odświeży Timera Strażnika. W rezultacie, gdy Timery Strażnika wygasną, wyzwolą impuls lub sygnał do zresetowania mikrokontrolera przez Timer Strażnika. Ta prosta funkcja kompensuje błędy projektowe lub czynniki środowiskowe, które mogą spowodować awarię mikrokontrolera.

Jednakże, jeśli Twój WDT zawiedzie, to mało prawdopodobne jest, że Twój system wbudowany odzyska z błędnego stanu. Dlatego ważne jest, aby zidentyfikować przyczynę, dla której Timer Strażnika może nie zresetować mikrokontrolera. Najbardziej oczywistą odpowiedzią jest to, że układy chipów Timera Strażnika są wadliwe. Jednakże, jeśli powtarzają się przypadki, gdy systemy wbudowane w wielu jednostkach nie mogą się odzyskać, może to oznaczać problem z Twoimi projektami.

W rzeczywistości, przez wiele lat projektowania i wdrażania setek urządzeń opartych na mikrokontrolerach, nigdy nie napotkałem ani jednego przypadku awarii Timera Strażnika STM32. Przyczyną jest często po prostu błąd ludzki.

Error on a red screen
Co widzisz, gdy WDT nie udaje się zrestartować zawieszonego mikrokontrolera

Dlaczego WDT może nie działać prawidłowo

W systemach wbudowanych wykorzystujących wewnętrzny WDT, kod, który wymyka się spod kontroli, może dezaktywować Timer Strażnika, jeśli bity konfiguracyjne zostaną nieumyślnie nadpisane. Zewnętrzne układy Timera Strażnika napotykają na całkowicie inne problemy. W tym przypadku, często występuje zworka, która może odłączyć sygnał resetowania od zewnętrznego Timera Strażnika, gdy inżynierowie firmware'u rozwijają i debugują program. Często te zworki muszą być ręcznie połączone przed wdrożeniem jednostek na miejscu. Jeśli tego nie zrobią, sygnały resetujące WDT pozostaną odłączone i nie zresetują mikrokontrolera.

Częstszym powodem, dla którego Timery Strażnika (Watchdog Timers) nie działają poprawnie, są błędy kodowania. Jeśli funkcje odświeżające timery WDT są umieszczone w niewłaściwej części programu, nie będą działać, kiedy powinny. Firmware dla mikrokontrolerów staje się skomplikowane, gdy istnieje wiele zadań o różnych priorytetach w Systemie Operacyjnym w Czasie Rzeczywistym (RTOS). Zadania obwodu Watchdog o wyższym priorytecie mogą być kontynuowane, nawet gdy zadania o niższym priorytecie znajdują się w nienormalnej, nieskończonej pętli. Jeśli odświeżanie obwodu Timera Strażnika jest zadaniem o najwyższym priorytecie, wówczas mikrokontroler nie zostanie odświeżony, gdy nie funkcjonuje poprawnie.

Man programming at computer
Dobrą praktyką jest upewnienie się, że Watchdog Timery są odświeżane poprawnie

Jak Zapewnić Niezawodne Działanie WDT

Zapewnienie, że WDT wykonuje swoje zadanie, wymaga współpracy programisty firmware, instalatora systemu i projektanta sprzętowego Watchdog. Programiści firmware powinni stosować najlepsze praktyki programowania, aby unikać przekroczeń kodu, które wyłączają wewnętrzny WDT. Programiści firmware muszą dobrze rozumieć architekturę pamięci mikrokontrolera i wiedzieć, jak poprawnie używać wskaźników pamięci i alokacji w kodzie.

Poza tym, struktura programu powinna być zaprojektowana tak, aby Timery Strażnika (Watchdog Timers) były odświeżane w odpowiednich miejscach w programie. Oznacza to, że program wywoła reset Watchdog'a, jeśli w jakimkolwiek miejscu programu rozwinie się pętla nieskończona. Możesz również opracować narzędzie testowe do sprawdzania funkcjonalności WDT na miejscu. Eliminuje to również ryzyko pominięcia jakichkolwiek niepodłączonych pinów zworkowych między zewnętrznym Timerem Strażnika a mikrokontrolerem.

Kiedy potrzebujesz dostępu do łatwego w użyciu narzędzia do projektowania układów PCB, które zawiera wszystko, co potrzebne do budowy wysokiej jakości produkowalnych płyt obwodów, nie szukaj dalej niż CircuitMaker. Dodatkowo, wszyscy użytkownicy CircuitMaker mają dostęp do osobistej przestrzeni roboczej na platformie Altium 365. Możesz przesyłać i przechowywać swoje dane projektowe w chmurze oraz łatwo przeglądać swoje projekty za pomocą przeglądarki internetowej na bezpiecznej platformie.

Zacznij używać CircuitMaker już dziś i bądź na bieżąco z nowym CircuitMaker Pro od Altium.

 

Zobacz Altium Designer w akcji...

Mocne projektowanie PCB

Powiązane zasoby

Powrót do strony głównej
Thank you, you are now subscribed to updates.