programowany zegar z DCF77 1.pdf

(415 KB) Pobierz
Programowany zegar z DCF77, część 1 - AVT-5022
Programowany zegar z DCF77
P R O J E K T Y
Programowany zegar
z DCF77, część 1
AVT−5022
Proponowany uk³ad jest
ìprzerÛbk¹î uk³adu opisanego
w†Elektronice Praktycznej
kilka lat temu. Wydaje siÍ
jednak, øe wskutek postÍpu
w†elektronice rok rozwoju
tej dziedziny techniki to ca³e
stulecie w†innych
dziedzinach.
Projekt zegara synchronizowa-
nego atomowym wzorcem czasu
DCF77 zaprezentowaliúmy w†nu-
merze EP7/94 i, jak na tamte
czasy, by³ to uk³ad bardzo nowo-
czesny. Trudno jednak nazwaÊ go
takim w†roku 2001 i†dlatego po-
stanowi³em przedstawiÊ Czytelni-
kom w³asne opracowanie takiego
zegara, w ktÛrym wykorzystano
nowoczesne, nie istniej¹ce w†po-
³owie lat 90. elementy. W³aúciwie
jedynym elementem zas³uguj¹cym
na uwagÍ jest naprawdÍ doskona-
³y procesor, oúmielam siÍ twier-
dziÊ, øe najlepszy w†swojej klasie:
AT90S8535.
Zanim jednak przedstawimy
szczegÛ³owy opis uk³adu, zapoz-
najmy siÍ z†podstawowymi para-
metrami nowego zegara DCF77.
Temat synchronizacji zegarÛw
za pomoc¹ sygna³u DCF by³ po-
ruszany na ³amach Elektroniki
Praktycznej doúÊ dawno i†dlatego
chcia³bym w†najwiÍkszym skrÛcie
przypomnieÊ, czym w³aúciwie jest
transmisja DCF i†czego moøemy
oczekiwaÊ po synchronizowanym
ni¹ zegarze.
Zapewnienie synchronizacji
czasu na terenie ca³ego paÒstwa
czy nawet kontynentu by³o od
dawna bardzo istotnym proble-
mem. Nawet najdok³adniejsze
chronometry stosowane w†nawiga-
cji morskiej nie zapewnia³y do-
statecznej precyzji, a†pomiary as-
tronomiczne by³y czynnoúci¹ bar-
dzo k³opotliw¹. Do rozwi¹zanie
pozostawa³y wiÍc dwa problemy:
stworzenie wzorca czasu niezaleø-
nego od zjawisk astronomicznych
i†odpowiednio niezawodnego úrod-
ka transmisji, zapewniaj¹cego b³ys-
kawiczne przekazywanie informa-
cji na teren przynajmniej jednego
paÒstwa. Takim wzorcem czasu,
praktycznie idealnie dok³adnym,
okaza³y siÍ przemiany zachodz¹ce
w†izotopach promieniotwÛrczych,
a†odpowiednim medium sta³y siÍ
fale radiowe. W††wielu krajach
(m. in. USA, Wielka Brytania)
Elektronika Praktyczna 6/2001
31
32193395.051.png
Programowany zegar z DCF77
Rys. 1. Przybliżony zasięg
nadajnika DCF.
Oczywiúcie, odbiÛr nie by³ sta³y,
ale przy dobrych warunkach pro-
pagacyjnych moøliwe by³o odebra-
nie kilkudziesiÍciu poprawnych
transmisji dziennie.
Do odbioru informacji DCF
przeznaczone s¹ specjalne odbior-
niki DCF Receiver dostÍpne
w†sklepach AVT. Odbiornik taki
jest niezbÍdny do wykorzystania
wszystkich moøliwoúci zegara.
Zrealizowanie uk³adu zegara
w†technice mikroprocesorowej,
zreszt¹ jedynej moøliwej do zasto-
sowania w†tak skomplikowanym
systemie, radykalnie uproúci³o jego
budowÍ. Nie poleca³bym jej moøe
zupe³nie ìzielonymî elektronikom,
ale juø úrednio zaawansowani
elektronicy, maj¹cy za sob¹ wy-
konanie kilku prostych uk³adÛw,
mog¹ zdecydowaÊ siÍ na montaø
zegara DCF77.
wych DP1..DP6 i†klawiatura
zbudowana z†szeúciu przyciskÛw
S1..S6. Ta czÍúÊ uk³adu po³¹-
czona jest z†g³Ûwnym blokiem
zegara za pomoc¹ z³¹cza CON1
+ CON2.
Zastosowanie wyúwietlania
multipleksowanego spowodowa-
³o dodanie do uk³adu odpowied-
nich elementÛw steruj¹cych seg-
mentami i†wspÛlnymi anodami
wyúwietlaczy. Segmenty oraz
punkty dziesiÍtne wyúwietlaczy
sterowane s¹ za pomoc¹ driverÛw
mocy zawartych w†uk³adzie IC1
- ULN2803, natomiast do wspÛl-
nych anod wyúwietlaczy pr¹d
jest doprowadzany za pomoc¹
tranzystorÛw T1..T6.
Sygna³ DCF doprowadzany
jest z†odbiornika do z³¹cza DB9
- CON6, a†nastÍpnie podlega in-
wersji i†dostosowaniu do pozio-
mu TTL w†uk³adzie z†tranzysto-
rem T7. NastÍpnie kierowany
jest na wejúcie przerwania INT0
procesora.
W†uk³adzie zastosowano dwa
rezonatory kwarcowe Q1 i†Q2
wspÛ³pracuj¹ce z†procesorem. Re-
zonator Q1, o†czÍstotliwoúci pod-
stawowej 8MHz, jest ìzwyk³ymî
kwarcem wspÛ³pracuj¹cym z†oscy-
latorem systemowym procesora.
Natomiast ìzegarkowyî kwarc Q2
stabilizuje czÍstotliwoúÊ dodatko-
wego oscylatora RTC wbudowane-
go w†strukturÍ procesora.
stworzono nadajniki czasu wzor-
cowego.
W†Niemczech poradzono sobie
z†tym problemem juø doúÊ dawno,
nadaj¹c sygna³ z†bardzo dok³ad-
nego wzorca czasu. Jest nim ato-
mowy (cezowy) zegar czasu znaj-
duj¹cy siÍ na Uniwersytecie
w†Braunschweig, ktÛrego b³¹d sza-
cowany jest na mniejszy niø
1†sekunda na 5†milionÛw lat.
W†Mainflingen [50 O 0,1' N, 09 O 00'
E) ko³o Frankfurtu nad Menem
znajduje siÍ nadajnik radiowy
nadaj¹cy na czÍstotliwoúci
77,5kHz (z†moc¹ 50kW) dok³adn¹
informacjÍ czasowa, bÍd¹c¹ urzÍ-
dowym wzorcem czasu w†Nie-
mczech.
Informacja o†czasie jest kodo-
wana w†59-bitowych s³owach
przesy³anych co sekundÍ i†za-
wiera dane o†czasie (godziny,
minuty) i†dacie (rok, miesi¹c,
dzieÒ, dzieÒ tygodnia). Dodatko-
wo zawarte s¹ teø zapowiedzi
zmiany czasu i†dodatkowej se-
kundy oraz informacja o†tym,
czy obowi¹zuje czas letni, czy
zimowy. Aby zapobiec przek³a-
maniom, dodano takøe bity pa-
rzystoúci pomagaj¹ce wykryÊ
b³Ídy w†transmisji.
Wed³ug oficjalnych danych,
moc nadajnika zapewnia popra-
wny odbiÛr w†zasiÍgu 2500km
( rys. 1 ), a wiÍc na terenie prawie
ca³ej kontynentalnej Europy (z
wy³¹czeniem Islandii i†czÍúci Fin-
landii). Praktyka jest jednak nieco
inna, poniewaø ostatnio zapozna-
³em siÍ z†informacjami o†popra-
wnym odbiorze transmisji DCF77
nawet na odleg³oúÊ do 5000 km.
Opis dzia³ania
Schemat elektryczny zegara
DCF77 pokazano na rys. 2 .
ìSercemî uk³adu jest zaprogramo-
wany procesor typu AT90S8535,
otoczony niewielk¹ liczb¹ ele-
mentÛw dyskretnych. Schemat
zegara moøemy podzieliÊ na
dwie czÍúci, odpowiadaj¹ce fi-
zycznemu rozmieszczeniu ele-
mentÛw na dwÛch p³ytkach ob-
wodÛw drukowanych. W gÛrnej
czÍúci schematu jest blok szeúciu
wyúwietlaczy siedmiosegmento-
Podstawowe dane techniczne zegara DCF77:
Wyświetlanie czasu w formacie: godzina, minuta, sekunda.
Wyświetlanie daty w formacie: dzień, miesiąc, rok. Opcjonalnie data może być wyświetlana z pominię−
ciem roku, na którego miejscu prezentowana może być informacja o aktualnym dniu tygodnia.
Budzik 1 pracujący w trybie codziennym, czyli włączający sygnał budzenia niezależnie od dnia tygo−
dnia.
Budzik 2 automatycznie ignorujący sobotę i niedzielę jako dni wolne od pracy i nauki w szkole. Nie−
zależnie od generacji sygnału akustycznego obydwa budziki sterują przekaźnikiem, do którego można
podłączyć urządzenia o znacznym poborze mocy.
Timer pracujący w zakresie od 1 sekundy do 59 sekund, 59 minut i 99 godzin. Timer steruje drugim
przekaźnikiem o znacznej obciążalności styków.
Stoper o zakresie liczenia identycznym jak timer.
Informacje prezentowane są na typowych wyświetlaczach siedmiosegmentowych LED o standardo−
wych wymiarach. Umożliwia to odczytywanie czasu z odległości kilku, a dla osób obdarzonych soko−
lim wzrokiem najwyżej z odległości kilkunastu metrów. Ostatnio zapoznałem się z listem od Czytel−
nika, który napotkał na ogromne problemy podczas prób dołączenia do zbudowanego układu wyświet−
laczy o większych wymiarach, niż przewidziane w projekcie. Problem ten nie będzie nawet w najmniej−
szym stopniu dotyczył naszego zegara DCF77, ponieważ bez jakichkolwiek przeróbek możemy go
wyposażyć w dodatkowe wyświetlacze o wysokości cyfr równej 57mm, co umożliwi odczyt z odleg−
łości nawet kilkudziesięciu metrów!
Dane wprowadzane są do zegara za pomocą sześcioprzyciskowej klawiatury. W każdej chwili możemy
dokonać ręcznej zmiany czasu, co nie było możliwe w poprzednim “wcieleniu” zegara DCF.
Pomimo, że nasz zegar przeznaczony jest do stałej współpracy z odbiornikiem sygnału DCF77, może
on także pracować jako zwykły zegar synchronizowany kwarcem “zegarkowym” 32768Hz. Jednak
dokładność wskazań znacznie wtedy spada i jest taka, jaka może być dokładność seryjnie produkowa−
nych i nie selekcjonowanych popularnych rezonatorów kwarcowych.
Zegar może być wyposażony w awaryjne źródło zasilania, które przy zaniku napięcia w sieci energe−
tycznej dostarcza prądu do zasilania samego tylko procesora.
32
Elektronika Praktyczna 6/2001
32193395.054.png 32193395.055.png
Programowany zegar z DCF77
Rys. 2. Schemat elektryczny zegara z DCF.
Elektronika Praktyczna 6/2001
33
32193395.056.png 32193395.001.png 32193395.002.png 32193395.003.png 32193395.004.png 32193395.005.png 32193395.006.png 32193395.007.png 32193395.008.png 32193395.009.png 32193395.010.png 32193395.011.png 32193395.012.png 32193395.013.png 32193395.014.png 32193395.015.png 32193395.016.png 32193395.017.png 32193395.018.png 32193395.019.png 32193395.020.png 32193395.021.png 32193395.022.png 32193395.023.png 32193395.024.png 32193395.025.png 32193395.026.png 32193395.027.png 32193395.028.png 32193395.029.png 32193395.030.png 32193395.031.png 32193395.032.png 32193395.033.png 32193395.034.png 32193395.035.png 32193395.036.png 32193395.037.png 32193395.038.png 32193395.039.png 32193395.040.png 32193395.041.png 32193395.042.png 32193395.043.png 32193395.044.png 32193395.045.png 32193395.046.png 32193395.047.png 32193395.048.png 32193395.049.png 32193395.050.png
 
Programowany zegar z DCF77
List. 1.
Sub Display_time
'Przed wejściem w pętlę programową, w której prowadzona będzie kontrola czasu bieżącego,
'a także jego ewentualna ręczna korekta, program określa rodzaj wyświetlania
'oraz zawiadamia o rozpoczęciu pracy za pomocą krótkiego sygnału akustycznego:
Display_type = 1
Short_beep
Do
'W programie zadeklarowane zostały trzy zmienne pomocnicze, których wartość bezpośrednio
'decyduje o tym, co aktualnie będzie ukazywało się na wyświetlaczach. Ponieważ w tym momencie
'mamy zamiar wyświetlać informacje o czasie, zmienne te przyjmują następujące wartości:
Disp1 = _sec
Disp2 = _min
Disp3 = _hour
'Z podprogramu wyświetlania i korekty daty możemy przejść do wyświetlania aktualnej daty,
'a dalej do innych funkcji. Ich zmiana dokonywana jest za pomocą naciśnięcia przycisku S1:
Reset Portb.0
If Pinb.0 = 1 Then Display_date
'Do funkcji ręcznej korekty aktualnego czasu możemy przejść po jednoczesnym naciśnięciu
'przycisków S3 i S6:
Reset Portb.2: Reset Portb.5
If Pinb.2 = 1 And Pinb.5 = 1 And Time_set_flag = 0 Then
'Wejście w tryb ręcznego ustawiania nowego czasu sygnalizowane jest trzema długimi
'(ok. 1 s) sygnałami akustycznymi. Następuje też zmiana wartości zmiennej pomocniczej
'TIME_SET_FLAG określającej tryb pracy:
For R = 1 To 3
Beep
Next R
Time_set_flag = 1
End If
'Naciśniecie przycisku dołączonego do pinu 2 portu B powoduje zwiększanie wartości minut.
'Każda taka operacja sygnalizowana jest krótkim sygnałem akustycznym. Oczywiście, taka
'akcja jest możliwa tylko po wejściu programu w tryb ustawiania czasu.
Reset Portb.2
If Pinb.2 = 1 And Time_set_flag = 1 Then
Incr _min
If _min = 60 Then _min = 0
Short_beep
End If
'Naciśniecie przycisku dołączonego do pinu 5 portu B powoduje zwiększanie wartości
'godzin. Każda taka operacja sygnalizowana jest krótkim sygnałem akustycznym.
Reset Portb.5
If Pinb.5 = 1 And Time_set_flag = 1 Then
Incr _hour
If _hour = 24 Then _hour = 0
Short_beep
End If
'Naciśniecie przycisku dołączonego do pinu 1 portu B spowoduje wyjście układu z trybu
'ustawiania czasu, co zostanie zasygnalizowane długim sygnałem akustycznym.
Reset Portb.1
If Pinb.1 = 1 And Time_set_flag = 1 Then
_sec = 0
Time_set_flag = 0
Beep
End If
'A teraz jedna z najważniejszych funkcji programu: wysyłanie danych na magistralę I^C,
'co umożliwia dołączenie do naszego zegara dodatkowych wyświetlaczy o dużych wymiarach.
'Dane konwertowane są najpierw na kod BCD, a następnie wysyłane na I^C pod kolejne adresy
'układów PCF8574:
X = Makebcd(_hour)
I 2 Csend 112, X
X = Makebcd(_min)
I 2 Csend 114, X
X = Makebcd(_sec)
I 2 Csend 116, X
wanie tak nietypowego rozwi¹za-
nia? To ca³a historia. Podczas
uruchamiania kilku uk³adÛw
z†procesorem AT90S8535, wyko-
rzystuj¹cych wbudowany w†jego
strukturÍ oscylator i†generator
przerwaÒ RTC, napotka³em na
nieoczekiwane i†dziwaczne trud-
noúci. W†niektÛrych uk³adach os-
cylator nie dzia³a³ w†ogÛle, a†w†in-
nych pracowa³ w†niekontrolowany
sposÛb, w³¹czaj¹c siÍ i†wy³¹czaj¹c
w†nieoczekiwanych momentach.
Ani sprawdzanie czÍúci hardwa-
re'owej uk³adu, ani kodu progra-
mu nie dawa³o rezultatu, podob-
nie jak wertowanie karty katalo-
gowej procesora. Na rozwi¹zanie
problemu natkn¹³em siÍ dopiero
podczas lektury erraty do karty
Tab. 1. Sposób kodowania
informacji DCF
Numer
impulsu
Znaczenie impulsu
(numer
sekundy)
0 Początek transmisji. Zawsze = 0.
1−14 Przerwa, bez znaczenia − wszystkie
zera.
15 0− antena normalna;
1− antena pomocnicza.
16 0−normalnie;
1− zapowiedz zmiany czasu
(przez godzinę przed zmianą).
17−18 (w kolejności bity 18,17)
10−czas zimowy; 01−czas letni.
19 0−normalnie; 1−zapowiedz
dodatkowej sekundy.
20 Start informacji czasowej.
Zawsze = 1.
21−24 (w kolejności bity 24,23,22,21)
jednostki minut w BCD.
25−27 (w kolejności bity 27,26,25)
dziesiątki minut w BCD.
28 bit parzystości dla bitów 21−27.
29−32 (w kolejności bity 32,31,30,29)
jednostki godzin w BCD.
33−34 (w kolejności bity 34,33)
dziesiątki godzin w BCD.
35 bit parzystości dla bitów 29−34.
36−39 (w kolejności bity 39,38,37,36)
jednostki dni miesiąca w BCD.
40−41 (w kolejności bity 41,40) dziesiątki
dni miesiąca w BCD.
42−44 (w kolejności bity 44,43,42)
dni tygodnia w BCD − 1=Pn; 7=Nd.
45−48 (w kolejności bity 48,47,46,45)
jednostki miesiąca w BCD.
49 dziesiątki miesiąca w BCD.
50−53 (w kolejności bity 53,52,51,50)
jednostki lat w BCD.
54−57 (w kolejności bity 57,56,55,54)
dziesiątki lat w BCD.
Loop
End Sub
Podstawowym elementem wy-
konawczym zegara jest przetwor-
nik piezoelektryczny z†generato-
rem (Q3), sterowany bezpoúrednio
z†wyjúcia 4†portu D†procesora.
Dwa przekaüniki RL1 i†RL2, ktÛ-
rych cewki zasilane s¹ za poúred-
nictwem tranzystorÛw T8 i†T9,
moøna zastosowaÊ do sterowania
urz¹dzeniami o†znacznym poborze
mocy, zasilanych z†sieci energe-
tycznej. Waønym elementem uk³a-
du jest z³¹cze magistrali I 2 C -
CON10. Umoøliwia ono do³¹cze-
nie do zegara dodatkowych wy-
úwietlaczy, np. modu³Ûw AVT-
859 o†wysokoúci 57mm.
Zegar powinien byÊ zasilany
napiÍciem sta³ym o†wartoúci ok.
12VDC, doprowadzonym do z³¹-
cza CON5. Stabilizator scalony
zrealizowany na uk³adzie IC3
dostarcza napiÍcia +5VDC, nie-
zbÍdnego do zasilania czÍúci cyf-
rowej uk³adu zegara.
Naleøy zwrÛciÊ uwagÍ na nie-
typowe zasilanie procesora, ktÛry
jest do³¹czony do szyny zasilaj¹-
cej VCC o†napiÍciu +5VDC za
poúrednictwem diody D3.
W†zwi¹zku z†tym napiÍcie zasila-
nia procesora jest zmniejszone
o†ok. 0,6V i†wynosi tylko ok.
4,4VDC. Co spowodowa³o zastoso-
58
bit parzystości dla bitów 36−57.
59
brak impulsu.
34
Elektronika Praktyczna 6/2001
32193395.052.png
Programowany zegar z DCF77
List. 2.
Multiplexing:
'Po zgłoszeniu przerwania timera0 wykonane zostaną następujące czynności:
Porta = 0 'wstępne ustawienie portu A w stan niski
Portc = 255 'wstępne ustawienie portu C w stan wysoki
Incr Digit_number 'zwiększenie numeru kolejnego wyświetlacza (kolejnej pozycji dziesiętnej)
If Digit_number = 7 Then Digit_number = 1 'zamknięcie cyklu zliczania wyświetlaczy do modulo 6
Select Case Digit_number 'w zależności od numeru wyświetlacza
Case 1:
'dziesiątki sekund
Temp = Disp1 / 10 'obliczenie wartości cyfry, która ma zostać ukazana na pierwszym
'wyświetlaczu
Porta = Lookup(temp, 7segment)
'przekodowanie otrzymanej wartości na kod
'wyświetlacza siedmiosegmentowego
mywanych z†timera2. Od tego mo-
mentu mamy do dyspozycji, po-
dobnie jak w†starym QBASIC,
dwie zmienne g³Ûwne: TIME$
i†DATE$ oraz zmienne pomocni-
cze: _sec, _min, _hour, _day,
_month i†_year. Wszystkie czyn-
noúci zwi¹zane z†odliczaniem cza-
su, wyznaczaniem liczby dni mie-
siÍcy czy teø pilnowaniem ko-
lejnych lat przestÍpnych s¹ wy-
konywane odt¹d automatycznie,
a†podprogram RTC zajmuje w†pa-
miÍci procesora ok. 300B. Progra-
mowy RTC z BASCOM-a ma tylko
jedn¹ wadÍ, o†ktÛrej lojalnie in-
formuje nas Autor programu: za-
wiera w†sobie pluskwÍ, ktÛra da
znaÊ o†sobie w†roku 2101, gdyø
zostanie on zidentyfikowany jako
rok 2001. No cÛø, chyba niewiele
nas to obchodzi.
Reset Portc.1
'włączenie zasilania anod segmentów pierwszego wyświetlacza
Case 2:
'sekundy
Temp = Disp1 / 10
'obliczenie wartości cyfry, która ma zostać ukazana na pierwszym
'wyświetlaczu
Temp = Temp * 10
Temp = Disp1 - Temp
Porta = Lookup(temp, 7segment)
'przekodowanie otrzymanej wartości na kod
'wyświetlacza siedmiosegmentowego
Reset Portc.0
'włączenie zasilania anod segmentów pierwszego wyświetlacza
Case 3:
'dziesiątki minut
'konstrukcja programu analogiczna do dziesiątek sekund
Case 4:
'minuty
'konstrukcja programu analogiczna do sekund
Case 5:
'dziesiątki godzin
Temp = Disp3 / 10
Porta = Lookup(temp, 7segment)
If Dcf_receiving_flag = 1 Then Porta = Porta + 1
'jedno z wielu dodatkowych uwarunkowań umieszczonych w podprogramie obsługi
'wyświetlania multipleksowanego, omówione dla przykładu. Dodanie 1 do wartości
'wysyłanej do portu A powoduje migotanie kropki dziesiętnej, synchronicznie
'z odbieranymi impulsami kodu DCF.
Reset Portc.5
Case 6:
'godziny
'konstrukcja programu analogiczna do sekund
End Select
Return
'Przekodowywanie wartości na kod wyświetlacza siedmiosegmentowego odbywa się na podstawie
'danych zawartych w poniższej tabeli:
7segment:
Data 252, 96, 218, 242, 102, 182, 190, 224, 254, 246
WYKAZ ELEMENTÓW
Rezystory
RP1: R−PACK SIL10k
R9..R14, R19..R26: 3,3k
R15, R27, R28: 4,7k
R17, R18: 10k
Kondensatory
C1, C2: 27pF
C3, C5, C6: 100nF
C4: 100
katalogowej, gdzie firma ATMEL
umieúci³a rozbrajaj¹c¹ uwagÍ:
ì(..) When using an external
32 kHz crystal as asynchronous
clock source for Timer2, the timer
may count incorrectly at voltages
above 4.0V. Keep the supply
voltage below 4.0V when clocking
Timer2 from an external crystal.
(..)î , z ktÛrej wynika, øe przy
kwarcu 32kHz napiÍcie zasilania
powinno byÊ mniejsze niø 4V.
Nie wnikam w to, dlaczego
generator kwarcowy 32768Hz przy
zasilaniu procesora napiÍciem
wiÍkszym od 4V dzia³a nieprawi-
d³owo. Waøne jest tylko to, øe
obniøenie napiÍcia o†0,6V spowo-
dowa³o natychmiastowe usuniÍcie
problemÛw ze sprzÍtowym RTC.
Jeøeli juø procesor jest zasilany
poprzez diodÍ separuj¹c¹ go od
reszty uk³adu, to nic prostszego
jak zapewniÊ mu zasilanie awa-
ryjne, ktÛre moøna do³¹czyÊ do
z³¹cza CON4.
Aby poznaÊ dzia³anie zegara,
naleøy przeúledziÊ steruj¹cy nim
program.
Zacznijmy od najprostszej fun-
kcji, jak¹ jest zwyk³e wskazywa-
nie aktualnego czasu, na razie bez
omawiania sposobu synchronizo-
wania go z†sygna³em DCF77. Aby
zbudowaÊ metodami programis-
tycznymi zegar czasu rzeczywis-
tego, zwykle musimy siÍ trochÍ
pomÍczyÊ. Musimy obliczyÊ war-
toúÊ, ktÛr¹ bÍdzie prze³adowywa-
ny timer odpowiedzialny za od-
mierzanie czasu, przygotowaÊ pro-
cedurÍ obs³ugi przerwania, w†ktÛ-
rej zliczane bÍd¹ sekundy i mi-
nuty okreúlaj¹ce up³ywaj¹cy czas.
Oprogramowanie zegara zosta³o
napisane w†jÍzyku MCS BASIC,
w†ktÛrym taki sposÛb tworzenia
programowego RTC by³by zbyt
nieudolny. A†zatem wystarczy tyl-
ko napisaÊ:
F/10V
F/16V
Półprzewodniki
D1: 1N4007
D2..D6: 1N4148
DP1..DP6: wyświetlacz siedmioseg−
mentowy LED wsp. anoda
IC1: ULN2803
IC2: AT90S8535
IC3: 7805
IC4: DS1813
T1..T6: BC557
T7..T9: BC548
Różne
Q1: rezonator kwarcowy 8MHz
Q2: rezonator kwarcowy 32768Hz
Q3: przetwornik piezoelektryczny
z generatorem
CON1, CON2: goldpin kątowy
22pin
CON3, CON4: ARK2 (3,5mm)
CON5: gniazdko zasilania
CON6: DB9/M lutowane w płytkę
CON7, CON8: ARK3
CON10: 4 x goldpin
RL1, RL2: RM96/12V
S1..S6: microswitch
Config Clock = Soft,
Gosub = Sectic
aby poinstruowaÊ kompilator o†ko-
niecznoúci utworzenia w†progra-
mie zegara RTC, ktÛrego dzia³anie
oparte jest na przerwaniach otrzy-
Elektronika Praktyczna 6/2001
35
R1..R8: 47
R16: 1k
C7: 1000
32193395.053.png
Zgłoś jeśli naruszono regulamin