[ Pobierz całość w formacie PDF ]
K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 11
Nawet najprostsze mikrokontrolery '51 moøna wykorzystaÊ do
pomiaru wielkoúci analogowych (co prawda niezbyt dok³adnie)
i†pomiaru czasu (z tym jest znacznie lepiej). Ponadto,
stosunkowo prostymi zabiegami moøna zwiÍkszyÊ pojemnoúÊ
pamiÍci danych i†programu. O†tym, jak ìopanowaÊî te
typowe problemy piszemy w†artykule.
Komparator analogowy
mikrokontrolerÛw 89Cx051
DwudziestonÛøkowe mikrokontro-
lery firmy Atmel s¹ wyposaøone
w†wewnÍtrzny komparator analogo-
wy, ktÛrego wejúcia s¹ dostÍpne na
wyprowadzeniach linii portu P1.0
(ì+î) i†P1.1 (ì-î). W†celu zapewnie-
nia odpowiednio duøej impedancji
wejúciowej linie te s¹ pozbawione
wewnÍtrznych rezystorÛw podci¹ga-
j¹cych. Wejúciowy pr¹d up³ywu
komparatora, wed³ug danych produ-
centa, nie przekracza 10
µ
podawane na wyprowa-
dzenia P1.0 i†P1.1 musz¹
mieúciÊ siÍ w†przedziale wartoúci
napiÍcia zasilania (pomiÍdzy GND
a†Vcc). Stan wyjúcia komparatora
(poziom wysoki lub niski) jest za-
leøny od wartoúci podanego na je-
go wejúcie napiÍcia, i†moøna go od-
czytaÊ jedynie programowo poprzez
odczyt linii portu P3.6 (ktÛra nie
jest wyprowadzona na zewn¹trz). Je-
dynka odczytana z†portu P3.6 ozna-
cza, øe napiÍcie na wyprowadzeniu
P1.0 jest wiÍksze od napiÍcia na
wyprowadzeniu P1.1. Aby korzystaÊ
z†komparatora, naleøy spe³niÊ te sa-
me warunki co przy wykorzystywa-
niu linii portÛw jako wejúÊ - linie
P1.0 i†P1.1 musz¹ byÊ programowo
ustawione w†stan 1†(o ile ich stan
zosta³ zmieniony po zerowaniu mik-
rokontrolera).
WewnÍtrzny komparator bywa
czÍsto wykorzystywany w†urz¹dze-
niach cyfrowo-analogowych, gdy za-
chodzi potrzeba okreúlenia wzajem-
nej zaleønoúci (wiÍkszy-mniejszy)
dwÛch sygna³Ûw†analogowych i†prze-
kazania tej informacji do mikrokon-
trolera. W†przypadku, gdy chcemy
przekazaÊ do mikrokontrolera infor-
macjÍ o†wartoúci napiÍcia sygna³u
analogowego, wÛwczas konieczne
jest wykorzystanie przetwornika
analogowo-cyfrowego. Jeøeli nie
chcemy wykorzystywaÊ øadnego spe-
cjalizowanego uk³adu scalonego, to
do tego celu rÛwnieø moøemy uøyÊ
wbudowanego komparatora, stosuj¹c
uk³ad jak na
rys. 35
. W tym
uk³adzie jest ürÛd³o napiÍcia naras-
taj¹cego quasi liniowo (R i†C), ktÛ-
re jest doprowadzone do jednego
z†wyprowadzeÒ komparatora i†po-
rÛwnywane z†napiÍciem wejúcio-
wym. Dodatkowym elementem
powoduj¹cym roz³adowywanie kon-
densatora jest wewnÍtrzny tranzys-
tor mikrokontrolera zwieraj¹cy liniÍ
portu P1.0 do masy.
Przetwornik dzia³a w†nastÍpuj¹cy
sposÛb: po wpisaniu ì1î na liniÍ
portu P1.0 tranzystor wyjúciowy te-
go portu zostaje zatkany i†rozpoczy-
na siÍ ³adowanie kondensatora
C†poprzez rezystor R. RÛwnoczeúnie
List. 15
;;Blok inicjalizacji programu głównego
MOV TMOD,#010H
;Będziemy korzystać z licznika T1 w trybie 1
CLR P1.0
;rozładowanie kondensatora
{dalszy ciąg programu}
;;procedura przetwornika A/C
;;zwraca liczbę 16-bitową zawierającą 15-bitowy wynik pomiaru
;;(najstarszy bit równy 0) do zmiennych AC_H i AC_L
PRZETWORNIK:
MOV TL1,#0
;wyzerowanie
MOV TH1,#0
;licznika
SETB P1.0
;rozpoczęcie procesu ładowania C
SETB TR1
;i włączenie licznika
JNB P3.6,$
;czekaj dopóki komparator w stanie niskim
CLR TR1
;zatrzymaj licznik
CLR P1.0
;rozładuj kondensator
CLR C
;wyzeruj znacznik przeniesienia
MOV A,TH1
;starszy bajt licznika do akumulatora
RLC A
;przesuń w lewo przez znacznik przeniesienia
MOV AC_H,A
;zapamiętaj starsze 7 bitów
MOV A,TL1
;młodszy bajt licznika do akumulatora
RLC A
;przesuń w lewo przez znacznik przeniesienia
MOV AC_L,A
;zapamiętaj młodsze 8 bitów
RET
;powrót do programu głównego
Rys. 35
106
Elektronika Praktyczna 1/2004
A, nato-
miast napiÍcie niezrÛwnowaøenia
jest mniejsze od 20 mV. NapiÍcia
K U R S
Rys. 36
programowo zostaje uruchomiony
wewnÍtrzny licznik mikrokontrolera.
Po czasie potrzebnym na na³adowa-
nie kondensatora do wartoúci napiÍ-
cia rÛwnej napiÍciu wejúciowemu
nastÍpuje zmiana stanu na wyjúciu
komparatora, co wykorzystujemy do
zatrzymania licznika. Licznik po
zatrzymaniu zawiera liczbÍ zliczo-
nych impulsÛw proporcjonaln¹ do
wartoúci napiÍcia U
we
. Po pomiarze
naleøy roz³adowaÊ kondensator
(wpisanie ì0î do P1.0) i†moøna roz-
pocz¹Ê kolejny cykl pomiarowy.
Na
list. 15
przedstawiono pro-
cedurÍ realizuj¹c¹ 15-bitowy prze-
twornik A/C. Na pierwszy rzut oka
moøe bezsensownym wydawaÊ siÍ
ignorowanie najmniej znacz¹cego
bitu zawartoúci licznika (wskutek
przesuniÍcia zliczonej zawartoúci
o†1†bit w†lewo), jednak po analizie
listingu widaÊ, øe ma to sens, po-
niewaø instrukcja sprawdzaj¹ca stan
komparatora JNB P3.6,$ jako in-
strukcja skoku wykonuje siÍ przez
dwa cykle maszynowe. Stan kom-
paratora jest wiÍc sprawdzany
z†czÍstotliwoúci¹ o†po³owÍ mniejsz¹
niø czÍstotliwoúÊ cykli maszyno-
wych, co powoduje, øe najmniej-
szej wykrywalnej rÛønicy napiÍÊ
dwÛch kolejnych pomiarÛw odpo-
wiadaÊ bÍd¹ stany licznika rÛøni¹-
ce siÍ w³aúnie o†dwa cykle -
najmniej znacz¹cy bit nie bÍdzie
siÍ wiÍc zmienia³ (tzn. nie da siÍ
wykryÊ zmiany), za kaødym razem
bÍdzie przyjmowa³ stan 0†lub 1†(ale
ci¹gle ten sam, zaleøny od kolej-
noúci instrukcji w†programie prze-
twornika). Dlatego w†celu uzyskania
zmiany na najm³odszym bicie na-
leøy wynik podzieliÊ przez dwa -
co jest rÛwnoznaczne z†przesuniÍ-
ciem w†lewo o†1†bit.
Jeøeli zajdzie potrzeba zwiÍksze-
nia rozdzielczoúci przetwornika, to
moøna wykorzystaÊ przerwania licz-
nika i†po kaødym wywo³aniu pro-
gramu obs³ugi przerwania zwiÍkszaÊ
o†jeden zewnÍtrzn¹ zmienn¹. W†ten
sposÛb moøna zwiÍkszaÊ rozdziel-
czoúÊ w†nieskoÒczonoúÊ, jednak
praktycznym ograniczeniem jest czas
pomiaru oraz dok³adnoúÊ kompara-
tora i†uøytych elementÛw. Rozdziel-
czoúÊ moøliwa do uzyskania przy
uøyciu samego timera jest i†tak
wiÍksza niø dok³adnoúÊ wbudowa-
nego komparatora, co powoduje ko-
niecznoúÊ jego kalibracji oddzielnie
dla kaødego egzemplarza mikrokon-
trolera.
Uk³ad o schemacie z rys. 35
dzia³a poprawnie do napiÍcia wej-
úciowego w†zakresie od 0,3 V†do
po³owy napiÍcia zasilania. Powyøej
tej wartoúci silnie zaznacza siÍ nie-
Elektronika Praktyczna 1/2004
107
K U R S
List. 16
;;Odczyt stanów linii układu U4 (adres 0xB000)
MOV DPTR,#0B000H ;wpis adresu do rejestru indeksowego
CLR A
;wyzerowanie akumulatora
a†ograniczeniem gÛrnym jest liczba
moøliwych do uøycia linii adreso-
wych (choÊ i†to ograniczenie moø-
na wyeliminowaÊ przez do³¹czenie
dodatkowych uk³adÛw logicznych
tworz¹cych dekoder adresu). Odczyt
stanu linii na wejúciach konkretne-
go bufora wymaga wykonania od-
czytu z†pamiÍci programu (aktywa-
cja linii PSEN) spod odpowiednie-
go adresu (poziom niski pojawiaj¹-
cy siÍ na liniach A14, A13 lub
A12). Waøne jest, aby podawany
adres nie powodowa³ jednoczesne-
go wyzerowania kilku linii obs³u-
guj¹cych bufory, gdyø spowoduje to
wyst¹pienie konfliktu na magistrali.
Naleøy teø pamiÍtaÊ, aby adres ten
by³ wyøszy niø maksymalny moøli-
wy adres wewnÍtrznej pamiÍci pro-
gramu, gdyø tylko wtedy uk³ad ste-
rowania mikrokontrolera prze³¹czy
siÍ na odczyt pamiÍci zewnÍtrznej.
Ci¹g instrukcji pozwalaj¹cy na od-
czyt stanu poszczegÛlnych buforÛw
przedstawiono na
list. 16
.
Po dodaniu do prezentowanego
uk³adu kolejnych zatrzaskÛw (np.
74LS573) oraz dodatkowego uk³adu
logicznego moøliwe jest rÛwnieø
zbudowanie portu wyjúciowego (sy-
muluj¹cego pamiÍÊ danych). Zasto-
sowanie uk³adu buforÛw dwukierun-
kowych umoøliwi budowÍ portu
dwukierunkowego.
Naleøy zwrÛciÊ uwagÍ, øe pre-
zentowany sposÛb, choÊ powszech-
nie stosowany w†sytuacjach nie-
doboru portÛw wyjúciowych mikro-
kontrolera wskutek do³¹czenia pa-
miÍci zewnÍtrznej, nie ma sensu
w†przypadku nie instalowania takiej
pamiÍci.
MOVC A,@A+DPTR
;odczyt z pamięci programu o adresie z DPTR
; stan linii wejściowych U4 pojawia się w A
;;Pozostałe układy odczytujemy identycznie, wpisując odpowiedni adres do DPTR
liniowoúÊ charakterystyki ³adowania
kondensatora ze ürÛd³a napiÍ-
ciowego (pr¹d nie jest sta³y), nato-
miast poniøej 0,3 V†moøe byÊ od-
czuwalny wp³yw napiÍcia odk³ada-
j¹cego siÍ na tranzystorze roz³ado-
wuj¹cym. Dok³adnoúÊ pomiaru moø-
na polepszyÊ stosuj¹c ³adowanie
kondensatora ze ürÛd³a pr¹dowego
(liniowoúÊ charakterystyki ³adowania
w†czasie) oraz dobudowuj¹c obwÛd
roz³adowania kondensatora z†zewnÍt-
rznym tranzystorem, najlepiej typu
MOSFET o†ma³ej rezystancji otwar-
tego kana³u (zejúcie jak najbliøej
wartoúci 0†V).
Wartoúci elementÛw R†i†C†(czy
ürÛd³a pr¹dowego) nie wp³ywaj¹ na
dok³adnoúÊ pomiaru, waøne jest je-
dynie uøycie elementÛw o†dobrej
stabilnoúci czasowej i†temperaturo-
wej w†celu uzyskania powtarzalnoú-
ci wynikÛw pomiarÛw. Jeøeli
w†uk³adzie jest uøyty mikrokontro-
ler 89C5x nieposiadaj¹cy wbudowa-
nego komparatora, to przetwornik
A/C moøemy zbudowaÊ dodaj¹c ze-
wnÍtrzny komparator. Najlepiej do
tego celu nadaj¹ siÍ niskonapiÍcio-
we (niskie, pojedyncze napiÍcie za-
silania) wzmacniacze operacyjne
rail-to-rail
(waøne ze wzglÍdu na
zakres pomiarowy). Uzyska siÍ wte-
dy rÛwnieø o†wiele lepsze paramet-
ry niø przy wykorzystaniu kompa-
ratora wbudowanego.
Na
rys. 36
przedstawiono sche-
mat uk³adu z†zewnÍtrzn¹ pamiÍci¹
danych oraz z†dodatkowymi porta-
mi wejúciowymi ìudaj¹cymiî ze-
wnÍtrzn¹ pamiÍÊ programu.
Uk³ad dzia³a nastÍpuj¹co: mik-
rokontroler U1 wspÛ³pracuje ze
standardowo do³¹czonym uk³adem
zatrzasku mniej znacz¹cej po³Ûwki
adresu U2 (74LS573). Przy dostÍ-
pie do pamiÍci zewnÍtrznej port
P0 dzia³a inaczej niø podczas pra-
cy typowej i†nie wymaga stosowa-
nia rezystorÛw podci¹gaj¹cych. Za-
trzaúniÍta po³Ûwka adresu wraz
z†doprowadzonymi bezpoúrednio
z†mikrokontrolera siedmioma kolej-
nymi liniami adresowymi jest do-
prowadzona do uk³adu pamiÍci
RAM 62256 (32 kB pojemnoúci).
Do pamiÍci doprowadzone s¹ rÛw-
nieø wygna³y steruj¹ce zapisem
i†odczytem. Uk³ad jest uaktywnia-
ny tylko wtedy, gdy na linii adre-
sowej A15 (P2.7) wystÍpuje poziom
niski (dostÍp do pierwszych 32kB
pamiÍci). Wraz z†pamiÍci¹ do szy-
ny danych mikrokontrolera do³¹czo-
ne s¹ trzy uk³ady wzmacniaczy bu-
forowych (U4, U5, U6 - 74LS541),
ktÛrych wejúcia stanowi¹ dodatko-
we linie wejúciowe systemu. Oczy-
wiúcie takich buforÛw moøe byÊ
do³¹czonych wiÍcej lub mniej - ich
liczba zaleøy wy³¹cznie od potrzeb,
Obs³uga pamiÍci zewnÍtrznej
Mikrokontrolery 89C5x, podobnie
jak 8051, umoøliwiaj¹ wspÛ³pracÍ
z†zewnÍtrzn¹ pamiÍci¹ danych i†pro-
gramu. Do³¹czenie zewnÍtrznej pa-
miÍci danych jest stosowane
w†przypadku programÛw wykonuj¹-
cych operacje na duøych zbiorach
liczb niemieszcz¹cych siÍ w†pamiÍ-
ci wewnÍtrznej. ChoÊ do³¹czanie ze-
wnÍtrznej pamiÍci programu wydaje
siÍ zbÍdne ze wzglÍdu na wbudo-
wan¹ w†mikrokontrolery Atmel
(a†takøe w†mikrokontrolery innych
producentÛw) pamiÍÊ Flash (chyba
øe okaøe siÍ ona za ma³a), to jed-
nak moøliwoúci, jakie daje utworze-
nie systemowych szyn danych, ad-
resu i†steruj¹cej mog¹ byÊ z†powo-
dzeniem wykorzystane do komuni-
kacji z†innymi uk³adami.
Rys. 37
108
Elektronika Praktyczna 1/2004
K U R S
WÛwczas moøna zastosowaÊ roz-
wi¹zania bazuj¹ce na standardowej
obs³udze portÛw, np. traktuj¹c port
P0 jako magistralÍ danych, a†port
P1 czy inny jako magistralÍ adreso-
wo/steruj¹c¹. Pozwala to na ³atwiej-
sze i†efektywniejsze pisanie progra-
mu (eliminacja czasoch³onnych in-
strukcji MOV DPTR,#... czy MOVC
lub MOVX). OszczÍdza teø linie
portÛw†mikrokontrolera, gdyø na ob-
s³ugÍ takiej realizowanej programo-
wo magistrali systemowej przezna-
czamy tyle linii portÛw, ile na-
prawdÍ potrzeba (zamiast dwÛch
pe³nych portÛw†P0 i†P2 i†kilku linii
dodatkowych.
List. 17
;;;Inicjacja liczników
MOV TMOD,#025H
;T1 - timer, tryb 2, T0 - licznik, tryb 1
MOV TH1,#6
;wartość początkowa po przeładowaniu T1
CLR STOP
;zerowanie bitu informującego o końcu pomiaru
SETB EA
;włączenie układu przerwań
SETB ET1
;włączenie przerwania timera T1
CLR P3.3
;blokada zliczania
CLR P3.2
;zwolnienie resetu
SETB TR0
;włączenie zliczania T0 (działa blokada zewnętrzna)
{......}
;;procedura pomiaru częstotliwości
POMIAR:
MOV DZIEL1,#200
;inicjacja dodatkowych
MOV DZIEL2,#20
;dzielników częstotliwości (czas pomiaru 1s)
MOV TH0,#0
;inicjacja
MOV TL0,#0
;wartości początkowych
MOV TL1,#6
;liczników
SETB P3.2
;zerowanie liczników
CLR P3.2
;zewnętrznych
Zliczanie impulsÛw
zewnÍtrznych przez
wewnÍtrzne liczniki
Wbudowane w†mikrokontrolery
'51 liczniki T0 i†T1 (oraz T2
w†wersji '52) zazwyczaj bywaj¹ uøy-
wane jako timery, tzn. zliczaj¹ im-
pulsy o†czÍstotliwoúci cyklu maszy-
nowego mikrokontrolera. Czasami
przydatne jest wykorzystanie tych
licznikÛw do zliczania impulsÛw
doprowadzonych z†zewn¹trz do wy-
prowadzeÒ mikrokontrolera, oznaczo-
nych jako T0, T1 i†T2 (odpowied-
nio dla kolejnych licznikÛw). Wej-
úcia te staj¹ siÍ ürÛd³em impul-
sÛw†zliczanych przez liczniki po
ustawieniu (poziom wysoki) bitÛw
C/T rejestru TMOD (C/T2 rejestru
T2CON dla '52). ZwiÍkszanie zawar-
toúci danego licznika odbywa siÍ
przy wyst¹pieniu zbocza opadaj¹ce-
go na odpowiadaj¹cym mu wejúciu.
Zliczanie impulsÛw zewnÍtrznych
ma pewne ograniczenia czÍstotliwoú-
ciowe. Stany linii T0, T1 i†T2 od-
czytywane s¹ synchronicznie z†cyk-
lem maszynowym mikrokontrolera,
a†wykrycie zbocza opadaj¹cego
(zwiÍkszenie zawartoúci licznika)
wymaga wykrycia poziomu wysokie-
go w†jednym cyklu i†niskiego
w†drugim. St¹d maksymalna czÍstot-
liwoúÊ sygna³u o†wype³nieniu 50%
doprowadzonego do zewnÍtrznych
wejúÊ licznikÛw musi byÊ mniejsza
niø 1/24 czÍstotliwoúci taktowania
procesora (co daje czÍstotliwoúÊ zli-
czanych impulsÛw 1†MHz przy za-
stosowaniu kwarcu 24 MHz). Jeøeli
wspÛ³czynnik wype³nienia by³by
rÛøny od 50%, wÛwczas decyduje
czas trwania krÛtszej fazy - co naj-
mniej 12 taktÛw zegara (1 cykl ma-
szynowy).
W oparciu o zliczanie impulsÛw
zewnÍtrznych (w okreúlonej bramce
czasowej) dzia³aj¹ wszystkie cyfro-
CLR STOP
;wyzerowanie bitu STOP
SETB P3.3
;włączenie bramki
SETB TR1
;włączenie licznika T1
JNB STOP,$
;oczekiwanie na zakończenie pomiaru
CLR TR1
;wyłączenie licznika T1
MOV WYNIK1,P1
;zapamiętanie pierwszego bajtu wyniku
MOV WYNIK2,TL0
;zapamiętanie drugiego bajtu wyniku
MOV WYNIK3,TH0
;zapamiętanie drugiego bajtu wyniku
RET
;powrót do programu głównego
;;;obsługa przerwania licznika T1
INT_T1:
PUSH PSW ;zachowanie PSW na stosie
DJNZ DZIEL1,DALEJ ;zmniejszenie zawartości dzielnika
;i skok jeżeli nie zero
MOV DZIEL1,#200 ;inicjacja zawartości dzielnika
DJNZ DZIEL2,DALEJ ;zmniejszenie zawartości drugiego dzielnika
;i skok jeżeli nie zero
CLR P3.3
;wyłączenie bramki
SETB STOP
;ustawienie bitu STOP (minęła 1 sekunda)
DALEJ1:
POP PSW
;pobranie PSW ze stosu
RETI
;powrót do programu głównego
we czÍstoúciomierze. Nic zatem nie
stoi na przeszkodzie, aby taki czÍs-
toúciomierz zbudowaÊ w†oparciu
o†mikrokontroler '51.
Schemat jednej z†najprostszej re-
alizacji takiego przyrz¹du mierz¹ce-
go czÍstotliwoúÊ przedstawiono na
rys. 37
. Zawiera jedynie elementy
zwi¹zane z†pomiarem czÍstotliwoúci
- aby uzyskaÊ gotowy przyrz¹d, na-
leøa³oby do³¹czyÊ przynajmniej
uk³ad wyúwietlacza lub komunika-
cji z†PC i†odpowiednio go oprogra-
mowaÊ.
G³Ûwnym elementem czÍstoúcio-
mierza jest oczywiúcie mikrokontro-
ler, ktÛry realizuje program steruj¹-
cy pomiarem oraz wykorzystuje
wbudowany licznik T0 do zliczania
impulsÛw zewnÍtrznych. W†celu
zwiÍkszenia maksymalnej wartoúci
mierzonej czÍstotliwoúci, przed wej-
úciem licznika T0 w³¹czono 8-bito-
wy licznik binarny zbudowany
z†dwÛch uk³adÛw 7493. Wyjúcia te-
go licznika do³¹czone s¹ do portu
P1, co umoøliwia odczyt ich zawar-
toúci. Przed wejúciem licznika 7493
w³¹czono wzmacniacz zbudowany
na tranzystorze bipolarnym, co po-
zwala na uzyskanie czu³oúci rzÍdu
kilkuset mV. Dioda D1 zabezpiecza
przed ujemnymi po³Ûwkami
napiÍcia doprowadzonego sygna³u.
Sygna³ z†tranzystora jest z†sygna³em
z†linii P3.3 po³¹czony galwanicznie
(iloczyn ìna drucieî), co umoøliwia
bramkowanie wejúcia licznika. Mik-
rokontroler generuje sygna³ zerowa-
nia zewnÍtrznych licznikÛw na li-
nii P3.2. Na
list. 17
przedstawiono
program realizuj¹cy pomiar czÍstot-
liwoúci z†wykorzystaniem licznika
T1 jako generatora podstawy czasu
(bramki czasowej). Ustawienia rejes-
trÛw licznika obliczono dla czÍstot-
liwoúci kwarcu 12 MHz.
Program dzia³a nastÍpuj¹co: po
inicjacji licznikÛw mikrokontrolera
wejúcie do procedury pomiaru czÍs-
totliwoúci powoduje wyzerowanie
licznika impulsÛw zewnÍtrznych
Elektronika Praktyczna 1/2004
109
K U R S
(T0), zainicjowanie wartoúci pocz¹t-
kowej licznika (timera) podstawy
czasu (bramki czasowej T1) oraz
wspÛ³pracuj¹cych z†nim komÛrek
pamiÍci wykorzystywanych do prze-
chowywania stanu dodatkowych
dzielnikÛw†koniecznych do uzyska-
nia czasu bramkowania rÛwnego
jednej sekundzie (ze wzglÍdu na
zbyt ma³¹ pojemnoúÊ licznika). Wy-
konywane jest rÛwnieø zerowanie
licznikÛw zewnÍtrznych (impulsem
wygenerowanym na P3.2). Po tym
nastÍpuje odblokowanie bramki (li-
nia P3.3) i†w³¹czenie odmierzania
czasu impulsu bramkuj¹cego (w³¹-
czenie timera T1). Pomiar przepro-
wadzany jest do czasu, aø poprzez
procedurÍ obs³ugi przerwania zosta-
nie ustawiony bit STOP. WÛwczas
nastÍpuje zablokowanie bramki
i†licznika czasu bramkuj¹cego oraz
zapamiÍtanie wyniku pomiaru zarÛ-
wno z†licznikÛw zewnÍtrznych, jak
i†licznika wewnÍtrznego.
Pomiar trwa jedn¹ sekundÍ.
Maksymalna mierzona czÍstotliwoúÊ
zaleøy od szybkoúci zastosowanych
licznikÛw zewnÍtrznych (podzia³
przez 256 umoøliwia prawid³ow¹
pracÍ licznika wewnÍtrznego do
czÍstotliwoúci wejúciowych ponad
100 MHz), z†tym øe w†przedstawio-
nym programie czÍstotliwoúÊ mie-
rzona jest w†24-bitowym liczniku
(16 bitÛw licznika wewnÍtrznego
i†8†zewnÍtrznego), co pozwala na
przedstawienie z†rozdzielczoúci¹
1†Hz maksymalnej czÍstotliwoúci
rÛwnej 16777215 Hz (ponad
16†MHz). W†celu zwiÍkszenia d³u-
goúci licznika naleøa³oby wykorzys-
taÊ flagÍ przepe³nienia licznika TF0
(lub procedurÍ obs³ugi przerwania)
i†zrealizowaÊ dodatkowy licznik
programowy - dodanie zmiennej 8-
bitowej utworzy³oby licznik 32-bi-
towy, ktÛrego pojemnoúÊ przekracza
juø†moøliwoúci sprzÍtu (taki licznik
przepe³nia³by siÍ w czasie 1 s
przy czÍstotliwoúci ponad 4†GHz).
Przedstawiona procedura pomiaru
nie uwzglÍdnia b³ÍdÛw zwi¹zanych
ze skoÒczonym czasem wykonywa-
nia siÍ instrukcji w†momentach
uruchamiania i†zatrzymywania pro-
cedury pomiarowej - bezwzglÍdna
wartoúÊ b³Ídu wzrasta wraz z†war-
toúci¹ mierzonej czÍstotliwoúci, co
w†przypadku dok³adnych pomiarÛw
powinno byÊ uwzglÍdnione w po-
staci poprawki wprowadzanej do
wyniku.
Moøliwe jest teø wykorzystanie
wyprowadzenia P3.3/INT1 jako ste-
ruj¹cego prac¹ licznika T1 (ustawie-
nie bitu GATE w†rejestrze TMOD
dla licznika T1) i†do³¹czenie go do
linii steruj¹cej sygna³em bramkowa-
nia (konieczna zmiana funkcji wy-
prowadzeÒ) - powoduje to jednak
zwiÍkszenie zapotrzebowania uk³adu
o†jedno wyprowadzenie mikrokontro-
lera, co moøe nie byÊ bez znacze-
nia w†przypadku ìma³ychî Atmeli.
W†takiej konfiguracji bit TR1 usta-
wiamy na sta³e na ì1î, a†licznik T0
jest synchronizowany z bramki
czasowej, co zmniejsza b³Ídy zwi¹-
zane z†sekwencyjnym, a†nie jedno-
czesnym wykonaniem instrukcji w³¹-
czenia licznika i†w³¹czenia bramki.
Pawe³ Hadam, EP
pawel.hadam@ep.com.pl
110
Elektronika Praktyczna 1/2004
[ Pobierz całość w formacie PDF ]