Mikroprocesorowa Ośla łączka M1 65
Ćwiczenie 18 Zegar z budzikiem
Przyszła pora na zrealizowanie prawdziwego prawdziwego budzika łączącego materiał skanie przycisków nie spowodowało przesta-
budzika. W przypadku budzika należy za- z ćwiczeń 17 i 18, zmodyfikujesz schemat, wienia zegara.
dbać o to, by informacje o porze budzenia nie zapewne dodasz więcej przycisków, co też Może taka obsługa wyda Ci się dziwna.
zanikły wskutek przerwy w dostawie prądu. będzie się wiązać z istotną zmianą programu. I słusznie, niemniej głównym ograniczeniem
Można to zrealizować na wiele sposobów, Ale na razie wykonajmy prosty budzik na na- jest obecność na płytce testowej tylko dwóch
w tym z wykorzystaniem pamięci nieulotnej szej płytce testowej. przycisków. Poza tym, przedstawiona dalej
EEPROM czy z zastosowaniem specjalizo- Na początek musimy zdecydować, jak bę- propozycja nie jest jedynym słusznym roz-
wanych układów scalonych, tzw. RTC (Real dzie wyglądać użytkowanie naszego wyna- wiązaniem i absolutnie nie pretenduje do
Time Clock), czyli zegarów czasu rzeczywi- lazku. Znów możliwości jest wiele. Naszym miana najlepszej. Dlatego mam dla Ciebie
stego. Do takich pomysłów jeszcze wrócimy. celem niewątpliwie jest zaprojektowanie bu- propozycję: masz już tyle wiedzy i doświad-
Niemniej praktyczny budzik można równie dzika o możliwie prostej i łatwej obsłudze. czenia, że z powodzeniem możesz zaplano-
dobrze zrealizować na samym procesorze, Zastanów się, jak należałoby ustawiać bieżą- wać i zrealizować wszystko o własnych si-
bez udziału pamięci EEPROM, a czas budze- cy czas (co będziemy wykonywać rzadko), łach, wykorzystując to, co masz na płytce te-
nia można przechowywać w zwyczajnych jak ustawiać czas budzenia (co będziemy wy- stowej. Lojalnie przyznaję, iż nie jest to za-
zmiennych w pamięci RAM wystarczy zasto- konywać częściej), jak rozróżnić, czy usta- danie łatwe, na pewno natkniesz się na pu-
sować baterię rezerwową, która zapobiegnie wiamy czas, czy porę budzenia, a przede łapki i problemy. Będziesz wielokrotnie mo-
utracie danych w czasie zaniku napięcia sieci. wszystkim jak wieczorem włączyć funkcję dyfikował program. Ale jeśli uda Ci się zre-
Spróbujmy zrealizować taki budzik. Naj- budzenia, jak to będzie sygnalizowane na alizować budzik, doświadczysz nieprawdo-
pierw przemyśl problem samodzielnie. Do wyświetlaczu i jak wyłączyć akustyczny sy- podobnej radości. Nawet jeśli taki budzik
tej pory sporo zajmowaliśmy się zegarami gnał dzwonka po przebudzeniu? nie do końca Cię zadowoli, naprawdę wiele
i mamy liczne gotowce , jednak tym razem Oto założenia przyjęte przeze mnie: się nauczysz.
musimy spojrzeć na problem z większego Niech w czasie normalnej pracy naciśnięcie Jeśli więc masz wystarczająco silną wolę,
dystansu i sporo pozmieniać. Sam program S2 zwiększa liczbę minut, a S1 liczbę go- nie czytaj dalszej części opisu, tylko spróbuj
budzika nie powinien sprawić trudności na dzin, jak we wcześniejszej wersji zegara. zrealizować budzik zupełnie samodzielnie.
pewno potrafisz sprawdzić, czy liczby są Przejście do trybu podglądu i ustawiania po- Zacznij teraz!
równe. Z sygnałem dzwiękowym też raczej ry budzenia niech następuje po jednocze- ...
nie będzie problemu wystarczy zastosować snym naciskaniu S1 i S2 przez czas powyżej A oto mój program. Do realizacji budzika
brzęczyk z generatorem dołączony do wyj- 1 sekundy. Po takim przełączeniu w tryb bu- wykorzystałem podkładkę w postaci zega-
ścia Q2. Czy zgodzisz się, że tym razem pro- dzika niech wyświetlacz miga. W takim try- ra z programu C016b.bas, gdzie pracują licz-
blemem będzie ustawianie zegara i budzika bie wyświetlacz będzie pokazywał czas alar- niki dwójkowe, a liczby dwójkowe są potem
oraz rozróżnienie, czy pokazywany jest bie- mu, a naciśnięcie S1 lub S2 pozwoli ustawić zamieniane na kod BCD. Oczywiście trzeba
żący czas, czy pora budzenia. Trzeba też ja- godzinę i minutę budzenia. Niech w tym try- było dodać dwie nowe zmienne bajtowe do
koś włączać i wyłączać funkcję budzenia bie ustawiania budzika kolejne jednoczesne przechowywania czasu budzenia: Godzi-
i fakt ten sygnalizować lampką (którąś krop- naciśnięcie S1 i S2 na co najmniej sekundę nybiMinutyb. Doszły też trzy kluczowe
ką na wyświetlaczu). Trzeba też dodać moż- na przemian włącza i wyłącza budzenie, co bity-flagi o oczywistych nazwach: TrybU-
liwość wyłączenia sygnału alarmowego. zostanie zasygnalizowane świeceniem/ga- stawBudzika, WlaczenieBudzika
Wszystko to wskazuje, że do sterowania na śnięciem prawej kropki wyświetlacza i niech i Dzwiek, decydujące o stanie systemu.
pewno nie wystarczy jeden przycisk. Nawet program automatycznie wychodzi z trybu Oprócz tego potrzebne były dodatkowe, dość
dwa przyciski to mało przydałoby się wię- ustawiania budzika po kilku sekundach od liczne zmienne pomocnicze (o rozmaitych
cej, ale nie ma rady i trzeba mądrze wykorzy- ostatniego naciśnięcia któregokolwiek przy- nazwach wskazujących na ich rolę). Brzę-
stać to, co jest na naszej płytce testowej. Tak- cisku. Niech potem, po włączeniu akustycz- czyk piezo dołączymy do wyjścia Q2, a dla
że i tym razem chodzi tylko o ćwiczenie, nego, przerywanego sygnału alarmowego, uzyskania przerywanego sygnału budzenia
więc nie będziemy stosować baterii rezerwo- jego skasowanie (wyłączenie) następuje po wykorzystamy wcześniej wprowadzoną
wej, tylko napiszemy program budzika. Wła- naciśnięciu któregokolwiek przycisku. Po- zmienną Migaj, która co sekundę zmienia
śnie dlatego, że jest to jedynie kolejne ćwi- nieważ wyłączanie alarmu dzwiękowego bę- swój stan.
czenie, możemy zrezygnować z omawianych dzie się odbywać rano, a budzony może być Szkielet programu budzika pokazany jest
wcześniej procedur wygaszania wyświetla- mocno zaspany, należałoby wtedy blokować na rysunku 82 (C018a.bas). Oczywiście nie
cza. Jeśli kiedyś zdecydujesz się na realizację przyciski, żeby przypadkowe dłuższe naci- jest to program, tylko jego zgrubny szkic.
Jeszcze o obsłudze Może to Ci się wydać bardzo dziwne albo na-
yródło Adres w pa- Opis
przerwań wet niezrozumiałe. Tymczasem jest to bardzo do-
mięci programu przerwania
Jak wiesz, pamięć programu procesora 90S2313 ma RESET 0 zerowanie (reset) bry i przejrzysty sposób. Mianowicie w tych
INT0 1 zewnętrzne INT0 (nóżka 6)
pojemność 2kB, z tym, że jest to 1024 rozkazów pierwszych komórkach pamięci programu FLASH
INT1 2 zewnętrzne INT1 (nóżka 7)
16-bitowych. Po resecie procesor zawsze zaczyna będą się znajdować rozkazy skoków do poszcze-
CAPTURE1 3 przechwycenie T/C1
wykonywanie programu od pierwszego adresu gólnych części programu. W pierwszej komórce
COMPARE1 4 równość T/C1
z pamięci, czyli spod adresu 0. Zgłoszenie przerwa- (numer 0) będzie rozkaz skoku do tego miejsca
TIMER1 5 przepełnienie T/C1
nia INT0 powoduje skok do drugiego rozkazu z pa- TIMER0 6 przepełnienie T/C0
w pamięci, gdzie zaczyna się główny program,
mięci, czyli adresu 1. INT1 powoduje skok do trze- URXC 7 UART, odebrano znak
a w kolejnych komórkach rozkazy skoków do pro-
UDRE 8 UART, rejestr danych pusty
ciego rozkazu z pamięci, czyli adresu 2. Tabela cedur obsługi poszczególnych przerwań. Na taki
UTXC 9 UART, nadawanie zakończone
obok pokazuje adresy, pod które procesor skacze rozkaz skoku z powodzeniem wystarczy jedna 16-
ACI 10 Komparator analogowy
po zgłoszeniu poszczególnych przerwań. bitowa komórka pamięci programu. Oczywiście
Elektronika dla Wszystkich
38
T
E
C
H
N
I
K
A
L
I
A
66 M1 Mikroprocesorowa Ośla łączka
Gotowy program budzika znajdziesz w pliku duje wykonanie procedury Co1s, której Nasz układ musi mieć dwa główne tryby
C018b.bas i ponieważ jest on dość długi głównym zadaniem jest zwiększenie stanu pracy: tryb zegara oraz tryb ustawiania bu-
i może Cię przerazić, przeanalizujmy go po liczników czasu. Co 4,096ms przerwanie od dzika. Rysunek 83 (C018c.bas) pokazuje
kawałku. Już rysunek 82 pokazuje główną T/C0 powoduje wykonanie procedury kluczowe procedury związane z tymi dwoma
zasadę pracy: w spoczynku budzik zachowu- Co4ms, która wykorzystywana jest głównie trybami. Przejście do trybu ustawiania budzi-
je się jak zwyczajny zegar z ćwiczenia 16: co do sterowania wyświetlacza multipleksowe- ka następuje po jednoczesnym naciśnięciu
sekundę przerwanie od licznika T/C1 powo- go oraz do obsługi przycisków. i trzymaniu S1 i S2 przez czas dłuższy niż 1
sekunda. Wtedy zostaje ustawiona flaga
TrybUstawBudzika. Pózniej stan tej fla-
Rys. 82
gi jest badany w procedurze Co4ms w zwiÄ…z-
ku z obsługą wyświetlaczy zależnie od sta-
nu flagi, na wyświetlaczu zostanie pokazany
albo bieżący czas, albo pora budzenia. Aby
to zrealizować, musiałem wprowadzić dwie
zmienne pomocnicze (Godz, Minut),
których stan jest pokazywany na wyświetla-
czu. Normalnie, czyli w trybie zegara do
zmiennych tych wpisywany jest bieżący czas
z liczników Godziny, Minuty. Natomiast
w trybie ustawiania budzika do tych zmien-
nych wpisywana jest zawartość pamięci alar-
mu, czyli zmiennych Godzinyb, Minu-
tyb. Zwróć uwagę, jak prosto, choć nietypo-
wo zostało zrealizowane migotanie: normal-
nie licznik Muxliczy w zakresie 0...3, czyli
ma cztery stany, odpowiedzialne za zaświe-
Rys. 83
canie kolejnych wyświetlaczy. W trybie usta-
wiania budzika cykl pracy licznika Muxto
0...7 (skracany w ten sam nietypowy sposób
z wykorzystaniem funktora And). Przy sta-
nach licznika Muxrównych 4...7 wyświetla-
cze sÄ… wygaszone. Po pierwsze, daje to obni-
żenie jasności świecenia, a po drugie, często-
tliwość odświeżania spada o połowę do oko-
ło 30Hz, przez co wyraznie widać migotanie
wskaznika. Nie ma wątpliwości, że system
jest wtedy w trybie ustawiania.
Program automatycznie wychodzi z pro-
cedury ustawiania budzika dzięki obecności
licznika Klawisz. Każde naciśnięcie do-
wolnego przycisku powoduje wpisanie do
tego licznika wcześniej ustalonej wartości
maksymalnej (na rysunku 83 nie sÄ… zazna-
czone odpowiadajÄ…ce za to polecenia sÄ…
one zawarte w procedurze Co4ms). Następ-
nie co sekundÄ™ licznik jest dekrementowany
(zawartość jest zmniejszana o 1), a gdy doj-
dzie do zera, flaga TrybUstawBudzika
zostaje wyzerowana, czyli układ powraca
do trybu zegara. W programie C018b.bas
jeśli żadne przerwania nie są wykorzystane, komór- z nich następuje w bardzo podobny sposób. Przede Jak wiesz, z trybu Idle może wyprowadzić pro-
ki o adresach 1...10 mogą być dowolnie wykorzy- wszystkim na początek zawsze ustawiany jest bit cesor dowolne przerwanie. Nie ma problemu, bo
stane, na przykład mogą zawierać główny program. zezwolenia SE (bit 5, Sleep Enable) w rejestrze choć procesor nie pracuje, czynne są wszystkie pe-
MCUCR. Tylko wtedy możliwe staje się przejście ryferia i oscylator kwarcowy. Inaczej jest w trybie
Idle, Power Down w jeden z trybów oszczędnościowych, a nastąpi to Power Down. Z trybu Power Down może wypro-
Jak już wiesz, procesor 90S2313 oferuje dwa tryby po wykonaniu asemblerowego polecenia zwanego wadzić procesor albo reset sprzętowy (zwarcie koń-
obniżonego poboru prądu. W BASCOM-ie mamy SLEEP (jest to jeden z rozkazów asemblera, prze- cówki zerującej do masy), albo przepełnienie licz-
dwa oddzielne rozkazy IDLE i POWERDOWN. znaczony tylko do tego celu), zależnie od stanu bi- nika watchdoga, albo jedno z przerwań INT0,
Tylko w BASCOM-ie są to dwa różne polecenia tu SM (bit 4 Sleep Mode) w rejestrze MCUCR. Ten INT1. Także w tym ostatnim przypadku należy
kompilator przetłumaczy je na elementarne rozkazy sam asemblerowy rozkaz SLEEP wprowadzi pro- wziąć pod uwagę, że oscylator kwarcowy jest
kodu maszynowego i przy bliższej analizie okazuje cesor w tryb Idle, jeśli bit SM jest wyzerowany, zatrzymany. Pamiętaj też, że podczas normalnej
się, iż w rzeczywistości przejście do dowolnego a w tryb Power Down, jeśli bit SM jest ustawiony. pracy, w tym przy przerwaniach wyzwalanych
Elektronika dla Wszystkich
39
T
E
C
H
N
I
K
A
L
I
A
Mikroprocesorowa Ośla łączka M1 67
w deklaracjach znajdziesz liniÄ™ deklaracji Rys. 84
jednej stałej
Const Powrot = 3
wyznaczającej czas powrotu równy 3 sekun-
dy, oraz linie
Klawisz = Powrot
wpisujące tę wartość przy każdym naciśnię-
ciu klawisza. Zadeklarowanie stałej Powrot
w razie potrzeby łatwo pozwoli zmienić czas
powrotu.
Obsługę przycisków zrealizowałem tro-
chÄ™ nietypowo, wprowadzajÄ…c pomocniczÄ…
zmienną Przyciski, w której dwóch naj-
młodszych bitach uzyskuję informacje o sta-
nie przycisków z pomocą funktora AND. Po-
tem badam stan tej zmiennej. W zwiÄ…zku
z nietypowym sposobem obsługi wszystkich
funkcji budzika za pomocą tylko dwóch
przycisków, konieczne jest wprowadzenie
dodatkowych mechanizmów, które zapobie-
gną błędom. Przykładowo przejście w tryb
ustawiania budzika wymaga jednoczesnego
naciśnięcia i przytrzymania przycisków S1,
S2. Wcześniej przyciski te pracowały nieza-
leżnie, a naciśnięcie obydwu było ignorowa-
ne. Teraz, bez dodatkowych zabiegów, stare
rozwiązanie wymagałoby bardzo precyzyj-
nego jednoczesnego naciskania S1 i S2
wiąże się to z zawartością zmiennej Uni- fić na stan licznika równy 1, co oznaczałoby lub budzenia, zależnie od stanu bitu TrybU-
wers, odpowiedzialnej za opóznienie reak- konieczność naciskania w naszym budziku stawBudzika). Ponieważ na początku
cji na naciśnięcie przycisku. W programie obu przycisków z błędem czasowym mniej- Uniwers=40, dojście do zera nastąpi dopie-
C016b.bas jest to jednocześnie licznik multi- szym niż 4ms. Ponieważ jest to wymaganie ro po około 160 milisekundach. Jeśli w tym
pleksu, liczący ciągle w zakresie 4...1, więc nie do przyjęcia, trzeba było zrealizować od- czasie naciśnięty zostanie drugi przycisk (Ca-
naciskając przycisk można przypadkiem tra- dzielnie licznik multipleksu (jako Mux) se 0), odliczanie zostanie zatrzymane.
i znacząco zmienić działanie procedur zwią- Wykonane zostaną natomiast rozkazy
zanych ze zmienną Uniwers, która nadal przejścia w tryb ustawiania budzika, zawarte
Rys. 85
wyznacza opóznienie reakcji na naciśnięcie w procedurze Co1ms, pokazane na rysunku
przycisku. 83 (ze zwłoką większą niż 1s z uwagi na obe-
Procedury obsługi przycisków są pokazane cność bitu opózniającego Pomoc).
na rysunku 84 (C018d.bas). Jak widać, licznik Takie działanie licznika Uniwers sku-
Uniwersw spoczynku (Case 3) nie pracu- tecznie załatwia sprawę niejednoczesnego na-
je i co 4ms wpisywana jest tam spoczynkowa ciśnięcia S1 i S2, ale nie likwiduje dalszego
wartość równa 40. Licznik Uniwerspracuje istotnego niebezpieczeństwa. Mianowicie gdy
tylko wtedy, gdy jest naciskany jeden z przyci- zostanie włączony dzwiękowy sygnał alarmo-
sków (Case 1, Case 2). Gdy więc mają wy, można go wyłączyć naciśnięciem dowol-
zostać uruchomione oba przyciski, ale naj- nego przycisku (lub obu). Realizują to poka-
pierw zostanie naciśnięty jeden z nich, zaczy- zane na rysunku 84 linie Alarm = 0. Zau-
na liczyć licznik Uniwers, począwszy od 40 waż jednak, że przyciski działałyby wtedy
w dół. Jeśli zliczy do zera, nastąpi reakcja w sposób standardowy, to znaczy po około
zwiększenie stanu godzin lub minut (zegara 160ms naciskania będą zwiększać stan liczni-
zboczem, testowanie stanu końcówek portów nastę- a program podjął normalną pracę ten szczegół jest dów resetu (w jednym z najbliższych numerów
puje niejako punktowo w każdym takcie zegara bliżej omówiony w materiale dotyczącym obwo- EdW).
kwarcowego. Jeśli oscylator nie pracuje, stan koń- Pobór prądu,
cówek nie jest sprawdzany. Wynika z tego ważny częstotliwość pracy
wniosek: jeśli ze stanu Power Down ma budzić K Pobór prądu zależy przede wszystkim od wartości
procesor któreś z przerwań zewnętrznych INT0, napięcia zasilającego, od częstotliwości oscylatora
INT1, koniecznie należy skonfigurować to prze- kwarcowego oraz od trybu pracy. Wpływ tempera-
rwanie jako wyzwalane poziomem niskim, a nie tury oraz różnice związane z rodzajem wykony-
zboczem. Mało tego stan aktywny (niski) musi wanych rozkazów można zazwyczaj pominąć. Ry-
trwać odpowiednio długo, co najmniej kilkanaście sunek K pokazuje zależność poboru prądu od czę-
milisekund, żeby w tym czasie dotychczas nieczyn- stotliwości kwarcu przy różnych napięciach zasi-
ny oscylator kwarcowy zdążył się rozpędzić , lania. Z rysunku tego można wyciągnąć interesu-
Elektronika dla Wszystkich
40
T
E
C
H
N
I
K
A
L
I
A
68 M1 Mikroprocesorowa Ośla łączka
ków czasu. Oznaczałoby to, że wyłączanie wyłączy sygnał alarmowy wtedy nie ma po- ciski na potrzebne 10 sekund. Fragment ta-
alarmu musiałoby mieć postać bardzo krót- trzeby blokady przycisków. W ramach ćwi- kiego programu pokazany jest na rysun-
kiego naciśnięcia przycisku(-ów). Tymcza- czeń warto też rozważyć kolejną możliwość ku 86 (C018e.bas). Programik
sem osoba budzona z głębokiego snu może że wyłączenie dzwięku nastąpi tuż przed If Blok=1 And Dzwiek=0 then
nieświadomie naciskać przycisk dłużej, co upływem minuty alarmu rysunek 85c. Choć Blok1=1
oczywiście spowoduje przypadkowe prze- taka możliwość jest mało prawdopodobna, Blok = Dzwiek
stawienie zegara (przyspieszenie nawet spróbujmy się zmierzyć z takim utrudnie- End If
o kilka minut lub co gorsza, godzin). Aby niem. Ponieważ w tym przypadku czas bloka- porównuje starą wartość flagi Dzwiek
wyeliminować takie ryzyko, trzeba po każ- dy wyjdzie poza minutę alarmu, nie można zapisaną wcześniej w zmiennej Blokz war-
dym ręcznym wyłączeniu sygnału dzwięko- procedur blokady umieścić wgałęzi progra- tością aktualną tej flagi. W ten prosty sposób
wego budzika na kilka sekund całkowicie mu, realizowanej tylko w tym czasie. sprawdza, czy zanikł sygnał dzwiękowy i po
zablokować reakcje przycisków. Gdybyśmy nie narzucili sobie takich do- zaniku ustawia flagę blokady Blok1. Dodat-
Należy więc wykryć fakt ręcznego wyłą- datkowych wymagań, procedurę blokady kowo ustawia Uniwers=255 zwróć uwa-
czenia alarmu dzwiękowego. Przeanalizuj można byłoby zrealizować trochę prościej gę, że właśnie to jest sposób blokowania
rysunek 85 pokazujący kilka możliwych wystarczyłoby wykryć każdy fakt zaniku sy- przycisków brak reakcji przycisku jest
przypadków. Jak pokazuje też rysunek 83, gnału alarmu dzwiękowego i blokować przy- oczywistą konsekwencją wpisania do liczni-
alarm dzwiękowy będzie trwał maksymalnie
przez minutę, gdy spełniony jest warunek
Rys. 86
Minuty=MinutyB And Godziny=Go-
dzinyB
a potem wyłączy się automatycznie. W przy-
padku z rysunku 85a sprawa jest jasna po
ręcznym wyłączeniu sygnału dzwiękowego
należy zablokować przyciski na powiedzmy
10 sekund. W przypadku z rysunku 85b nie-
wyłączony ręcznie budzik po minucie sam
Rys. 85
L
jące wnioski. Między innymi to, że procesor może struktury będzie się wahać, nie należy stosować
pracować przy częstotliwościach wyższych niż częstotliwości taktowania wyższej od nominalnej.
nominalne. Jak wiadomo, dostępne są dwie wersje Z przedstawionego rysunku wynika też kolejny
procesora, jedna pozwalająca przy napięciu zasila- bardzo ważny wniosek: by zmniejszyć pobór prądu,
nia w granicach 4...6V pracować przy częstotliwo- warto zmniejszać napięcie zasilania i częstotliwość
ści maksymalnej 10MHz i druga, przy napięciach kwarcu. Nie trzeba się bać: producent gwarantuje,
2,7...6V pozwalająca pracować z częstotliwością iż w zakresie napięć zasilania 2,7V...6V procesor
taktowania do 4MHz. Tymczasem rysunek sugeruje, będzie poprawnie realizował wszystkie zadania.
że częstotliwość taktowania może sięgać 15MHz. Warto wiedzieć, że procesory AVR mogą też pra-
Do Redakcji nadchodzą listy Czytelników, którzy cować przy bardzo małej częstotliwości taktowa-
przypadkowo lub nie, przekonali się, że AVR-y mo- nia. Według karty katalogowej, częstotliwość tak-
gą być taktowane kilkakrotnie wyższą częstotliwo- towania może być dowolnie mała. Może wynosić
ścią, niż podaje producent. Dotyczy to głównie we- na przykład 1kHz lub mniej. Oczywiście wtedy
rsji 4-megahercowej, dającej przy overclockingu za- program będzie realizowany powoli jeden rozkaz
skakujÄ…co dobre wyniki. To jest jak najbardziej maszynowy w ciÄ…gu 1 milisekundy, niemniej
prawda. Generalnie czym wyższe napięcie, tym wy- w wielu przypadkach procesor ma mało pracy,
ższa maksymalna częstotliwość pracy. Należy jed- przez większość czasu kręci się w pustej pętli,
nak pamiętać, że dla takiego podkręconego proce- więc obniżenie częstotliwości taktowania może
sora producent nie gwarantuje utrzymania wszyst- być znakomitym sposobem radykalnego zmniej-
kich parametrów, w tym skuteczności i trwałości za- szenia poboru prądu. Warto tylko pamiętać, że
pisu w pamięci EEPROM. Dlatego w odpowiedzial- oscylator naszego procesora (nóżki 4, 5) może
nych zastosowaniach, zwłaszcza gdy temperatura współpracować albo z rezonatorem kwarcowym,
Elektronika dla Wszystkich
45
T
E
C
H
N
I
K
A
L
I
A
T
E
C
H
N
I
K
A
L
I
A
Mikroprocesorowa Ośla łączka M1 69
ka Uniwersliczby 255. PracujÄ…cy licznik Rys. 87
Uniwersjest dekrementowany co 4,096ms,
więc na dojście do zera potrzebowałby ponad
jednÄ… sekundÄ™ (1,044s). To jednak nie nastÄ…pi,
bo po ustawieniu flagi Blok1wchodzi do gry
zaznaczony czerwono fragment procedury
Co1s. Zmniejsza on co sekundę zawartość
licznika blokada od 10 do 0 i co sekundÄ™ wpi-
suje do licznika Uniwerswartość 255, blo-
kując tym na 10 sekund reakcje przycisków.
Program z rysunku 86 (C018e.bas) blokuje
przyciski także po samoczynnym wyłączeniu
sygnału dzwiękowego, co nie jest jakąś wadą.
My jednak w ramach ćwiczeń chcemy tak na-
pisać program, żeby blokada występowała tyl-
ko po ręcznym wyłączeniu dzwięku. To do-
datkowe wymaganie nieco komplikuje pro-
gram, chcę Ci jednak przedstawić jedno z roz-
wiązań, żebyś pomału przyzwyczajał się do
przezwyciężania najrozmaitszych problemów,
jakie będziesz napotykał w swej praktyce.
W naszym podstawowym programie
(C018b.bas) realizujemy to, wykorzystujÄ…c
inaczej zmienną Blok, która niejako dubluje
flagÄ™ Dzwiek. Pokazuje to rysunek 87. Fla-
ga Dzwiekmoże być wyzerowana ręcznie
przyciskiem, a flaga Blok nie. Różnica sta-
nów bitów BlokiDzwiekinformuje więc cji nie tylko czasu bieżącego, ale i pamięci zuj program i odpowiedz na pytanie, czy rozka-
o ręcznym wyłączeniu alarmu dzwiękowego pory budzenia. Chyba to Cię wcale nie dziwi. zy wykrywania wyłączenia alarmu (zaznaczo-
i wyzwala procedurę blokowania przycisków. Przecież musimy kontrolować także zawar- ne na rysunku 87 liczbą 2) mogłyby być umie-
I to właściwie wszystko, co najważniejsze tość zmiennych Godzinyb i Minutyb szczone w procedurze Co1s, a nie Co4ms?
w naszym budziku. W programach w czasie ustawiania ich zawartości za pomo- Zachęcam Cię też do własnych ekspery-
C018b.bas i C018e.bas w procedurze Co4ms cą naszych inteligentnych przycisków. mentów i dalszego ulepszania budzika.
znajdziesz parę dalszych szczegółów, w tym Na koniec jak zwykle propozycja: w ra-
rozbudowane polecenia sprawdzania i korek- mach pracy domowej samodzielnie przeanali- Piotr Górecki
0,1mA, przy 6V ok. 0,8mA.
M N
W razie potrzeby zasilanie komparatora analo-
gowego można i warto wyłączyć, ustawiając bit
ACD (bit 7 - Analog Comparator Disable) w reje-
strze ACSR (Analog Comparator Control and Status
Register). Domyślnie (po resecie) bit ten jest wyze-
rowany, czyli zasilanie komparatora jest włączone.
Wykorzystuje siÄ™ to w trybach normalnym oraz Idle.
Rysunek N pokazuje zależność prądu od na-
O
albo rezonatorem ceramicznym. Nie jest przezna- pięcia zasilania w trybie Idle przy częstotliwości
czony do współpracy z obwodem RC. Oznacza to, kwarcu 4MHz. Dla innych częstotliwości pobór
że aby pracował z małą częstotliwością, trzeba za- prądu będzie inny.
stosować zewnętrzny generator, np. zwyczajny ge- Rysunki O, P pokazują podobną zależność
nerator RC. Częstotliwość przebiegu może być do- w trybie Power Down: gdy watchdog jest czynny
wolnie mała, natomiast zbocza nie mogą być zbyt oraz gdy jest wyłączony. Zwróć uwagę, że tym ra-
łagodne. W praktyce wystarczy typowy generator zem nie określamy częstotliwości kwarcu,
RC, np. według rysunku L, który przy dowolnych Typowy spodziewany pobór prądu w funkcji bo w tym trybie oscylator kwarcowy nie pracuje,
bramkach zagwarantuje czasy narastania i opadania napięcia zasilania przy częstotliwości 4MHz, jak dlatego w trybie Power Down pobór prądu zupeł-
zboczy krótsze niż 0,5µs. Opisana możliwość jest w naszej pÅ‚ytce testowej, przedstawiony jest na nie nie zależy od czÄ™stotliwoÅ›ci kwarcu.
interesująca, niemniej w ogromnej większości za- rysunku M.
stosowań procesor będzie taktowany typowym re- Uwaga! Rysunki pokazują, ile pobiera sam mi-
P
zonatorem kwarcowym o częstotliwości 4...10MHz kroprocesor. Jeśli końcówki portów pełnią rolę
współpracującym z dwoma kondensatorami. Jeśli wyjść i wyjścia te są obciążone, sumaryczny po-
przebieg taktujący byłby potrzebny dla innych urzą- bór prądu będzie większy. Należy na to zwracać
dzeń systemu, można go pobrać z wyprowadzenia baczną uwagę w zastosowaniach, gdzie pobór prą-
XTAL2 (nóżka 4) do nóżki tej można dołączyć du ma być jak najmniejszy.
jedno wejście bramki (bufora) rodziny CMOS4000 Warto też pamiętać, że analogowy komparator
lub 74HC(T), jak pokazuje omawiany rysunek. pobiera: przy 5V około 0,5mA, przy 3V ok.
Elektronika dla Wszystkich
46
T
E
C
H
N
I
K
A
L
I
A
T
E
C
H
N
I
K
A
L
I
A
Wyszukiwarka
Podobne podstrony:
edw 03 s56edw 03 s61edw 03 s56edw 03 s12edw 03 s20edw 03 s13edw 03 s20edw 03 s51edw 03 s55edw 03 s54edw 03 s68edw 03 s61edw 03 s10edw 03 s56edw 03 s12więcej podobnych podstron