roxy
Guest
Mon Feb 02, 2009 10:20 pm
Witam.
Czy sa jakies reguly gdzie nalezy lub nie nalezy dokonywac resetu watchdog
timer'a?
Czy można dokonywac resetu WDT w funkcji obsl. przerwania (np. w funkcji
obsl przerwania timera)?
Wezmy Dla przykladu:
Pomiar temp jest dokonywany w funkcji obsl. przerwania od timera i w
zaleznosci od wyniku pomiaru zalaczana jest pompa oraz wyswietlenie wyniku
pomiaru na LCD .
W funkcji glownej jest zamieszczona tylko obsl. klawiatury.
Gdzie najlepiej resetowac w takim programie WDT.
Mario
Guest
Mon Feb 02, 2009 10:42 pm
roxy pisze:
Quote:
Witam.
Czy sa jakies reguly gdzie nalezy lub nie nalezy dokonywac resetu watchdog
timer'a?
Czy można dokonywac resetu WDT w funkcji obsl. przerwania (np. w funkcji
obsl przerwania timera)?
Wezmy Dla przykladu:
Pomiar temp jest dokonywany w funkcji obsl. przerwania od timera i w
zaleznosci od wyniku pomiaru zalaczana jest pompa oraz wyswietlenie wyniku
pomiaru na LCD .
W funkcji glownej jest zamieszczona tylko obsl. klawiatury.
Gdzie najlepiej resetowac w takim programie WDT.
Procek może utknąć w jakiejś pętli (np na skutek przestawienia jakiejś
wartości rejestru lub licznika rozkazów). Będzie z tego miejsca wyrywany
przerwaniem od timera ale nie będzie wracał do pętli głównej tylko do
tego miejsca. Lepiej w pętli głównej dać sprawdzanie flagi ustawianej
timerem i jeśli ustawiona to resetować WD. W ten sposób masz obsługę
cykliczną WD i wykrywanie jeśli procek uciekł z pętli głównej.
--
Pozdrawiam
MD
entroper
Guest
Mon Feb 02, 2009 11:00 pm
Użytkownik "roxy" <kicak@o2.pl> napisał w wiadomości
news:gm7o3n$281$1@inews.gazeta.pl...
Quote:
Czy sa jakies reguly gdzie nalezy lub nie nalezy dokonywac resetu watchdog
timer'a?
Czy można dokonywac resetu WDT w funkcji obsl. przerwania
właśnie przytoczyłeś regułę, gdzie nie należy :)
e.
Marek Lewandowski
Guest
Tue Feb 03, 2009 12:45 pm
On Feb 2, 10:20 pm, "roxy" <ki...@o2.pl> wrote:
Quote:
Wezmy Dla przykladu:
Pomiar temp jest dokonywany w funkcji obsl. przerwania od timera i w
zaleznosci od wyniku pomiaru zalaczana jest pompa oraz wyswietlenie wyniku
pomiaru na LCD .
W funkcji glownej jest zamieszczona tylko obsl. klawiatury.
Gdzie najlepiej resetowac w takim programie WDT.
W takich punktach, jak program powinien pracowac.
Przyklad:
Program czyta temp. w przerwaniu, a petla glowna sie kreci w kolko i
czeka na flage z przerwania. W przerwaniu resetujesz WDT, ale TYLKO
poki nie ma nic do roboty. W momencie, gdy ustawiasz flage
uruchomienia pompy PRZESTAJESZ zerowac WDT w przerwaniu, za to w
obsludze pompy jest wstawiony reset WDT. Jesli teraz procedura nie
zalapie, bo glowna petla programu poszla sie kochac, to WDT resetuje
cala zabawe.
Jesli w petli glownej przelatujesz obsluge klawiatury, to dodaj sobie
zmienna globalna KBD_nOK i zeruj ja przy kazdym sprawdzeniu
klawiatury. W przerwaniu timera ustawiaj na koncu te flage, a WDT
kasuj tylko, gdy na poczatku (nastepnego) wywolania timera KBD_nOK==0
(czyli w miedzyczasie klawiatura zostala obsluzona). Itd.
Ogolnie:
- przy watkach cyklicznie, ale asynchronicznie obslugiwanych wybierz
sobie jeden, ktory wywolywany jest zawsze i tam kasuj WDT, ale pod
warunkiem, ze wszystkie pozostale watki, ktore powinny byc wykonywane,
odhaczyly swoje indywidualne flagi, po czym ustawiaj im te flagi na
nowo.
- dla watkow wywolywanych acyklicznie i tez zdefiniuj flagi i rezygnuj
z cyklicznego kasowania WDT, dopoki sie te watki nie zakoncza,
natomiast WDT kasuj w nich samych.
No i na koniec: wszystko mozna spieprzyc.
--
Marek Lewandowski
ICQ#/GG#: ask per mail. mail: locust[X]poczta/onet/pl
my gallery:
http://www.pbase.com/mareklew
my kind-of-a-blog:
http://lockaphoto.stufftoread.com