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

Watchdog, czy dobrze interpretuje jego znaczenie ?

tomson5 11 Lut 2010 21:55 2233 6
REKLAMA
  • #1 7680590
    tomson5
    Poziom 16  
    Witam
    Chciałbym wreszcie zacząć używać watchdog`a w swoich programach, ale
    do tej pory miałem problemy ze zrozumieniem go (może nadal mam)
    Proszę na podstawie poniższego pseudokodu odpowiedzieć czy prawidłowo jest umieszczony w kodzie ??

    
    $noramclear                   'dyrektywa zapobiegająca wyzerowaniu zmiennych uzytych w programie
    Config Watchdog = 2048        'konfiguracja przerwania co ok. 2sek.
    Start Watchdog
    Dim A As Byte                 ' jakaś tam zmienna
    
    Do
    'tutaj umieszczamy nasz
    'program który nie może
    'trwać dłużej w cyklu
    'niż 2 sekundy
    'Jeżeli w pętli głównej znajduje się odwołanie do podprogramu
    'w którym jest kolejna petla to należy tam również
    'umieścić instrukcję reset watchdog
    Reset Watchdog                'resetujemy watchdoga aby nie nastąpił reset procesora
    Loop
    
    
    Podprogram:
    Do
    'tutaj nastąpił skok z pętli głównej
    'i będzie trwał aż zmienna A = 10
    'jeżeli może to potrwać dłużej niż 2 sekundy
    'to należy umieścić  instrukcję watchdog
    Reset Watchdog
    
    Loop Until A = 10
    
  • REKLAMA
  • #2 7680735
    marco47
    Poziom 41  
    Kolego nie wiem po co zakładasz nowe tematy i zadajesz takie podstawowe pytania .
    Przecież wystarczy dokładnie przeczytać helpa do Bascom'a a później przetestować na układzie próbnym . Od tego są układy ( płyty ) testowe na których testuję się kody programów które piszemy dla powstających urządzeń.
  • REKLAMA
  • #3 7681453
    adambehnke
    Poziom 24  
    marco47 i ja także miałem problem ze zrozumieniem zasady działania watchdog-a.
    Jest to jednak banalnie proste. Przykład jaki autor przedstawił dobrze oddaje zasadę działania.
    Reasumując , chodzi o to aby na bieżąco resetować watchdoga aby nie doszło do przepełnienia. Chodzi o to że jeżeli program w jakimś momencie się zatnie (zawiesi) to watchdog zadba o restart. I to wszystko. Proste,praktyczne i skuteczne.
  • REKLAMA
  • #4 7681591
    tomson5
    Poziom 16  
    Witam
    W pętli głównej to zrozumiałem to bez zadawania pytań, natomiast miałem wątpliwości co do podprogramów i pętli dodatkowych.
    Tego nie ma w Helpie ani w książkach (przynajmniej w tych które ja mam)

    Dzięki za odpowiedź, mam nadzieję że temat w przyszłości pomoże innym.
  • #5 7681966
    adambehnke
    Poziom 24  
    Należy resetować watchdoga w takich miejscach w programie gdzie wykonywanie programu zajmuje więcej czasu. Nie ma tu znaczenia czy są to pętle,sub-y itd. Po prostu watchdoga należy resetować tak często aby się nie przepełnił i nie dokonał restartu.
  • REKLAMA
  • #6 7682108
    tmf
    VIP Zasłużony dla elektroda
    Wstawianie WDR gdzie popadnie to nie najlepszy pomysl. Najlepiej resetowac WD w jednym miejscu, petla glowna programu jest ok. Czas WD powinien byc tak dobrany, aby najdluzsza procedura jeszcze nie powodowala jego resetu. Jesli WDR umiesci sie wszedzie to jest spora szansa na stworzenie sie jakiejs patologicznej petli, ktora jednak bedzie resetowac WD i cala koncepcje szlag trafia.
  • #7 7682285
    adambehnke
    Poziom 24  
    Bardzo możliwe. Ja jednak wstawiam WDR w takich miejscach w których program wykonuje się najdłużej (tak dla pewności) . Oczywiście pętla główna jest bezsprzecznie najlepszym miejscem ale ja akurat robię to w taki sposób i nigdy nie miałem problemów .
REKLAMA