93 (135)

93 (135)




Mikroprocesorowa Ośla łączka




segmentów a tych dwóch wyświetlaczy. Podczas odmierzania czasu na wyjście świecą segmenty b, po naruszeniu linii L1 w czasie na wejście świecą segmenty f. Włączenie syreny alarmowej zaświeca segmenty g - poziome kreski i pozostają one zaświecone na stałe jako pamięć alarmu. Znajdź polecenia, które kasują świecenie tych segmentów - zwróć uwagę, że wyłączenie alarmu ze stanu czuwania do spoczynku nie gasi ich. Zostaną wygaszone przez naciśnięcie przycisku SI na płytce, ale tylko w stanie spoczynku (S2- rozwarty).

Zwróć uwagę, że wykorzystujemy tu watchdog w jego klasycznej roli. Jak wiesz, główną jego rolą jest przywrócenie poprawnej pracy procesora w przypadku, gdyby z jakichś powodów program, jak mówią niektórzy, „poszedł w krzaki”, czyli „wykrza-czył się”. Jeśli z powodu jakiejś usterki podczas pracy naszego programu licznik watch-doga nie zostanie wyzerowany przez dwie sekundy, nastąpi reset procesora. Zwróć uwagę, że po resecie do wszystkich bitów zmiennej Stan wpisujemy liczbę 0. Dzięki temu w razie zakłócenia w programie i po zadziałaniu watchdoga centralka automatycznie wejdzie w stan czuwania, a nie w stan spoczynku. Stracimy tylko ewentualną informację, czy wcześniej wystąpił alarm, przechowywaną w komórce Portb.6.

W naszej centralce watchdog wprawdzie powinien czuwać, ale my tego nie jesteśmy w stanie sprawdzić, bo nie potrafimy zaburzyć pracy programu. Mógłbyś w tym celu obniżać napięcie zasilania poniżej 2,7V. Jeśli chcesz - spróbuj. Prawdopodobnie zdziwisz się, przy jak niskim napięciu procesor jeszcze pracuje. A jeśli chcesz sprawdzić, że nasz wierny pies rzeczywiście czuwa, zmodyfikuj początek procedury obsługi przerwania (jedną linijkę) programu według rysunku 114 (COUc.bas). Wtedy naciśnięcie przycisku SI na płytce przez ponad 2 sekundy wymusi reakcję watchdoga i reset procesora.

Oczywiście, jeśliby taka centralka miała znaleźć zastosowanie praktyczne, należałoby ją znacznie zmienić, zarówno jeśli chodzi o sprzęt, jak i program. Tym niemniej mamy kolejny powód do zadowolenia - rozwiązaliśmy kolejne wzięte z życia zadanie i wykorzystaliśmy watchdog. Nadeszła pora na


zablokowanie pracy i wyzerowanie obwodów procesora (wewnętrzny reset). Sygnał z punktu X jest też doprowadzony na wejście zerujące licznika binarnego. Po zaniku stanu wysokiego w punkcie, ^ czyli po zaniku sygnału wymuszającego, procesor ® jeszcze nie zaczyna pracy - stan przerzutnika RS Z '

NM

T,


'    C021b Prosta centralka alarmowa - kompletny program

'dwie linie dozorowe LI -zwłoczna - PD.5, L2-natychmiastowa - PD.6 'ukryty przełącznik sterujący ■ PD 1 (S2)

'przycisk SI służy do kasowania wskazania alarmu na wyświetlaczu PD.2 i Q2 - wyjście do syreny alarmowe]

Dim Stan As By te '( bajt stanu centralki Stan 7 - Bit Niewykorzystany Stan.6 - Flaga Czasu Alarmu

Stan.S - Bit Pomocniczy Potrzebny Przy Włączaniu Czuwania

Stan 4 - Stan Klucza S2(zał / Wyłącz Alarm) 1 -spoczynek 0 -praca

Stan.3 - L2 - Linia Natychmiastowa

Stan.2 - Flaga Czasu Na Wyjście

Stan 1 - Flaga Czasu Na Wejście

Stan 0 - LI - Linia Z Opóźnieniem(zwłoczna)    ')

Dim Czasalarmu As Byte Czaswyjscia As Byte Czaswejscia As Byte Enable Interrupts Enable Timerl Config Timor1 1 Timer Prescale * 64 Config Watchdog “ 2048 Start Watchdog    'reset po około 2 sekundach

On Timerl Co500ms Config Portb * Output    ' portB - wyjście

Config Portd “ ^BO000100    'PD 2 — wyjście brzęczyka, reszta - wejścia

Portd - 255    'wszystkie wejścia podciągnięte PD 2*1 - syrena wyłączona

Portb ■ 127    'wygasza wyświetlacze ale kropki mogą świecić, bo PB 6*0

Stan * 0    'po resecie stan czuwania (l) - ze względu na watchdoga

Const Czasal ■ 10    240 'Czas alarmu liczba<255 240*0 5s * 120s - 2 minuty

Const Czaswy * 8    '50    'Czas na wyjście liczba<255 50*0.5s - 25 sekund

Const Czaswe * 6    '30    'Czas na wyłączenie alarmu liczba<255 30*0.5s * 15s


Do Loop End


główny program, jak zwykle


CoSOOms    'procedura obsługi przerwania od Timeral

Timerl * 34286    'co daje 31250*16mikrosekund, czyli O.Ssekundy

Reset Watchdog    'głaszczemy psa żeby się nie złościł

'najpierw sprawdzamy stan linii LI, L2 oraz wejść SI. S2

Stan 4    *    Pind    1    'przepisz    stan    klucza

Stan 3    *    Pind    6    'przepisz    stan    L2

Stan 0    *    Pind    5    'przepisz    stan    LI

'tu mamy trzy liczniki czasu

If Stan 6 * 1 Then    'gdy flaga alarmu ustawiona

Portb 6*0    'włącz segmenty g wyświetlaczy

Decr Czasalarmu    'zmniejsz zawartość licznika

If Czasąlarmu * 255 Then Stan 6    0    zakończ odliczanie czasu

Elsę    ‘gdy flaga wyzerowana, czyli w spoczynku

Czasalarmu * Czasal    'przygotuj do następnego cyklu

End If

If Stan 2*1 Then gdy flaga czasu na wyjście ustawiona Portb 1*0    'włącz segmenty b wyświetlaczy

Decr Czaswyjscia zmniejsz zawartość licznika

If Czaswyjscia * 255 Then Stan 2*0    'zakończ odliczanie czasu

Elsę    'gdy flaga wyzerowana czyli w spoczynku

Czaswyjscia "Czaswy    'przygotuj do następnego cyklu

Portb 1 * 1    'oraz wygaś segmenty b

End If

If Stan 1-1 Then    'gdy flaga czasu na wejście ustawiona

Portb 5*0    'włącz segmenty f wyświetlaczy

Decr Czaswejscia    'zmniejsz zawartość licznika

If Czaswejscia * 255 Then

Stan 1*0    'zakończ odliczanie czasu na wejście

Stan 6*1    włącz alarm

End If

Elsę    'gdy flaga wyzerowana, czyli w spoczynku

Czaswejscia * Czaswe    'przygotuj do następnego cyklu

Portb 5*1    'wygaś segmenty f - wskaźnik czasu na wejście

End If

'tu sprawdzamy stan centralki.

If Stan 4 * 1 Then 'gdy centralka wyłączona czyli klucz S2 - rozwarty Stan “ &B00110000    'oprócz wcześniej ustawionego bitu Stan.5 (S2)

' dodatkowo ustawiamy bit pomocniczy Stan.5, a resztę zerujemy If Pind 0*0 Then Portb " 127    'gasi segment g - kasuje pamięć alarmu

Elsę    'praca centralki klucz S2 - zwarty

If Stan 5*1 Then    ' jednorazowo po włączeniu czuwania

Stan 2*1 'zablokujemy linię zwłoczhą i odmierzymy czas na wyjście Stan 5*0 'jednorazowo więc wyzeruj bit pomocniczy •

End If

If Stan > 7 Then gdy pobudzona linia natychmiastowa L2 - zawsze włącz alarm Stan 6*1 zacznij odmierzać czas alarmu Elsę    'gdy L2 nie pobudzona, wtedy Stan-0 .7 i można

If Stan “ 1 Then Stan 1*1    'zacząć odmierzać czas na wejście

End If End If

Portb 0 * Stan 4    'segmenty a świadczą o włączeniu czuwanie centralki

Portd 2 * Not Stan 6    'ewentualnie włącz syrenę dołączoną do Q2

Return


tonst czaswe * b


ju czas na wyłączenie alarmu iiczoa<2bb 3U*u.bs * ibs


Do Loop End    'główny program, jak zwykle

CoSOOms    'procedura obsługi przerwania od Timeral

Timerl * 34286    'co daje 31250*16mikrosekund. czyli O.Ssekundy ^

If Pind 0 * 1 Then Reset Watchdog    'tylko gdy SI w spoczynku

'naciśnięcie SI przez ponad 2 sekundy wywołą reakcję watchdoga i reset procesora

'najpierw sprawdzamy stan linii LI L2 oraz wejść SI. S2

Qt-«rł A o Pi rvH 1    1    4»r-.i <*:'?    1/ 1 nr-.=*


Rys. 113.


Rys. 114.


nie zmienia się. Zaczyna pracę jedynie licznik binarny. Stan przerzutnika RS zmieni się dopiero wtedy, gdy licznik binarny zliczy odpowiednią liczbę impulsów (zależnie od stanu bitu FSTR) -wtedy stan wysoki na wejściu R wyzeruje prze-rzutnik i umożliwi rozpoczęcie pracy programu.

Tabela 2 pokazuje wartości kluczowych parametrów związanych z obwodami rese-tu przy napięciu zasilania 5V.

POR. Procedura zerowania po włączeniu


Tabela 2


1 Oznaczenie

Parametr

Min

l\p Max Jednostka 1

r

VPOT

Napięcie progowe POR przy włączaniu

1,0

1,4 1,8

V

NH

Napięcie progowe POR przy wyłączaniu

0,4

0,6 0,8

V

>

VRST

Napięcie progowe końcówki RESET

- 0,85VCC

V

Td

FSTR=0

11

16 21

ms

Td

FSTR=1

0,25

0,28 0,31

ms


zasilania, nazywana POR (power-on reset), zaczyna się, gdy napięcie zasilania wzrośnie powyżej pewnego progu. Według karty katalogowej to napięcie progowe, oznaczane V|>ot. wynosi typowo l,4V (l,0V...l,8V, zależnie od egzemplarza procesora). Dopiero po przekroczeniu tego napięcia zaczyna się właściwa procedura przygotowująca procesor do pracy. Zaczyna pracować zarówno oscylator RC watchdoga, jak też oscylator kwarcowy taktujący mikroprocesor. Procesor jednak jeszcze nie realizuje programu. Pracuje oscylator RC oraz dodatkowy licznik binarny zapewniający opóźnienie. Dopiero gdy w czasie Td licznik ten zliczy 16384 impulsów oscylatora RC, zaczyna się


36 Grudzień 2003 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
43680 Image37 (6) Mikroprocesorowa Ośla łączka Ml 191 ZmiennaTypuInteger = Funkcyjka (JakasZaiByte,
89 (141) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 programowe zerowanie liczni
90 (145) Mikroprocesorowa Ośla łączka R14 R13
91 (142) Mikroprocesorowa Ośla łączka Ml Reset Watchdog I to sq wszystkie kluczowe informacje, umożl
92 (141) Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka If Flaga * 1 Then gdy llaga usta
95 (133) Mikroprocesorowa Ośla łączka 95 wu na działanie poprzedniej wersji centralki? Po przeprowad
96 (126) Mikroprocesorowa Ośla łączka Config Portb = Output : Portb = 127 portB - wyjcecie; PB.7 =
97 (117) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 Ćwiczenie 23Wyświetlacz
98 (115) Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka •C023a Wyświetlacz LCD Cla Do Cl
99 (115) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 ’C023e Wszystkie typy zmi
Image33 (6) Mikroprocesorowa Ośla łączka Ml 187 SHIFTOUT Pdane , Pzegar Zmienna ,
edw6 str39 Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączkaĆwiczenie 17 Oszczędny zegar -
edw6 str40 Mikroprocesorowa Ośla łączka Ml zostanie wykonana tylko raz). Natomiast przy reakcji na
edw6 str45 Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka ■CQ17a prosty
edw6 str46 Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 riii«uixe

więcej podobnych podstron