Sprawozdanie WDT


Wydział Informatyki

Katedra Systemów Czasu Rzeczywistego

Laboratorium Architektury Komputerów

Data: piątek, 16:00

17.10.2008

Sprawozdanie z projektu nr. 2

Skład grupy:

Łukasz Jacewicz

Michał Jurczuk

Prowadzący:

dr inż. Mirosław Omieljanowicz

Ocena:

Cel projektu:

Prezentacja dla układu MSP430F149, zamontowanego na płytce rozwojowej EasyWeb2, działania Watchdog Timera (w skrócie WDT) w trybie `watchdog mode'.

Wiadomości teoretyczne:

Watchdog timer w skrócie WDT w wolnym tłumaczeniu oznacza czuwający pies. Jego zadaniem jest czuwanie nad prawidłowym działaniem programu. Eliminuje on wszelkie zawieszenia programu przez restart urządzenia. WDT jest szczególnie przydatny gdy urządzenie narażone jest na działanie czynników atmosferycznych. W takim przypadku z powodu temperatury lub jakichś uszkodzeń mechanicznych, gdy program zostanie zawieszony WDT automatycznie dokona restartu.

W mikrokontrolerach z rodziny MSP430 standardowo wbudowany jest układ WDT. Posiada on dwa tryby pracy watchdog mode, który w przypadku zawieszenia programu dokona resetu, oraz interval mode służący do odliczania odstępów czasu (po upływie określonego czasu generuje przerwanie).

Za kontrolę WDT odpowiada 16 bitowy rejestr WDTCTL. Dostęp do rejestru chroniony jest hasłem, więc gdy będziemy chcieli zmienić zawartość rejestrów, najpierw będziemy zmuszeni wpisać hasło pod adres 15-8 bitu rejestru WDTCTL, w przedziwnym wypadku nastąpi restart urządzenia PUC.

Szczegółowy opis WDTCTL:

WDTPW znajduje się w przestrzeni od 15 do 8 bitu. By móc modyfikować zawartość rejestrów, to właśnie tutaj musimy wpisać hasło.

WDTHOLD (Bit 7) Wpisanie wartości 0 włącza układ (domyślnie ustawione na 0), zaś 1 wyłącza. Jeżeli chcemy zaoszczędzić na poborze prądu powinniśmy go wyłączyć.

WDTNMIES (Bit 6) Określa on rodzaj zbocza przy którym następuje przerwanie NMI (tylko przy ustawionym WDTNM na wartość 1). Bit 0 oznacza NMI przy rosnącym zboczu, zaś 1 przy opadającym.

WDTNMI (Bit 5) Określa funkcję jaką pełni pin RST/NMI i w przypadku 0 oznacza funkcje resetu, zaś 1 funkcje NMI.

WDTTMSEL (Bit 4) Określa tryb pracy WDT i 0 oznacza tryb watchdog, czyli będzie czuwać nad prawidłowym działaniem programu, a 1 tryb służący do mierzenia odcinków czasu.

WDTCNTCL (Bit 3) Gdy ustawimy ten bit na 1 zostanie z zerowana wartość zliczana przez watchdog timer'a, Przy wartości bitu ustawionej na 0 nic się nie dzieje.

WDTSSEL (Bit 2) Wybiera rodzaj zegara, 0 wybiera SMCLK, zaś 1 zegar ACLK.

WDTISx znajduje się na dwóch bitach 0 oraz 1. Bity te oznaczają czas po którym nastąpi ustawienie flagi WDTIFG i/lub zostanie wygenerowany PUC.

W rejestrze IFG1 na bicie 0 znajduje się WDTIFG i oznacza watchdog timer interrupt flag. W trybie watchdog bit ten zostaje ustawiony po restarcie systemu spowodowanym przez WDT. Wartość ta pozostaje ustawiona, aż do momentu wyzerowania przez programistę. W przypadku interval mode bit ten jest automatycznie resetowany po zakończeniu procedury obsługi przerwania, lecz może być również zerowany przez programistę.

W celu przedstawienia programowego restartowania układu przez WDT używamy diody statusu (zgaszona mówi o restarcie układu przez WDT). Normalna praca programu jest sygnalizowana miganiem diody połączonej równolegle z przekaźnikiem 1.

Kod programu:

#include "io430.h"

int main( void )

{

int i;

P1DIR |= BIT5; // konfigurowanie linii P1.5 (REL1) jako wyjście

P2DIR |= BIT1; // konfigurowanie linii P2.1 (dioda statusu) jako wyjście

P4DIR &= ~BIT1; // konfigurowanie linii P4.4 (przycisk B1) jako wejście

WDTCTL = WDTPW + WDTCNTCL; // zerowanie wewnętrznego licznika WDT (WDTCNT)

if (WDTIFG & IFG1) // sprawdzanie czy została ustawiona flaga WDTIFG w rejestrze IFG1

// podczas restartu układu przez WDT flaga WDTIFG jest automatycznie ustawiana

{ // flaga WDTIFG była ustawiona

IFG1 &= ~WDTIFG; // wyzerowanie flagi WDTIFG

P2OUT |= BIT1; // zgaszenie diody statusu (P2.1)

}

else // flaga WDTIFG nie była ustawiana

P2OUT &= ~BIT1; // zapalenie diody statusu (P2.1)

while(1)

{

if ((P4IN & BIT4) == 0) // sprawdzanie czy został naciśnięty klawisz B1 (P4.4)

{ // przycisk został naciśnięty

for(;;) ; // nieskończona pętla, powodująca zawieszenie programu i w konsekwencji restart układu

}

else // przycisk nie został przyciśnięty

{

if ((P1IN & BIT5) == 0) // sprawdzanie czy dioda przyłączona równolegle z przekaźnikiem 1 jest wyłączona

P1OUT |= BIT5; // zapalenie diody przyłączonej równolegle z przekaźnikiem 1

else

P1OUT &= ~BIT5; // zgaszenie diody przyłączonej równolegle z przekaźnikiem 1

WDTCTL = WDTPW + WDTCNTCL; // zerowanie wewnętrznego licznika WDT, aby nie nastąpił restart układu

for (i=0; i<4000; ++i); // pętla pozwalająca obserwować efekt migania diody przyłączonej równolegle z przekaźnikiem 1

}

}

}



Wyszukiwarka

Podobne podstrony:
2 definicje i sprawozdawczośćid 19489 ppt
PROCES PLANOWANIA BADANIA SPRAWOZDAN FINANSOWYC H
W 11 Sprawozdania
Wymogi, cechy i zadania sprawozdawczośći finansowej
Analiza sprawozdan finansowych w BGZ SA
W3 Sprawozdawczosc
1 Sprawozdanie techniczne
Karta sprawozdania cw 10
eksploracja lab03, Lista sprawozdaniowych bazy danych
2 sprawozdanie szczawianyid 208 Nieznany (2)
Fragmenty przykładowych sprawozdań
Lab 6 PMI Hartownosc Sprawozdan Nieznany
Mikrokontrolery Grodzki Sprawoz Nieznany
biochemia sprawozdanie O (1)
Chemia fizyczna sprawozdanie (6 1) id 112219
201 sprawozdanie finansoweid 26953
Czarne orly sprawozdanie2

więcej podobnych podstron