-
1. Data: 2009-02-02 21:20:51
Temat: Dobre reguly programowania - WDT
Od: "roxy" <k...@o...pl>
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.
-
2. Data: 2009-02-02 21:42:16
Temat: Re: Dobre reguly programowania - WDT
Od: Mario <l...@p...onet.pl>
roxy pisze:
> 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
-
3. Data: 2009-02-02 22:00:10
Temat: Re: Dobre reguly programowania - WDT
Od: "entroper" <e...@C...spamerom.poczta.onet.pl>
Użytkownik "roxy" <k...@o...pl> napisał w wiadomości
news:gm7o3n$281$1@inews.gazeta.pl...
> 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.
-
4. Data: 2009-02-03 11:01:27
Temat: Re: Dobre reguly programowania - WDT
Od: Marek Lewandowski <l...@p...onet.pl>
On Feb 2, 10:20 pm, "roxy" <k...@o...pl> wrote:
> 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