Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Watchdog w AVR wewnętrzny czy zewnętrzny?

autoservice 16 Lis 2008 23:01 2849 22
  • #1 16 Lis 2008 23:01
    autoservice
    Poziom 20  

    Witam
    Robię sobie sterownik do pieca...często mnie nie ma w domu więc musi być jak najbardziej bezpieczny. Używam Atmega32. Zasilanie i inne rzeczy w miarę dobrze odfiltrowane...ale gdyby coś się działo załączyłem wewnętrznego watchdog'a. I teraz nasuneła mi się myśl czy on może się też "zawiesić"? Zdarzyło się komuś? Może lepiej dorzucić jeszcze jakiś zewnętrznego watchdog'a dla bezpieczeństa...
    Pzdr.

    0 22
  • #2 16 Lis 2008 23:10
    mirekk36
    Poziom 42  

    Wg mnie wewn watchdog może się "zawiesić" chyba tylko w wyniku śmierci procesora przez spalenie , więc to chyba dosyć bezpieczne. Tak mi się wydaje

    0
  • #3 16 Lis 2008 23:12
    dawid512
    Poziom 32  

    Teoretycznie wystarczy wew. watchdog bo jest on taktowany z odseparowanego oscylatora 1MHz.

    0
  • #4 17 Lis 2008 00:13
    autoservice
    Poziom 20  

    ...no tak czytam pdf'a atmegi i faktycznie ten watchdog jest taktowany z własnego zegara...jedyne co mu może przeszkodzić to problemy z zasilaniem...ale na szczęście atmega ma też BOD'a :)...
    jeszcze pytanie z innej beczki...mam zewnętrzengo EEPROM'a, w którym zapisuje raz na miesiąc jakieś ważne dane...z racji tego, że muszę czasem coś zapisać nie mogę sprzętowo podciągnąć nóżki ukłądu i zabezpieczyć przed przypadkowym zapisem...czy jest sens np. zabezpieczyć w taki sposób , że podciągam rezystorem do plusa a w samem procedurze zapisu do eeproma załączam tranzystor, który mi zwiera tę nóżkę do plusa...warto to dawać?
    Pzdr.

    0
  • #5 17 Lis 2008 00:28
    mirekk36
    Poziom 42  

    z tym eepromem i nóżką zwieraną do plusa to nie bardzo rozumiem - może jakiś kawałek schematu? a tak ogólnie -to czemu nie korzystasz z EEPROM'a w procku???? (Atmega32 ma przecież sporo tej pamięci) no chyba, że zapisujesz tych danych aż tak ogromne ilości że się nie mieszczą w EEPROMIE prockowym - ale co potem z nimi robisz - odczytujesz je do PC czy co?

    0
  • #6 17 Lis 2008 00:51
    marek_Łódź
    Poziom 36  

    Zawsze mnie to frapowało. Jak można mieć pewność działania układu, który jest bramkowany stanem jakiegoś tam przerzutnika. Jaką mamy gwarancję, że na skutek zakłócenia WDE nie zostanie wyzerowany.

    0
  • #7 17 Lis 2008 01:12
    autoservice
    Poziom 20  

    ...eeprom np 24c64 ma nóżkę WriteProtect, która podciągnięta do plusa blokuje zapis a więc nasze dane są bezpieczne...można tą nóżkę kluczować zwykłym tranzystorem zwierając do masy a więc umożliwiając chwilowo zapis...a w czasie normalnej pracy sprawdzać czy tranzystor jest otwarty tzn WP podciągniety do plusa...
    Co do watchdoga...tak samo nie możemy mieć pewności, że dodatkowy watchdog zewnętrzny nie zostanie wyzerowy z pwodu zakłócenia :)
    Pzdr.

    0
  • #8 17 Lis 2008 08:10
    mirekk36
    Poziom 42  

    no tak, nie wiedziałem o tym sposobie bo nie korzystałem jeszcze z zewnętrznych eepromów, ale chyba warto tak robić jak piszesz skoro jest taka możliwość i skoro masz wolny port na jej bramkowanie tranzystorem

    0
  • #9 17 Lis 2008 08:33
    marek_Łódź
    Poziom 36  

    autoservice napisał:
    Co do watchdoga...tak samo nie możemy mieć pewności, że dodatkowy watchdog zewnętrzny nie zostanie wyzerowy z pwodu zakłócenia :)
    Wyzerowany tak, ale zatrzymany NIE. Jeśli układ nie będzie miał stanów nieaktywnych, czyli będzie np. zwykłym licznikiem, czy generatorem (555) z funkcją zerowania z procesora, nie ma możliwości żeby nie działał. Moja wątpliwość dotyczy możliwości wejścia w stan zatrzymania, który mają watchdogi wbudowane w procesor. W starych dobrych czasach 8751 używałem do tego celu licznik wielobitowy bodajże 4060. Dodatkowo można dołożyć logikę w układzie zerowania, która wymusi złożoną sekwencję, oczywiście cały czas trzymając się reguły, że nie może być stanów nieaktywnych. Oczywiście wszystkie proste scalone watchdogi bez programowego wyłączania są w 100% pewne, spełniając warunek braku stanów nieaktywnych.

    0
  • #10 17 Lis 2008 08:44
    arturt134
    Poziom 26  

    Wyłączenie watchdoga w AVR-ze nie jest takie proste. Musisz wpisać hasło, a w ciągu 4 cykłów zegara wyłączyć watchdoga. Zastanów się jakie jest prawdopodobieństwo wystąpienia DWÓCH zakłóceń (i to tak szczególnych) w odstępie 4 cykli zegara głównego CPU?
    Poza tym masz bezpiecznik WDTON (o ile dobrze pamiętam) - możesz ustawić, że watchdog będzie zawsze włączony i w ogóle nie da się go wyłączyć programowo.

    0
  • #11 17 Lis 2008 08:54
    Dr_DEAD
    Poziom 28  

    marek_Łódź napisał:

    Nie chcecie się wypowiedzieć? Skoro WD można wyłączyć programowo, mogę dopuścić, że przy niekorzystnym zbiegu okoliczności watchdog zostanie wyłączony na skutek zakłócenia. Jedynym w 100% pewnym watchdogiem jest taki, który nie ma stanów nieaktywnych, czyli zewnętrzny licznik cykliczny (kość WD).

    No w Atmelach to jest chyba tak że aby wyłączyć WatchDoga to trzeba zmienić fuzebita czyli zapisać Flash. Jeżeli w procku nigdzie nie są używane procedury zapsu Flasha, to raczej małoprawdopodobne aby Flash się przypadkowo nadpisał, a pozatym chyba można ustawić inne LockBity tak aby zapis Flasha nie był możliwy z obszaru Aplikacji czy nawet Bootloadera. Trzebaby było to jeszcze prześledzić w manualu bo mogę jakieś głupoty wypisywać.
    W innych prockach gdzie WatchDog jest wyłączany "w ramie" zerowanie WachDoga jednocześnie oznacza jego uruchomienie, czyli nawet jak przyadkowo zostanie wyłączony to i tak przy najstępnym zerowaniu się włączy. Pozatym czasem do wyłączenia WatchDoga potrzeba jest hasło bajtowe, a złe jego podanie powoduje zadziałanie WatchDoga.

    0
  • #12 17 Lis 2008 08:58
    marek_Łódź
    Poziom 36  

    arturt134 napisał:
    Wyłączenie watchdoga w AVR-ze nie jest takie proste. Musisz wpisać hasło, a w ciągu 4 cykłów zegara wyłączyć watchdoga. Zastanów się jakie jest prawdopodobieństwo wystąpienia DWÓCH zakłóceń (i to tak szczególnych) w odstępie 4 cykli zegara głównego CPU?
    Poza tym masz bezpiecznik WDTON (o ile dobrze pamiętam) - możesz ustawić, że watchdog będzie zawsze włączony i w ogóle nie da się go wyłączyć programowo.
    Sam sobie odpowiedziałeś na pytanie, czy może się zatrzymać, używając słowa "prawdopodobieństwo". Niezależnie od tego, nie wydaję mi się żeby do wyzerowania przerzutnika uruchamiającego watchdog niezbędna była sekwencja programowa. Tak jak w każdym układzie logicznym wystarczy niekorzystne zakłócenie. Podobnie sprawa ma się z ewentualnymi flagami eeprom, które włączają wd na stałe. Mnie osobiście zdarzało się, że na skutek błędnego zasilania procesor gubił zapisy w pamięci "stałej". Nie mówimy tu o sytuacjach normalnych, ale o tym co może się zdarzyć, nawet jeśli prawdopodobieństwo wystąpienia jest bardzo małe. Generalnie w układach odpowiedzialnych stosuje się zdublowane układy bezpieczeństwa, które zapewniają przynajmniej bezpieczne zatrzymanie w razie awarii sterowania głównego, ale to już odrębny temat.

    Nie twierdzę, że zdublowanie watchdoga, czy sterownika jest konieczne. Warto jednak mieć świadomość potencjalnych zagrożeń i ewentualnych ich konsekwencji, oraz podjąć kroki zabezpieczające przed zagrożeniami (np. w postaci prostych czujników poziomu, ciśnienia, temperatury, blokujących niebezpieczne sterowania w razie awarii elektroniki).

    0
  • #13 17 Lis 2008 09:00
    Dr_DEAD
    Poziom 28  

    Czyli wyłączenie WatchDoga jest na takim samym poziomie bezpieczeństwa jakie zapewnia sam WatchDog, bo zawsze można wyobrazić sobie takie działanie programu że WatchDoga jest kasowany a jednak program nie działa zgodnie z naszym zamiarem.

    0
  • #14 17 Lis 2008 09:10
    marek_Łódź
    Poziom 36  

    Dr_DEAD napisał:
    Czyli wyłączenie WatchDoga jest na takim samym poziomie bezpieczeństwa jakie zapewnia sam WatchDog, bo zawsze można wyobrazić sobie takie działanie programu że WatchDoga jest kasowany a jednak program nie działa zgodnie z naszym zamiarem.
    Jak dla mnie prawdopodobieństwo tego, że program wpadnie w pętlę, w której będzie w sposób nieuprawniony resetował zegar WD jest mniejsze od tego, że watchdog zostanie zatrzymany przez zakłócenie (chyba, że ktoś źle napisał program i watchdog jest np. zerowany w przerwaniu zegara), ale skoro z Twoich oszacowań tak Ci wychodzi spierać się nie będę. Tak, jak napisałem mówimy o zjawiskach mało prawdopodobnych, ale nie niemożliwych, dlatego najlepszym rozwiązaniem jest zdublowanie sterownika cyfrowego prostym układem automatycznego zatrzymania awaryjnego.

    Dr_DEAD napisał:
    ...to raczej małoprawdopodobne aby Flash się przypadkowo nadpisał,
    To ma być pewność? ;)

    Jeśli ktoś uważa, że watchdog procesora NIE MOŻE zostać zatrzymany na skutek zakłócenia, niech to napisze wprost, bo póki co się czaicie ;)

    0
  • #15 17 Lis 2008 10:45
    Dr_DEAD
    Poziom 28  

    marek_Łódź napisał:

    Dr_DEAD napisał:
    ...to raczej małoprawdopodobne aby Flash się przypadkowo nadpisał,
    To ma być pewność? ;)

    Jeśli ktoś uważa, że watchdog procesora NIE MOŻE zostać zatrzymany na skutek zakłócenia, niech to napisze wprost, bo póki co się czaicie ;)

    Nie wiem do czego dążysz ale ogólnie WatchDog jest marnym zabezpieczeniem. Jeżeli rozważamy możliwość uszkodzenie Flasha, czy zmianę wartości komórki RAM'u to żaden WatchDog nie zapewni bezpieczeństwa.

    0
  • #16 17 Lis 2008 11:07
    autoservice
    Poziom 20  

    ...na flash'a jest taki sposób, że można przy uruchamianiu lub co jakiś czas policzyć CRC pamięci programu.
    Pzdr.

    0
  • #17 17 Lis 2008 14:56
    krzemowy
    Poziom 19  

    Kiedyś dawno dawno temu w ramach relaksu dłubałem sobie układ zapłonowy na 80C552 i zdarzało się że na skutek zakłóceń procek zawieszał się tak permanentnie że nawet watchdog nie dawał rady ;) Trzeba było przyciskiem resetować. Natomiast obecnie mam coś podobnego zrobione na ATMega128, watchdoga w ogóle nie włączałem i problem zawieszeń w ogóle nie występuje - ot co może zdziałać dobrze zrobiona płytka i obudowa.

    0
  • #18 17 Lis 2008 15:32
    marek_Łódź
    Poziom 36  

    Dr_DEAD napisał:
    Nie wiem do czego dążysz...
    Przeczytaj tytuł wątku. Dla mnie pytanie brzmi czy wewnętrzny watchdog procesora może się zawiesić, a odpowiedź brzmi TAK. Jeśli znasz inną odpowiedź, to napisz.

    autoservice napisał:
    ...na flash'a jest taki sposób, że można przy uruchamianiu lub co jakiś czas policzyć CRC pamięci programu.
    Pzdr.
    Gorzej jak się "rozflasi" procedura liczenia CRC ;)

    0
  • #19 17 Lis 2008 17:48
    Dr_DEAD
    Poziom 28  

    marek_Łódź napisał:
    Dr_DEAD napisał:
    Nie wiem do czego dążysz...
    Przeczytaj tytuł wątku. Dla mnie pytanie brzmi czy wewnętrzny watchdog procesora może się zawiesić, a odpowiedź brzmi TAK. Jeśli znasz inną odpowiedź, to napisz.

    A dla mnie pytanie brzmi: Czy jest sens stosować zewnętrzny watchdog jak mamy do dyspozycji wewnętrzny. I odpowiedz wg mnie brzmi NIE.

    PS. Wg fizyki kwantowej możliwe jest zamarznięcie jeźiora w środku lata, wystarczy tylko aby wszystkie elektrony w atomach przyjeły jendocześnie ten sam poziom energetyczny (czy orbite, nie pamiętam już..)

    0
  • #20 17 Lis 2008 18:14
    Freddie Chopin
    Specjalista - Mikrokontrolery

    marek_Łódź napisał:
    Gorzej jak się "rozflasi" procedura liczenia CRC ;)

    widze ze dla ciebie prawdopodobne jest, ze uszkodzi sie akurat tak, ze bedzie cos tam liczyc i nawet zwroci wynik wskazujacy na to, ze flash jest poprawny... no tak, prawdopodobienstwo jest... bezsensu...

    4\/3!!

    0
  • #21 17 Lis 2008 18:20
    BoskiDialer
    Poziom 34  

    Watchdog powinien być od zapobiegania zablokowania się kodu w jakiejś pętli czy coś ("kod nie do końca przetestowany") - ewentualnie do zapobiegania wyjątkowym splotom okoliczności.

    Jeśli do układu dochodzą wszelkie możliwe zakłócenia i chcemy z nimi walczyć za pomocą watchdog'a - nie tędy droga. Najpierw zaczął bym myśleć nad filtrowaniem zasilania, odpowiednimi filtrami na wyprowadzeniach z płytki, ekranowaniem płytki, prowadzeniem dużej liczby masy na płytce, znów filtrowaniem zasilania, izolowaniem bloków, zamknięciem całości w metalowej obudowie etc etc.. Polepszenie warunków pracy układu nie zawsze musi być skomplikowane.

    Co do pierwszego postu: jeśli ma być zapewnione duże bezpieczeństwo, to dobudował bym całkowicie izolowany układ, który monitorował by warunki pracy i wyłączał np piec, jeśli by nastąpiło przekroczenie granicy bezpiecznej pracy.

    0
  • #22 19 Lis 2008 13:31
    marek_Łódź
    Poziom 36  

    Freddie Chopin napisał:
    marek_Łódź napisał:
    Gorzej jak się "rozflasi" procedura liczenia CRC ;)

    widze ze dla ciebie prawdopodobne jest, ze uszkodzi sie akurat tak, ze bedzie cos tam liczyc i nawet zwroci wynik wskazujacy na to, ze flash jest poprawny... no tak, prawdopodobienstwo jest... bezsensu...
    Widzę, że niektórzy czytają białe na białym, można i tak.

    Ponieważ nadal co poniektórzy udają, że nie rozumieją o czym rozmawiamy wyjaśniam. Jeśli chodzi o niezawodność funkcjonowania watchdoga, to mamy następujące poziomy bezpieczeństwa (po kolei od najgorszego do najlepszego):

    1. Brak watchdoga
    2. Watchdog wbudowany procesora, blokowany/odblokowany flagą RAM
    3. Watchdog wbudowany procesora, blokowany/odblokowany flagą nieulotną (FUSEBIT)
    4. Watchdog zewnętrzny, bez stanów martwych (prosty licznik cykliczny, generator)

    Wszystko.

    BoskiDialer napisał:
    Jeśli do układu dochodzą wszelkie możliwe zakłócenia i chcemy z nimi walczyć za pomocą watchdog'a - nie tędy droga.
    A jeśli układ został odkłócony na wszystkie możliwe sposoby, a mimo wszystko coś go zawiesi, to chyba dobrze, że zanim zadziałają inne systemy bezpieczeństwa, watchdog spróbuje zresetować procesor i przy pomocy procedury awaryjnej wyprowadzić na prostą. Chyba nie sugerujesz, że watchdoga nie należy używać do restartu po zakłóceniu?

    0
  • #23 19 Lis 2008 14:54
    BoskiDialer
    Poziom 34  

    marek_Łódź: Bardziej chodziło mi o to, aby nie traktować watchdog'a jako głównej, jedynej metody ochrony przed zakłóceniami. Owszem zawsze można go załączyć żeby zabezpieczyć się przed zawieszeniem procesora, ale należy pamiętać, że oprócz niwelowania skutków powinno się również niwelować przyczyny.

    0