Podstawy projektowania systemów mikroprocesorowych, cz. 3.pdf
(
184 KB
)
Pobierz
Podstawy projektowania systemów mikroprocesorowych, część 3
K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 3
W†trzeciej czÍúci artyku³u przedstawiamy podstawowe zagadnienia
zwi¹zane z†obs³ug¹ programowanych portÛw wejúÊ-wyjúÊ
w†mikrokontrolerach '51. Jak dowodz¹ otrzymywane przez nas pytania,
tematyka ta jest s³abo znana i†nie zawsze wystarczaj¹co dog³Íbnie
poruszana w†opisach naszych projektÛw. Zatem nadrabiamy!
Wykorzystanie portÛw we/wy
mikrokontrolera
Nawet najdoskonalszy mikroprocesor
bÍdzie jedynie mniej lub bardziej sku-
teczn¹ grza³k¹, jeúli nie pod³¹czymy do
niego øadnych urz¹dzeÒ zewnÍtrznych,
ktÛre umoøliwi¹ uøytkownikowi komu-
nikacjÍ z†uk³adem. W†mikrokontrolerach
rodziny 51 do realizacji takich po³¹-
czeÒ s³uø¹ porty, ktÛre s¹ wyprowadze-
niami pogrupowanymi najczÍúciej po
8†linii, mog¹cymi s³uøyÊ jako wejúcia
lub wyjúcia sygna³Ûw cyfrowych. Mik-
rokontrolery AT89C5x posiadaj¹ cztery
takie porty (o oznaczeniach od P0 do
P3), natomiast mniejsze mikrokontrole-
ry AT89Cx051 posiadaj¹ dwa porty (P1
i†P3). Kaøde wyprowadzenie dowolnego
portu moøe byÊ traktowane jako poje-
dyncza linia - wtedy do oznaczenia
portu dodajemy numer linii: na przy-
k³ad P1.4 oznacza pi¹t¹ liniÍ (numera-
cja od zera) portu 1. Poza funkcj¹
standardowych linii wejúcia/wyjúcia nie-
ktÛre porty lub niektÛre ich wyprowa-
dzenia mog¹ pe³niÊ alternatywne funk-
cje - zostan¹ one omÛwione wraz
z†wykorzystuj¹cymi je uk³adami peryfe-
ryjnymi. Naleøy pamiÍtaÊ, øe prawid³o-
wa praca portu lub pojedynczej linii
jako wejúcie jest moøliwa jedynie po
programowym ustawieniu danego portu
(linii) w†stan 1†(np. uøywaj¹c instrukcji
MOV P1,#0FFH lub SETB P1.2 - odpo-
wiednio dla ca³ego portu P1 pracuj¹ce-
go jako wejúcie lub tylko jego pojedyn-
czej linii). Wszystkie linie ustawiane s¹
na ì1î w†wyniku zerowania mikrokon-
trolera, jeúli jednak bÍdziemy wykorzys-
tywaÊ dan¹ liniÍ zarÛwno jako wejúcie
jak i†wyjúcie, to niezbÍdne jest prze-
strzeganie tej regu³y i†ustawienie odpo-
wiednich linii w†trakcie wykorzystywa-
nia ich jako wejúcie.
W³aúciwoúci i†sposÛb wy-
korzystania portÛw przed-
stawimy na przyk³adzie
ìduøychî mikrokontrolerÛw
Atmel, ktÛre zgodne s¹ pod
wzglÍdem ich parametrÛw ze
swoim protoplast¹ - oryginalnym mik-
rokontrolerem 80C51 firmy Intel.
Port P0 sprawia najczÍúciej duøo
k³opotu pocz¹tkuj¹cym projektantom (za-
zwyczaj przy realizacji pierwszego pro-
jektu wykorzystuj¹cego taki mikrokontro-
ler), gdyø zapominaj¹ oni o†bardzo waø-
nej rzeczy - linie portu P0 pracuj¹cego
jako wejúcie/wyjúcie nie s¹ wyposaøone
w†rezystory podci¹gaj¹ce - s¹ standardo-
wymi wyjúciami typu otwarty dren.
CzÍsto win¹ za niepowodzenie w†prÛbie
wysy³ania lub odbioru danych z†portu
P0 obarczany jest ìuszkodzonyî mikro-
kontroler, gdy w†rzeczywistoúci uk³ad
jest jak najbardziej sprawny, a†jedyn¹
winÍ ponosi tutaj projektant, ktÛry nie
zadba³ o†prawid³ow¹ realizacjÍ uk³adu
sprzÍtowego. Na
rys. 9a
pokazano spo-
sÛb do³¹czenia do portu P0 obci¹øenia
sterowanego za poúrednictwem tranzys-
tora PNP. Nie zachodzi tutaj koniecz-
noúÊ stosowania rezystora podci¹gaj¹ce-
go liniÍ portu, gdyø ustawienie linii
w†stan wysoki powoduje w†rzeczywistoú-
ci wejúcie w†stan wysokiej impedancji
(brak rezystora podci¹gaj¹cego) i†przerwÍ
w†obwodzie bazy tranzystora (jego wy³¹-
czenie). Rezystor R1 ogranicza pr¹d ba-
zy do wartoúci bezpiecznych zarÛwno
dla mikrokontrolera jak i†dla tranzysto-
ra, i†powinien byÊ dobrany w†zaleønoúci
od wzmocnienia uøytego tranzystora
i†spodziewanego pr¹du obci¹øenia - aby
uzyskany pr¹d bazy wprowadzi³ tranzys-
tor w†nasycenie. Rezystor R2 nie jest
tutaj bezwzglÍdnie konieczny - przyspie-
sza on wyjúcie tranzystora z†nasycenia
i†szybsze jego wy³¹czenie, co moøe byÊ
przydatne przy duøych czÍstotliwoúciach
prze³¹czeÒ. Jeøeli chcemy stosowaÊ ste-
rowanie z†uøyciem tranzystorÛw NPN,
musimy zrealizowaÊ uk³ad z†
rys. 9b
.
Tutaj rezystor podci¹gaj¹cy R1 jest nie-
zbÍdny do podania wysokiego potencja-
³u na bazÍ tranzystora. Rezystor R2 nie
jest konieczny, zabezpiecza on jednak
wyjúcie mikrokontrolera przed uszkodze-
Rys. 9. Sposoby dołączania obciążeń różnego typu do wyjść mikrokontrolera
Elektronika Praktyczna 5/2003
85
K U R S
Rys. 10. Różne możliwości sterowania wejść mikrokontrolera
pr¹dowych portÛw: zarÛwno linie portu
P1 jak i†P3 mog¹ w†stanie niskim prze-
wodziÊ pr¹d do 20 mA, z†tym, øe we-
d³ug zaleceÒ producenta, ca³kowity pr¹d
wp³ywaj¹cy jednoczeúnie do wszystkich
wykorzystywanych linii portÛw nie po-
winien przekroczyÊ 80 mA - powyøej
tej wartoúci firma Atmel nie gwarantuje
deklarowanej wydajnoúci pr¹dowej. Pro-
ducent przewidzia³ moøliwoúÊ sterowa-
nia przez port P1 katodami wyúwietla-
czy LED, jednak takøe port 3†moøe
z†powodzeniem sterowaÊ diody LED pod
warunkiem zapewnienia sumarycznego
pr¹du wszystkich wyprowadzeÒ P1 i†P3
(bÍd¹cych w†stanie niskim) na poziomie
nie przewyøszaj¹cym 80 mA. W†stanie
wysokim porty maj¹ wydajnoúÊ tak¹ jak
porty w†ìduøychî Atmelach. Dodatkowo
trzeba pamiÍtaÊ, øe dwie linie portu P1:
P1.0 i†P1.1 nie posiadaj¹ wewnÍtrznych
rezystorÛw podci¹gaj¹cych, gdyø zak³Û-
ca³yby one pracÍ wewnÍtrznego kompa-
ratora pod³¹czonego to tych linii. Jeøeli
chcemy linie P1.0 i†P1.1 wykorzystywaÊ
jako zwyk³e we/wy cyfrowe, to naleøy
stosowaÊ zasady do³¹czania zewnÍt-
rznych urz¹dzeÒ takie jak w†przypadku
portu P0. W†spisie wyprowadzeÒ uk³a-
dÛw AT89Cx051 nie znajdziemy linii
P3.6 - linia ta jest wewnÍtrznie po³¹-
czona z†wyjúciem komparatora i†moøe
byÊ tylko odczytywana (stan odzwier-
ciedla stan komparatora).
Przedstawiony wyøej problem stoso-
wania rezystorÛw podci¹gaj¹cych to tyl-
ko jeden z†wielu moøliwych b³ÍdÛw po-
pe³nianych przy pod³¹czaniu do mikro-
kontrolera uk³adÛw wspÛ³pracuj¹cych.
Na
rys. 11
,
12
,
13
i†
14
przedstawiono
najczÍúciej pope³niane b³Ídy konstrukcyj-
ne, ktÛre uniemoøliwiaj¹ poprawn¹ pra-
cÍ uk³adu lub pogarszaj¹ jego pewnoúÊ
dzia³ania. Rysunki oznaczone literami
a
przedstawiaj¹ b³Ídnie zaprojektowany
uk³ad, a†opisane jako
b
pokazuj¹ popra-
wne rozwi¹zanie lub sposÛb naprawy
b³Ídnie zaprojektowanego uk³adu.
Na
rys. 11a
przedstawiono uk³ad
sterowania tranzystorem PNP z†wyjúcia
mikrokontrolera wyposaøonego w†awaryj-
ny uk³ad zasilania. Po g³Íbszej analizie
³atwo zauwaøyÊ, øe uk³ad moøe dzia³aÊ
niestabilnie, objawiaj¹c siÍ nieca³kowi-
tym wy³¹czeniem tranzystora. NastÍpo-
wa³o to bÍdzie wskutek obecnoúci dio-
dy naleø¹cej do obwodu zasilania awa-
ryjnego. Wskutek spadku napiÍcia na tej
diodzie, napiÍcie wyjúciowe w†stanie
niem wskutek uszkodzenia tranzystora -
zwarcie w†tranzystorze w†obwodzie ko-
lektor-baza spowoduje pojawienie siÍ na-
piÍcia zasilaj¹cego obci¹øenie na wypro-
wadzeniu mikrokontrolera. NapiÍcie to
moøe byÊ wyøsze od napiÍcia zasilania
uk³adu mikrokontrolera, co moøe dopro-
wadziÊ do uszkodzenia napiÍciowego li-
nii lub - jeúli na danym wyprowadze-
niu bÍdzie stan niski - moøe dojúÊ do
przeci¹øenia pr¹dowego. Zastosowany re-
zystor ograniczy ten pr¹d oraz dzia³a³
bÍdzie jak dzielnik i†ograniczy napiÍcie
na wyprowadzeniu portu. Na
rys. 9c
przedstawiono sposÛb sterowania wej-
úciami cyfrowych uk³adÛw scalonych.
Dla uk³adÛw CMOS rezystor podci¹gaj¹-
cy jest niezbÍdny, natomiast dla uk³a-
dÛw TTL nie jest on konieczny, lecz
na pewno nie zaszkodzi (zw³aszcza, ze
ktoú w†urz¹dzeniu moøe zastosowaÊ od-
powiednik uk³adu wykonany w†techno-
logii CMOS). Port P0 moøe wysterowaÊ
wed³ug danych producenta do oúmiu
wejúÊ uk³adÛw TTL, co pozwala obci¹-
øyÊ kaød¹ koÒcÛwkÍ w†stanie niskim
pr¹dem oko³o 13 mA i†z†powodzeniem
wystarcza do sterowania diod¹ LED (jak
np. na
rys.†9d
).
Wykorzystuj¹c linie portu P0 jako
wejúcia musimy takøe rozwaøyÊ koniecz-
noúÊ zastosowania w†razie potrzeby re-
zystorÛw podci¹gaj¹cych. Rezystory takie
s¹ niezbÍdne jeøeli do mikrokontrolera
chcemy podpi¹Ê elementy stykowe lub
uk³ady cyfrowe (czy pojedyncze tranzys-
tory) pracuj¹ce z†wyjúciem typu otwarty
kolektor (dren). SytuacjÍ tak¹ przedsta-
wiono na
rys. 10a
). Wartoúci rezysto-
rÛw R1 i†R2 powinny byÊ tak dobrane,
aby nie przeci¹øaÊ wyjúÊ do³¹czonych
uk³adÛw. Zastosowany rezystor R4 za-
pewnia stan niski na wejúciu P0.4 gdy
przycisk SW1 jest zwolniony, natomiast
rezystor R3 zabezpiecza mikrokontroler
przed przypadkowym zwarciem mog¹-
cym nast¹piÊ, gdyby linia P0.4 zosta³a
wyzerowana programowo. Jak widaÊ
wciúniÍcie przyciskÛw SW1 i†SW2 wy-
wo³uje rÛøne stany na wejúciach mikro-
kontrolera - w†zaleønoúci od potrzeby
moøemy wywo³ywaÊ stan wysoki (SW1)
lub niski (SW2). RezystorÛw podci¹gaj¹-
cych nie musimy stosowaÊ gdy uk³ad
wspÛ³pracuje z†elementami posiadaj¹cymi
wyjúcia komplementarne (uk³ady cyfro-
we, komparatory), co pokazano na ry-
sunku 9b). Warto wspomnieÊ, øe port
P0 pracuj¹cy jako wejúcie bez zastoso-
wania rezystorÛw podci¹gaj¹cych posia-
da bardzo duø¹ impedancjÍ wejúciow¹
(zbliøon¹ do impedancji tranzystora
MOS), co umoøliwia sterowanie ze ürÛ-
de³ o†bardzo ma³ej wydajnoúci.
Pozosta³e porty mikrokontrolera (P1
do P3) poza faktem posiadania wewnÍt-
rznych rezystorÛw podci¹gaj¹cych (w
rzeczywistoúci s¹ to tranzystory MOS
pracuj¹ce jako ürÛd³a pr¹dowe - moøna
je traktowaÊ jako rezystory podci¹gaj¹-
ce o†wartoúci 50...100 k
Ω
Rys. 11. Przykłady błędnie zaprojektowanych wzmacniaczy wyjściowych
86
Elektronika Praktyczna 5/2003
), posiadaj¹
takøe mniejsz¹ wydajnoúÊ pr¹dow¹, od-
powiadaj¹c¹ wysterowaniu czterech
wejúÊ uk³adÛw TTL (maksymalny pr¹d
w†stanie niskim to oko³o 6,5 mA).
Schematy do³¹czeÒ uk³adÛw peryferyj-
nych nie rÛøni¹ siÍ od tych podanych
dla portu P0 (rys. 9†i†10), za wyj¹tkiem
braku koniecznoúci stosowania rezysto-
rÛw podci¹gaj¹cych.
Analizuj¹c w³aúciwoúci portÛw P1
i†P3, w†ktÛre s¹ wyposaøone mikrokont-
rolery AT89Cx051 naleøy przedstawiÊ
kilka istotnych rÛønic wp³ywaj¹cych na
sposÛb ich wykorzystania do obs³ugi
urz¹dzeÒ zewnÍtrznych. Przede wszyst-
kim naleøy wspomnieÊ o†w³aúciwoúciach
K U R S
Rys. 12. Kolejne przykłady błędnie zaprojektowanych obwodów wyjściowych
mniej kilkukrotnie) niø rezystor R1. Ta-
kie rozwi¹zanie nie posiada wady jak
poprzednie, ale konieczny jest dodatko-
wy (choÊ tani) element. Problem moø-
na rozwi¹zaÊ jeszcze inaczej, stosuj¹c
uk³ad z†
rys. 11d
. Zastosowano tutaj
uk³ad z†tranzystorem MOSFET, ktÛry
jest elementem sterowanym napiÍciowo
i†wartoúÊ rezystancji R1 nie odgrywa
tutaj znacz¹cej roli (przy ma³ych czÍs-
totliwoúciach prze³¹czeÒ). Rezystor R1
pe³ni tutaj funkcjÍ zabezpieczaj¹c¹ po-
dobnie jak na rys. 9b. Wad¹ takiego
rozwi¹zania jest nieco wyøsza niø
w†przypadku tranzystorÛw unipolarnych
cena tranzystorÛw MOSFET oraz fakt
doúÊ wysokiego napiÍcia progowego
tranzystora, co praktycznie uniemoøli-
wia stosowanie tego rozwi¹zania
w†uk³adach z†zasilaniem mikrokontrole-
ra napiÍciem niøszym niø 5†V.
Przy budowie nowych uk³adÛw
szczegÛln¹ uwagÍ projektanta powinien
zwrÛciÊ fakt do³¹czania do mikrokont-
rolera urz¹dzeÒ zasilanych innym (za-
zwyczaj wyøszym) napiÍciem. Niestety
takøe tutaj moøna pope³niÊ podstawo-
wy b³¹d uwidoczniony na
rys. 13a
.
W†uk³adzie tym wyjúcie mikrokontrole-
ra steruje uk³adem cyfrowym zasilanym
napiÍciem 12 V. Uk³ad nie bÍdzie
dzia³a³ z†bardzo prostego powodu -
w†uk³adach cyfrowych CMOS prÛg
prze³¹czania znajduje siÍ mniej wiÍcej
w†po³owie wartoúci napiÍcia zasilania,
co dla przedstawionego uk³adu wynie-
sie 6†V, czyli wiÍcej niø napiÍcie zasi-
lania mikrokontrolera. Wskutek tego do-
wolny stan logiczny poprawny z†punk-
tu widzenia napiÍÊ zasilania na pozio-
mie 5†V†bÍdzie przez wejúcie bramki
rozpoznawany stale jako stan niski. Pu-
³apk¹ czyhaj¹c¹ na projektanta jest fakt,
øe taki sam uk³ad, w†ktÛrym zamiast
12 V†zastosujemy zasilanie np. 9†V†mo-
øe dzia³aÊ - nie bÍdzie to jednak dzia-
³anie pewne i†rozwi¹zanie to moøe
wysokim nie bÍdzie mia³o wartoúci na-
piÍcia zasilania, lecz bÍdzie obniøone
o†0,6...0,8 V, co moøe doprowadziÊ do
przewodzenia z³¹cza baza-emiter tranzys-
tora i†jego otwarcie. Przy ma³ych pr¹-
dach obci¹øenia wystarczy to zapewne
do nasycenia tranzystora i†sytuacji,
w†ktÛrej nie bÍdzie moøna wy³¹czyÊ
programowo sterowanego w†ten sposÛb
urz¹dzenia. Rozwi¹zanie problemu moøe
przynieúÊ zamiana diody krzemowej na
diodÍ Schottky ego (mniejszy spadek
napiÍcia), lepiej jednak zastosowaÊ do-
datkowy rezystor R2 o†wartoúci mniej-
szej od R1, polaryzuj¹cy bazÍ tranzysto-
ra. Uk³ad taki przedstawiono na
rys.
11b
. Rezystory R1 i†R2 bÍd¹ tworzy³y
dzielnik napiÍcia obniøaj¹c o†po³owÍ
(lub wiÍcej) napiÍcie na bazie tranzys-
tora i†nie dopuszcz¹ do jego przewodze-
nia wskutek rÛønicy napiÍÊ wywo³ywa-
nych spadkiem na diodzie.
Na
rys. 12a
przedstawiono uk³ad,
ktÛry wed³ug za³oøenia powinien dzia-
³aÊ nastÍpuj¹co: mikrokontroler steruje
tranzystorem w³¹czaj¹c i†wy³¹czaj¹c ja-
kieú urz¹dzenie. Jeúli urz¹dzenie jest
w³¹czone, to naciúniÍcie przycisku ma
je wy³¹czyÊ. Uk³ad jednak nie bÍdzie
dzia³a³ zgodnie z†za³oøeniami. Jeøeli
mikrokontroler wyzeruje liniÍ P3.1, to
jasne jest, øe urz¹dzenie zostanie wy³¹-
czone. Jeøeli natomiast na wyjúciu P3.1
pojawi siÍ stan ì1î, to tranzystor zacz-
nie przewodziÊ i†w³¹czy urz¹dzenie -
tak uk³ad dzia³a³by, gdyby program nie
wykrywa³ wciúniÍcia przycisku. W†uk³a-
dzie jak na rysunku mikrokontroler wy-
³¹czy urz¹dzenie natychmiast po w³¹-
czeniu. BÍdzie to spowodowane faktem,
øe wewnÍtrzny rezystor podci¹gaj¹cy
ma doúÊ duø¹ wartoúÊ (50...100 kΩ)
i†bÍdzie tworzy³ z†rezystorem w†obwo-
dzie bazy tranzystora dzielnik daj¹cy
, co wraz z†napiÍciem baza-emiter
tranzystora powinno daÊ na wyprowa-
dzeniu mikrokontrolera napiÍcie oko³o
3†V, ktÛre powinno byÊ zinterpretowa-
ne jako ì1î (
rys. 12b
). Wad¹ takiego
rozwi¹zania jest koniecznoúÊ zastosowa-
nia tranzystora o†duøym wzmocnieniu
(jeøeli chcemy uzyskaÊ znaczny pr¹d
obci¹øenia). Na
rys. 12c
przedstawiono
lepsze rozwi¹zanie - zastosowanie do-
datkowego rezystora podci¹gaj¹cego R2
o†wartoúci znacznie mniejszej (przynaj-
Rys. 13. Współpraca mikrokontrolera z układami zasilanymi napięciem o innej
wartości
Elektronika Praktyczna 5/2003
87
na wyprowadzeniu mikrokontrolera na-
piÍcie o†wartoúci ok. 2†V†(z uwzglÍdnie-
niem napiÍcia baza-emiter) lub mniej-
sze, co bÍdzie interpretowane jako stan
ì0î - czyli wciúniÍcie przycisku. Prob-
lem rozwi¹zaÊ moøna dobieraj¹c duø¹
wartoúÊ rezystora R1 - powyøej 100
k
Ω
K U R S
utrzymuje siÍ rÛwnieø
stan wysoki wskutek
wbudowanego (lub w†ra-
zie koniecznoúci do³¹czo-
nego) rezystora podci¹ga-
j¹cego. Stan niski na
wyjúciu uk³adu wspÛ³pra-
cuj¹cego powoduje pola-
ryzacjÍ diody w†kierunku
przewodzenia i†przep³yw
pr¹du - napiÍcie pojawia-
j¹ce siÍ na wyprowadze-
niu mikrokontrolera ma
wartoúÊ napiÍcia wyjúcio-
wego uk³adu wspÛ³pracu-
j¹cego powiÍkszonego
o†napiÍcie przewodzenia
diody (warto tutaj zasto-
sowaÊ diodÍ Schottky
ego ze wzglÍdu na niø-
szy spadek napiÍcia). Problem moøna
oczywiúcie rozwi¹zaÊ w†inny sposÛb, na
przyk³ad stosuj¹c omÛwiony wyøej
uk³ad z†tranzystorem - uk³ad z†diod¹
jest jednak najprostszy.
JB P1.2,etykieta
;wykonanie skoku warunkowego, gdy
;na linii P1.2 panuje stan wysoki
Te instrukcje nie stanowi¹ pe³nego
zbioru rozkazÛw odwo³aÒ do portÛw.
NajogÛlniej moøna powiedzieÊ, øe do
obs³ugi portÛw moøna uøyÊ wszystkich
rozkazÛw mog¹cych wykonywaÊ opera-
cje na adresowanej bezpoúrednio ko-
mÛrce pamiÍci lub pojedynczym bicie.
Specyficzne dzia³anie w†stosunku do
portÛw posiada pewna liczba rozkazÛw
okreúlanych jako instrukcje typu od-
czyt-modyfikacja-zapis. S¹ to:
Rys. 14. Sterowanie wejść mikrokontrolera z wyjść
układów zasilanych wyższym napięciem
ANL - iloczyn logiczny,
ORL - suma logiczna,
XRL - suma modulo 2,
JBC - skok warunkowy i†wyzerowanie
bitu,
CPL - negacja bitu,
INC - inkrementacja,
DEC - dekrementacja,
DJNZ - dekrementacja bajtu i†skok jeúli
nie zero,
MOV P_._,C - przes³anie zawartoúci
wskaünika C†na dowoln¹ liniÍ portu,
CLR P_._ - zerowanie linii portu,
SETB P_._ - ustawianie linii portu.
przysporzyÊ sporych k³opotÛw podczas
uruchamiania uk³adu (okresy poprawne-
go i†b³Ídnego dzia³ania zaleøne od tem-
peratury, poziomu zak³ÛceÒ itp.). Popra-
wiony uk³ad przedstawiono na
rys.
13b
). Problem zosta³ rozwi¹zany przez
zastosowanie uk³adu inwertera z†tran-
zystorem NPN ³¹cz¹cym obydwa obwo-
dy. Uk³ad gwarantuje poprawn¹ pracÍ,
naleøy jedynie zwrÛciÊ uwagÍ, øe ne-
guje on podawany na bramkÍ sygna³,
co naleøy uwzglÍdniÊ przy pisaniu op-
rogramowania. Innym rozwi¹zaniem jest
zastosowanie wzmacniacza operacyjnego
(komparatora), na ktÛrego wejúcie nie-
odwracaj¹ce podajemy sygna³ z†mikro-
kontrolera, a†na wejúcie odwracaj¹ce
wartoúÊ napiÍcia progowego - w†tym
wypadku zgodnie ze standardem
CMOS-5V jest to napiÍcie 2,5 V†utwo-
rzone przez dzielnik R1 i†R2 (
rys. 13c
).
Naleøy pamiÍtaÊ, øe wzmacniacz
operacyjny musi byÊ zasilany z†tego
samego ürÛd³a (o takim samym napiÍ-
ciu) co sterowana nim bramka. Zalet¹
tego uk³adu jest fakt, øe nie odwraca
on fazy sygna³u, naleøy jednak pamiÍ-
taÊ o†ograniczonym zakresie czÍstotli-
woúciowym wzmacniacza operacyjnego
(uk³ady z†pojedynczymi tranzystorami
w†tej konkurencji wygrywaj¹ - s¹ duøo
szybsze).
Podobnych zasad naleøy przestrze-
gaÊ, gdy do wejúcia mikrokontrolera
do³¹czamy zasilany wyøszym napiÍciem
komparator lub inny uk³ad z†wyjúciem
komplementarnym (nie dotyczy uk³adÛw
z†wyjúciem typu otwarty kolektor/dren).
Na
rys. 14a
przedstawiono b³Ídny
uk³ad - po³¹czenie bezpoúrednie, w†wy-
niku ktÛrego w†najgorszym przypadku
moøe dojúÊ do uszkodzenia wejúcia
mikrokontrolera i/lub wyjúcia uk³adu
steruj¹cego. Na
rys. 14b
przedstawiono
najprostszy sposÛb rozwi¹zania proble-
mu - zastosowanie diody blokuj¹cej po-
jawienie siÍ wysokiego napiÍcia na
wejúciu mikrokontrolera. Kiedy uk³ad
wspÛ³pracuj¹cy z†mikrokontrolerem jest
w†stanie wysokim, to dioda zostaje
spolaryzowana zaporowo - nie przewo-
dzi pr¹du. Na wejúciu mikrokontrolera
Porty mikrokontrolera od
strony programowej
Odpowiednie po³¹czenie elektryczne
wyprowadzeÒ portÛw to nie wszystko -
konieczna jest jeszcze odpowiednia ob-
s³uga programowa. Przede wszystkim na-
leøy zwrÛciÊ uwagÍ na fakt, øe porty
mikrokontrolera s¹ obs³ugiwane w†spo-
sÛb synchroniczny - tzn. odczyt danych
z†portu czy zapis do niego odbywa siÍ
zgodnie z†czÍstotliwoúci¹ cykli maszyno-
wych mikrokontrolera (pod warunkiem
wykonywania rozkazÛw zapisu/odczytu
portu). Dlatego mikrokontroler nie jest
w†stanie wykryÊ impulsÛw wejúciowych
krÛtszych niø 1†cykl maszynowy (w
przypadku niektÛrych rozkazÛw s¹ to
2†cykle) oraz sam nie jest w†stanie ge-
nerowaÊ przebiegÛw o†stanach krÛtszych
niø 1†cykl (f
zegara
/12).
Dla programisty zapis czy odczyt
portu nie rÛøni siÍ od zapisu czy od-
czytu wewnÍtrznej pamiÍci danych.
Moøliwy jest takøe zapis lub odczyt
pojedynczych linii portÛw z†wykorzys-
taniem adresowania bitowego. NajczÍú-
ciej wykonywane instrukcje odwo³uj¹ce
siÍ do portÛw to:
MOV P1,#0F0H
;jednoczesny zapis ośmiu linii
;portu (np. 4 starsze ustawione na
;“1”, 4 młodsze wyzerowane.
Instrukcje te dzia³aj¹ w†nastÍpuj¹cy
sposÛb: najpierw odczytywany jest we-
wnÍtrzny stan rejestrÛw odpowiedzial-
nych za stany na wyprowadzeniach
portÛw, potem nastÍpuje modyfikacja
odczytanej zawartoúci, a†na koÒcu na-
stÍpuje zapis nowej wartoúci do por-
tu. Naleøy zwrÛciÊ uwagÍ, øe odczyt
rejestru portu nie ma nic wspÛlnego
ze stanami na liniach zewnÍtrznych -
jest to wartoúÊ jaka zosta³a wpisana
tam programowo, np. dla linii wyko-
rzystywanych jako wejúcia powyøsze
instrukcje bÍd¹ odczytywa³y stan ì1î
niezaleønie od panuj¹cego na linii na-
piÍcia. BÍdzie to spowodowane tym,
øe chc¹c korzystaÊ z†linii jako wejúcie
programista musia³ wczeúniej wpisaÊ
do odpowiedniego rejestru jedynkÍ i†to
w³aúnie ona bÍdzie odczytywana.
SzczegÛln¹ ostroønoúÊ naleøy zachowaÊ
w†przypadku nieprzemyúlanego zastoso-
wania instrukcji JBC P_._,etykieta. Tak-
øe tutaj skok i†wyzerowanie podanego
bitu (pojedynczej linii portu) nast¹pi
jeúli w†rejestrze portu bÍdzie na danej
pozycji stan ì1î, niezaleønie od fak-
tycznego stanu wystÍpuj¹cego na wy-
prowadzeniu mikrokontrolera (w odrÛø-
nieniu od instrukcji JB, JNB i†CJNE -
one odczytuj¹ stany linii zewnÍt-
rznych). Nieprzemyúlane wykonanie in-
strukcji typu odczyt-modyfikacja-zapis
czÍsto prowadzi do trudnych do zlo-
kalizowania b³ÍdÛw programowych. Mi-
mo tego nie naleøy siÍ baÊ i†rezygno-
waÊ z†tych instrukcji - s¹ one bardzo
przydatne, naleøy jednak stosowaÊ je
w†sposÛb úwiadomy i†zdawaÊ sobie
sprawÍ ze sposobu ich dzia³ania.
Pawe³ Hadam
MOV P1,A
;wysłanie do portu P1 zawartości
;akumulatora
MOV A,P1
;odczytanie zawartości linii portu
;P1 i wpisanie jej do akumulatora
SETB P1.1
;ustawienie “1” na linii P1.1
CLR P1.1
;wyzerowanie linii P1.1
88
Elektronika Praktyczna 5/2003
Plik z chomika:
radzik93
Inne pliki z tego folderu:
Podstawy projektowania systemów mikroprocesorowych, cz. 1.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 10.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 11.pdf
(152 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 12.pdf
(59 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 2.pdf
(119 KB)
Inne foldery tego chomika:
ARM7TDMI
Bluetooth
Co w LPT-cie piszczy
Elektronika
Katalogi
Zgłoś jeśli
naruszono regulamin