edw6 str45

edw6 str45



Mikroprocesorowa Ośla łączka

Mikroprocesorowa Ośla łączka

■CQ17a prosty zegar

OSZCZĘDNY

Rys. 76

‘TU WSZYSTKIE DEKLARACJE l POLECENIA KONfIGURACJI, w tym konfiguracji liczników:

Config TimerO Tlmer

, Prescale = 64 zwiększanie TimerO co 16ms (64*0,2Sus)

Config Tlmerl Tlmer

Prescale = 64 'zwiększanie Timerl co 16ms (64*0,2Sus)

Enable Interrupts

'odblokowanie globalne systemu przerwań

Enable TimerO

'odblokowanie przerwania od TimeraO

Enable Tlmerl

odblokowanie przerwania od Timeral (przepełnienie licznika)

On TimerO Co4ms

■po przepełnieniu licznika 0 skocz do etykiety o nazwie Co4ms

On Tlmerl Cols Hosave

'po przepełnieniu licznika 1 skocz do etykiety o nazwie Cols

Do

'główny program

If Pina.O « 1 Then

‘jeżeli brak napięcia 3ieci

Disable TimerO

'zablokuj pracę licznika T/CO

Idle

‘i zaśnij, przechodząc do trybu IDLE

Elsę

'jeśli jest napięcie sieci

Enable TimerO

'uruchom T/CO potrzebny do wyświetlania cyfr

End If

Loop

'koniec pętli

End

'koniec programu głównego

Cols :

'co ł sekundę

... Tresc Procedury -

Zwiększanie Licznika Sekund

Return

'koniec obsługi przerwania od T/Cl

Co4ms:

'przerwanie co 4,09óms (bez skracania cyklu licznika T/CO)

... Tu Podprogram Ustawiania Czasu Jeśli SI Naciśnięty

następnie standardowo

... Co 4ms Sprawdzanie

I Korygowanie Stanu Liczników

. Zamiana Liczb Zwojkowych Na Bcd

... Wyświetlanie Kolej

no Po Jednej Cyfrze

Return

‘koniec obsługi przerwania od T/CO co 4,096ms

Tabela:

'do wyświećłaenia cyfr 0...9

Data 192 , 249 164

176 , 153 146 , 130 , 248 , 128 , 144

stan na końcówce PD.O

Rys. 77


:/

tu procesor nadal jest v trybie IDLE

dopiero po obsłużeniu kolejnego przerwania procesor powraca do


normalnej pracy


r znów przechodzi w tryb IDLE


Należy podkreślić, że wprowadzamy procesor w tryb oszczędnościowy zawsze w sposób programowy, natomiast „budzimy” go do normalnej pracy nie programowo, tylko w zupełnie inny sposób, bo przecież w obu tych trybach program nie jest realizowany. Ze stanu Idle procesor może zostać „obudzony” za pomocą jakiegokolwiek przerwania. Oznacza to, że praktycznie natychmiast następuje typowa procedura obsługi przerwania, a zaraz potem odbywa się kontynuacja bieżącego programu od rozkazu następnego po baskomowym poleceniu IDLE. Ilustruje to poniższy rysunek.


przebieg programu

II

ii

fi

dowolni® długi czas "drzemki"

procedura

obsługi

przerwania

"budzącego"

II

/    koniec powrót do programu

zgłoszenie    procedury    głównego począwszy

przerwania    obsługi    od rozkazu następnego

budzącego    przerwania    po poleceniu wprowa-

ze stanu IDLE    dzającym w stan IDLE


Wprawdzie nie rezygnujemy z tej pętli, ale teraz w trybie oszczędnościowym po każdym zgłoszeniu przerwania od licznika T/Cl będzie ona wykonywana tylko raz. Przycisk S1, a tym samym stan nóżki PD.O zadecyduje, czy zegar ma pracować normalnie, czy też przejść w tryb oszczędnościowy. Dlatego w pętli głównej dodajemy prościutką procedurę badania stanu końcówki PD.O. Jeśli program stwierdzi, że jest tam stan wysoki, po prostu zamiast „kręcić” pustą pętlę DO...LO-OP, wprowadzi procesor w tryb IDLE. Zwróć uwagę na to, że po wykryciu zaniku napięcia sieciowego nie tylko procesor wprowadzany jest w stan Idle, ale też wcześniej poleceniem Disable TimerO

wyłączany jest TimerO, który służy przede wszystkim do obsługi wyświetlacza. Ściślej biorąc, licznik ten pracuje nadal, tylko zablokowane zostają przerwania od niego, pojawiające się co 4,096ms. Czynne (i obsługiwane) pozostają natomiast przerwania od T/Cl, pojawiające się co sekundę i przerwania te powodują odmierzanie czasu - zwiększanie licznika sekund.

Jeśli po jakimś czasie na końcówce PD.O znów pojawi się stan niski (powrót napięcia sieci), najpóźniej po sekundzie (po najbliższej obsłudze przerwania od T/Cl) zostaną odblokowane przerwania od licznika T/CO

uiiii

normalny prze-bieg programu ,

wyłączenie Yny? \ / przerwań    \/

od T/CO    co sekundę

obsługiwane są tylko przerwania od TC/1 a potem pro-

i zegar zacznie znów normalnie wyświetlać czas. Rysunek 77 pokazuje w pewnym uproszczeniu przebieg programu w okresie (symulowanego) zaniku napięcia zasilania.

Zwróć uwagę, że przeróbka ma polegać na drobnej modyfikacji wcześniejszego programu COlób.bas, konkretnie na dodaniu w pętli głównej procedury badania stanu PD.O. Zastanów się, czy taki program zrealizuje postawione zadanie? Czy widzisz tu jakieś pułapki?

... dobrze się zastanów ...

Jeśli starannie analizowałeś poprzednie ćwiczenia, zapewne przypomniałeś sobie, że już w ćwiczeniu 13, w programie C013b.bas pokazanym na rysunku 63 przerwanie przychodzące co sekundę tylko skraca cykl licznika i zwiększa stan licznika sekund. Natomiast sprawdzanie i korygowanie liczników dokonywane jest co 4,096ms. Takie rozwiązanie jest konieczne, by prawidłowo zmieniać stany

W przypadku polecenia POWERDOWN zazwyczaj jest inaczej - procesor zostaje „obudzony do życia” przez reset od watchdoga, co oczywiście powoduje rozpoczęcie działania programu od samego początku z wszelkimi konsekwencjami tego faktu (m.in. opóźnienie o kilkanaście milisekund i ustawienie w tym czasie końcówek portów w stan trzeci, co zostanie szczegółowo omówione w części poświeconej obwodom rese-tu w jednym z następnych numerów). Warto pamiętać, że istnieje możliwość wyjścia z trybu Power Down za pomocą zewnętrznego przerwania (INTO lub INT1), obowiązkowo przy wyzwalaniu poziomem, a nie zboczem. 1 ten poziom niski na końcówce wejściowej musi utrzymywać się przez co najmniej kilkanaście milisekund - bezpiecznie jest przyjąć minimalny czas równy 25ms. KjJ W Technikaliach znajdziesz wyjaśnienie, dlacze-1 go tylko przerwanie zewnętrzne wyzwalane poziomem może wyprowadzić procesor ze stanu Power Down i dlaczego impuls budzący musi trwać odpowiednio długo.


CONFIG INTx = reakcja

MCU Control Register -

The MCU Control Register contains control bits for generał MCU functions. J

MCUCR

Bit

7 6

5

4

3

2 1 0

S35(555)

- i -

1 SE

SM

ISC11

ISC10 | ISC01 | ISC00 | MCUCR

Read/Write

R R

R/W

R/W

R/W

R/W R/W R/W

Initial value

0 0

0

0

0

0 0 0


aby zagwarantować niezawodne zgłoszenie przerwania, impuls wejściowy musi więc trwać dłu

żej niż jeden takt zegara kwarcowego (w naszym przypadku powyżej 0,25ps). Ilustruje to rysunek I. Przy wyzwalaniu poziomem sytuacja jest inna, ale generalnie też należy zadbać o to. by czas zgłaszania przerwania nie był zbyt krótki.

Przy okazji chcę Ci zwrócić uwagę na kolejny dość istotny szczegół. Na rysunku J znajdziesz

skan fragmentu oryginalnej karty katalogowej. Jak z niego wynika, gwarantowanym stanem początkowym po zresetowaniu procesora (initial value) wszystkich bitów rejestru MCUCR jest stan niski. Oczywiście polecenia konfiguracji przerwań ze- ^ wnętrznych

Elektronika dla Wszystkich Czerwiec 2003 45


Wyszukiwarka

Podobne podstrony:
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 str46 Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 riii«uixe
edw6 str47 Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka On TimerO Co4ms On Timerl Cols
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
93 (135) Mikroprocesorowa Ośla łączka segmentów a tych dwóch wyświetlaczy. Podczas odmierzania czasu
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 ,

więcej podobnych podstron