logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przerwanie od watchdoga - jaki sens?

Marek_Gorecki 02 Sty 2012 22:33 2118 6
  • #1 10340430
    Marek_Gorecki
    Poziom 16  
    Witam;

    zastanawiam się jaki sens ma przerwanie od watchdoga. Czy po wystąpieniu tego przerwania mogę zrobić jakiś zapis np w eepromie (aby później znać przyczynę resetu) ?
    I jeszcze jedno, jeśli już owo przerwanie wystąpi to jak można będzie potem zresetować procesor? Czy będzie to możliwe?
  • #2 10340514
    Press
    Poziom 24  
    Źle rozumiesz kolego.
    Watchdog to taki "pies stróżujący".
    Musisz go co jakiś czas resetować w programie właśnie po to, żeby nie dopuścić do przerwania od niego.
    Jeśli już przerwanie wystąpi to resetuje ono uP.
    Sens tego jest taki, że kiedy napisany przez Ciebie program zawiesi się z jakiegoś powodu (pluskwa, zakłócenia itp) zadaniem watchdoga jest zresetowanie uP i rozpoczęcie programu od nowa.

    Co do tego skąd pochodziło przerwanie to wiele nie pomogę bo nie zagłębiałem się w ten temat, ale w uP Atmeta jest wektor w którym wystawiana jest flaga od przerwania które spowodowało reset uP

    Tak na marginesie przerwanie wydaje mi się, że Ty pojmujesz jako na przykład sygnał od TIMERa ze się przepełnił i możesz na to jakoś zareagować. Tymczasem z punktu widzenia uP na przykład sprzętowy RESET również jest przerwaniem z definicji obsługiwanym jako rozpoczęcie wykonywania programu od samego początku.

    Pozdro

    Radek
  • #3 10340560
    Marek_Gorecki
    Poziom 16  
    Sorki ale chyba nie rozumiesz kolego o co pytam.
    Ja rozumię jak działa watchdog.

    Tylko w normalnej pracy on po prostu resetuje procesor. A jak uruchomię przerwanie od watchdoga to mi nie zresetuje, lecz pójdzie w przerwanie. I to jest logiczne i często bardzo atrakcyjne, lecz jak zrobić aby potem po obsłużeniu tego przerwania procesor się jeszcze zresetował. Przecież często przyczyną zadziałania watchdoga jest jakaś kolizja której nie da sie inaczej rozładować aniżeli przez twardy reset.
  • #4 10340843
    M. S.
    Poziom 34  
    Marek_Gorecki napisał:

    Ja rozumię jak działa watchdog.


    Hmm.

    Konstruktorzy wychodząc naprzeciw najnowszym trendom w konstruowaniu mikrokontrolerów, wbudowali do procesorów AVR układ Watchdog.

    Jest to specjalny licznik, zliczający impulsy zegarowe 1MHz. Gdy nastąpi przepełnienie tego licznika, generowany jest sygnał RESET by wyzerować procesor.
    Do programisty zatem należy umieszczenie w programie rozkazów powodujących zerowanie tegoż licznika. Jest to jeden z elementów zabezpieczenia przed zapętleniem się programu lub błędami w jego działaniu.

    TYLE MÓWIĄ MĄDRZY TEGO ŚWIATA.

    W tej przypowiastce nikt nic nie mówi o przerwaniu od watchdog'a, a jedynie o sprzętowym liczniku, który, jak się przepełni, spowoduje reset uC. Watchdog nie powinien resetować uC podczas normalnego wykonania programu. Watchdog działa jeśli uC pójdzie w maliny.

    P. S. Czasem używam Watchdog'a do resetowania uC za pomocą przycisku służącego normalnie do innych celów. Oprogramowuję przycisk tak aby jego wciśnięcie zatrzymywało program. Normalne naciśnięcie wywołuje przypisaną funkcję, a dłuższe (zwykle 2s.) pozwala na przepełnienie się licznika Watchdog'a i reset. To taka ukryta funkcja serwisowa.


    Dzięki excray
    I ja się czegoś nowego dowiedziałem. Sprawa zatem jest wyjaśniona.
  • Pomocny post
    #5 10340866
    excray
    Poziom 41  
    Watchdog nie musi generować sygnału RESET. W AVRach sam wybierasz czy zgłoszenie od Watchdoga ma zresetować procka czy też tylko wywołać przerwanie od niego, bądź jedno i drugie w kolejności - przerwanie a przy wyjściu z niego reset.
    Przerwanie od watchdoga - jaki sens?
  • #6 10340940
    Marek_Gorecki
    Poziom 16  
    excray napisał:
    Watchdog nie musi generować sygnału RESET. W AVRach sam wybierasz czy zgłoszenie od Watchdoga ma zresetować procka czy też tylko wywołać przerwanie od niego, bądź jedno i drugie w kolejności - przerwanie a przy wyjściu z niego reset.
    Przerwanie od watchdoga - jaki sens?


    i o to mi chodziło. Czyli można zrobić i przerwanie i reset od razu.
    Wielkie "pomógł" kolego excray....
  • #7 10343323
    excray
    Poziom 41  
    Marek_Gorecki napisał:
    Czy po wystąpieniu tego przerwania mogę zrobić jakiś zapis np w eepromie (aby później znać przyczynę resetu) ?

    Jeszcze w jednej kwestii się odezwę. Mianowicie większość AVRów ma rejestr MCUSR lub jego odpowiednik gdzie można sprawdzić co było przyczyną ostatniego resetu. Dla tiny2313 mamy na przykład flagi:
    WDRF - reset od watchdoga
    BORF - reset od układu kontroli napięcia
    EXTRF - reset spowodowany stanem niskim na wejściu RESET
    PORF - reset "standardowy" spowodowany brakiem napięcia zasilania
REKLAMA