33_35.PDF

(213 KB) Pobierz
Sprzętowy terminal RS232 - AVT-5073
Sprzętowy terminal RS232
Sprzętowy terminal
RS232
AVT−5073
Interfejs komunikacji
szeregowej RS232 jest, ze
wzglÍdu na ³atwoúÊ
implementacji i wystarczaj¹c¹
w wiÍkszoúci
zastosowaÒ†szybkoúÊ
transmisji, stosowany w†wielu
urz¹dzeniach komunikuj¹cych
siÍ z†otoczeniem. Uk³ad
opisany w†artykule jest
prostym, dwukierunkowym
terminalem RS232
o†nietypowych moøliwoúciach.
Podczas pracy z†urz¹-
dzeniami wyposaøonymi w†in-
terfejs szeregowy czÍsto wystÍpuje
potrzeba sprawdzenia poprawnoú-
ci transmisji. Prezentowany w†ar-
tykule uk³ad umoøliwia odbiera-
nie oraz wysy³anie danych przez
interfejs RS232. Odbierane dane
s¹ kierowane do portu procesora,
ktÛry moøe na przyk³ad wystero-
waÊ diody úwiec¹ce w†celu po-
rÛwnania danych wys³anych przez
komputer lub procesor z†tymi,
ktÛre faktycznie pojawiaj¹ siÍ na
szeregowej linii danych. Do wyjúÊ
mikrokontrolera moøna rÛwnieø
do³¹czyÊ urz¹dzenia steruj¹ce od-
biornikami duøej mocy, umoøli-
wiaj¹c sterowanie za pomoc¹ kom-
putera rÛønymi urz¹dzeniami do-
mowymi. W†trybie nadajnika dane
pojawiaj¹ce siÍ na liniach portu
procesora s¹ wysy³ane do kompu-
tera szeregowo. Do portu tego
moøna do³¹czyÊ klawiaturÍ lub
dowolny czujnik, a†stan linii bÍ-
dzie wyúwietlany na ekranie mo-
nitora. Do sterowania przep³ywem
danych moøna uøyÊ dowolnego
programu terminalowego, na przy-
k³ad Hyper Terminal, w†ktÛry jest
wyposaøony kaødy system Win-
dows. PrÍdkoúÊ transmisji moøe
byÊ zmieniana w†zakresie od 300
do 19200 bd. Transmisja odbywa
siÍ w†sposÛb asynchroniczny,
z†jednym bitem startu i†jednym
bitem stopu, bez bitu parzystoúci.
Budowa i†dzia³anie
Na rys. 1 przedstawiono sche-
mat elektryczny sprzÍtowego ter-
minala. ìSercemî uk³adu jest
mikrokontroler firmy Atmel
AT89C2051, ktÛry zawiera w†swo-
jej strukturze 2†kB pamiÍci pro-
gramu typu Flash oraz - bardzo
istotny dla dzia³ania urz¹dzenia -
sprzÍtowy interfejs szeregowej
transmisji danych. DziÍki niemu
Rys. 1. Schemat elektryczny terminala z portem szeregowym
Elektronika Praktyczna 7/2002
33
P R O J E K T Y
39639773.069.png 39639773.080.png 39639773.091.png 39639773.102.png 39639773.001.png 39639773.012.png 39639773.021.png 39639773.022.png 39639773.023.png 39639773.024.png
Sprzętowy terminal RS232
Rys. 2. Rozmieszczenie elementów
na płytce drukowanej terminala
w†standardzie TTL (0...5V), akcep-
towanych przez mikrokontroler.
Uk³ad MAX232 ma wbudowany
podwajacz napiÍcia (do uzyskania
napiÍcia na wyjúciach oko³o +10V)
oraz uk³ad generuj¹cy ujemne na-
piÍcie o†wartoúci rÛwnej oko³o -
10V. Komputery akceptuj¹ napiÍ-
cia wejúciowe dla dodatniego
w†przedziale +5V...+15V oraz
ujemnego -5V...-15V, wiÍc uk³ad
US2 spe³nia wymogi napiÍÊ stan-
dardu RS232 pod wzglÍdem na-
piÍciowym.
Do zasilania ca³ego uk³adu wy-
starczy tylko napiÍcie 5V, ktÛre
jest otrzymywane na wyjúciu sta-
bilizatora US3.
Dane odbierane przez terminal
z portem szeregowym s¹ przeka-
zywane do z³¹cza CON2. Jeúli
uk³ad pracuje jako nadajnik sze-
regowy, dane s¹ pobierane z†portu
P1. Na z³¹czu CON2, oprÛcz
wyprowadzeÒ portu P1, jest do-
stÍpne rÛwnieø jedno wyprowa-
dzenie portu P3. Wyprowadzenie
to jest wykorzystywane jedynie
wtedy, gdy dane s¹ pobierane
z†portu P1 i†maj¹ byÊ wys³ane
szeregowo.
Po ustawieniu odpowiednich
stanÛw na z³¹czu CON2 naleøy
podaÊ ujemny impuls na wypro-
wadzenie P3.7 portu P3. Spowo-
duje on wys³anie danych ze z³¹-
cza CON2 szeregowo do kompu-
tera. Na tym wejúciu wyzwalania
transmisji s¹ programowo elimi-
nowane drgania zestykÛw, co
umoøliwia wyzwalanie za pomoc¹
klawisza.
Prezentowany uk³ad umoøliwia
transmisjÍ przy jednej z†siedmiu
standardowych prÍdkoúci. Do wy-
boru prÍdkoúci s³uø¹ zworki
JP1...JP3. Wykorzystanie tych zwo-
rek i†ustawienia ø¹danej prÍdkoú-
ci transmisji zestawiono w† tab. 1
(1 - zwarcie, 0 - rozwarcie).
Poniewaø za pomoc¹ trzech zwo-
rek moøna wybraÊ osiem stanÛw,
a†mamy tylko siedem prÍdkoúci,
dlatego kombinacji pozycji siÛd-
mej i†Ûsmej odpowiada taka sama
prÍdkoúÊ.
Do prze³¹czania uk³adu miÍdzy
nadawaniem i†odbiorem s³uøy
zworka JP4 - jej zwarcie wprowa-
dza uk³ad w†tryb odbioru danych
z†portu szeregowego i†przes³anie
na z³¹cze CON2. Rozwarcie tej
zworki umoøliwia wys³anie da-
nych pobranych ze z³¹cza CON2
przez port szeregowy. Wszelkie
zmiany prÍdkoúci, czy trybu pracy
naleøy wykonywaÊ przy wy³¹czo-
nym zasilaniu, gdyø ustawienie
wszystkich zworek jest odczyty-
wane tylko raz, przy starcie pro-
cesora. Wszelkie zmiany ustawie-
nia zworek w†czasie pracy proce-
sora bÍd¹ uwzglÍdnione dopiero
po jego wyzerowaniu, czyli wy-
³¹czeniu i†ponownym w³¹czeniu
zasilania.
DziÍki sprzÍtowemu sterowni-
kowi transmisji szeregowej wbu-
dowanemu w†mikrokontroler, pro-
cedura nadawania i†odbioru da-
nych sprowadza siÍ jedynie do
odczytu lub zapisu danych do
odpowiedniego rejestru. Poniewaø
praca portu szeregowego jest asyn-
chroniczna, w†zaleønoúci od wy-
branej prÍdkoúci poszczegÛlne bi-
ty s¹ wysy³ane z†rÛøn¹ prÍdkoú-
ci¹. Do odliczania czasu pomiÍ-
dzy kolejnymi bitami wysy³anego
lub odbieranego bajtu danych naj-
wygodniej jest zastosowaÊ Timer .
W†mikrokontrolerze zastosowanym
w†terminalu do dyspozycji s¹ dwa
Timery , jednakøe do obs³ugi trans-
misji jest przypisany Timer1 . Sk³a-
da siÍ on z†dwÛch rejestrÛw (TH1
- starszy bajt i†TL1 - m³odszy
bajt). W†zaleønoúci od konfiguracji
Timera , rejestry moøna po³¹czyÊ
ze sob¹, dziÍki temu otrzymamy
licznik dwubajtowy, o†maksymal-
nej zliczanej wartoúci 65536. Do
wspÛ³pracy ze sterownikiem trans-
misji szeregowej wykorzystano
tryb pracy tego Timera , nazywany
trybem 2 . W†tym trybie Timer1
moøe odliczyÊ maksymalnie 256
cykli. Zliczanie odbywa siÍ w†re-
jestrze TH1, a†w†rejestrze TL1
przechowywana jest pocz¹tkowa
wartoúÊ, od ktÛrej licznik ma
rozpocz¹Ê zliczanie. Po uzyskaniu
maksymalnej wartoúci rejestru
procedura obs³ugi portu szerego-
wego jest bardzo uproszczona,
gdyø procesor nie musi programo-
wo odbieraÊ i†wysy³aÊ danych bit
po bicie. Jest to wykonywane
ca³kowicie sprzÍtowo. Wbudowa-
ny w†mikrokontroler nadajnik-od-
biornik samodzielnie przetwarza
dane i†po odebraniu lub wys³aniu
ich informuje procesor, øe ca³y
bajt zosta³ odebrany lub wys³any.
W†czasie wysy³ania lub odbiera-
nia danych z†portu szeregowego
procesor moøe zajmowaÊ siÍ in-
nymi procesami.
Sygna³ zegarowy potrzebny do
pracy procesora jest wytwarzany
przez oscylator z† zewnÍtrznym
rezonatorem kwarcowym o†czÍs-
totliwoúci 11,059MHz. Taka czÍs-
totliwoúÊ pracy procesora umoø-
liwia uzyskanie standardowych
prÍdkoúci transmisji. Zerowanie
procesora po w³¹czeniu zasilania
zapewnia obwÛd rÛøniczkuj¹cy
z³oøony z†rezystora R1 i†konden-
satora C11. Zestaw rezystorÛw
RN1 zapewnia zewnÍtrzne podci¹-
ganie wyprowadzeÒ portu P1 do
poziomu wysokiego. Jest to ko-
nieczne, gdyø w†wewnÍtrzne re-
zystory podci¹gaj¹ce ( pull-up ) wy-
posaøone s¹ tylko wyprowadzenia
P1.2...P1.7, natomiast wyprowa-
dzenia P1.0 i†P1.1 s¹ typu otwarty
kolektor. Dla ujednolicenia wa-
runkÛw pracy portu, rezystory
zastosowano dla wszystkich jego
wyprowadzeÒ.
Uk³ad US2 jest konwerterem
dostosowuj¹cym napiÍcia standar-
du RS232 (-15V...+15V) do napiÍÊ
Tab. 1. Wykorzystanie zworek do
ustawienia prędkości transmisji
L.p. JP3 JP2 JP1
Prędkość
transmisji
[bd]
1
0
0
0
300
2
0
0
1
600
3 0
1
0
1200
4 0
1
1
2400
5 1
0
0
4800
6 1
0
1
9600
7 1
1
0
19200
8 1
1
1
19200
34
Elektronika Praktyczna 7/2002
39639773.025.png 39639773.026.png 39639773.027.png 39639773.028.png 39639773.029.png 39639773.030.png 39639773.031.png 39639773.032.png 39639773.033.png 39639773.034.png 39639773.035.png 39639773.036.png 39639773.037.png 39639773.038.png 39639773.039.png 39639773.040.png 39639773.041.png 39639773.042.png 39639773.043.png 39639773.044.png 39639773.045.png 39639773.046.png 39639773.047.png 39639773.048.png 39639773.049.png 39639773.050.png 39639773.051.png 39639773.052.png 39639773.053.png 39639773.054.png 39639773.055.png 39639773.056.png 39639773.057.png 39639773.058.png 39639773.059.png 39639773.060.png 39639773.061.png 39639773.062.png 39639773.063.png 39639773.064.png 39639773.065.png 39639773.066.png 39639773.067.png 39639773.068.png 39639773.070.png 39639773.071.png 39639773.072.png 39639773.073.png 39639773.074.png 39639773.075.png 39639773.076.png 39639773.077.png 39639773.078.png 39639773.079.png 39639773.081.png 39639773.082.png 39639773.083.png 39639773.084.png 39639773.085.png 39639773.086.png 39639773.087.png 39639773.088.png 39639773.089.png 39639773.090.png 39639773.092.png 39639773.093.png 39639773.094.png 39639773.095.png 39639773.096.png 39639773.097.png 39639773.098.png 39639773.099.png 39639773.100.png 39639773.101.png 39639773.103.png 39639773.104.png 39639773.105.png 39639773.106.png 39639773.107.png 39639773.108.png 39639773.109.png 39639773.110.png 39639773.111.png 39639773.112.png 39639773.002.png 39639773.003.png 39639773.004.png 39639773.005.png 39639773.006.png 39639773.007.png 39639773.008.png 39639773.009.png 39639773.010.png 39639773.011.png 39639773.013.png 39639773.014.png 39639773.015.png 39639773.016.png 39639773.017.png 39639773.018.png 39639773.019.png
Sprzętowy terminal RS232
List. 1. Procedura inicjalizacji
i obsługi portu szeregowego
;********* Ustawienie TIMERA *********
;TIMER 1
T1_G EQU0 ;GATE
T1_C EQU0 ;COUNTER/-TIMER
T1_M EQU2 ;MODE (0..3)
TIM1 EQUT1_M+T1_C*4+T1_G*8
TMOD_SET EQUTIM0+TIM1*16 ;
ustawienie trybu 2 dla timera1
TR_M EQU1 ;tryb transmisji (1..3)
TR_R EQU1 ;zezwolenie na odbiór
SCON_SET EQU TR_M*64+TR_R*16 ;ustawienie
;trans. asynchronicznej
MOV TH1,#TH1_SET ;wpisanie wartości
;początkowej Timera
MOV TL1,#TL1_SET ;wg. wzoru
;TH1=256-(57600/V)
zarÛwno do rejestru TH1, jak
rÛwnieø do TL1. Wpis ten wyko-
nujemy jednorazowo, na pocz¹tku
programu.
W†procedurze Start nastÍpuje
uruchomienie portu szeregowego
oraz start Timera1 . W†zaleønoúci
od stanu zworki TRYB (JP-4)
program przechodzi do procedury
odbioru lub nadawania znakÛw.
Jeúli zworka jest rozwarta, to
wykonywany jest podprogram na-
dawania (pÍtla LOOP ). W†pÍtli tej
sprawdzany jest stan bitu TI . Bit
ten informuje, czy sterownik por-
tu szeregowego skoÒczy³ nadawa-
nie poprzedniego znaku. Jeúli
TI=1, to sprawdzany jest stan
portu P3.7 (warunek odczytu por-
tu P1). Jeúli obydwa warunki s¹
spe³nione nastÍpuje odczyt sta-
nÛw portu P1 i†przepisanie tych
stanÛw do rejestru SBUF . Po
wpisaniu danych do tego rejestru
nastÍpuje automatyczne jego wy-
s³anie portem szeregowym. Na-
stÍpnie program oczekuje na stan
wysoki na wyprowadzeniu portu
P3.7, i†powraca do pocz¹tku pÍtli
LOOP .
Procedura wysy³ania danych
przez port szeregowy sprowadza
siÍ do sprawdzenia czy zosta³ juø
wys³any poprzedni znak oraz wpi-
sania odpowiedniej wartoúci do
rejestru nadawczego SBUF , a†ca³a
procedura wysy³ania poszczegÛl-
nych bitÛw jest wykonywana poza
programem. Podobnie jest dla od-
bioru transmisji szeregowej. Za-
pewnia go procedura zawarta
w†pÍtli LOOP1 . Jej zadaniem jest
sprawdzanie stanu flagi TI . Jeúli
TI=1, oznacza to, øe w†rejestrze
SBUF jest odebrany szeregowo
bajt danych i†nastÍpuje jego prze-
pisanie do portu P1. Rejestr SBUF
pe³ni podwÛjn¹ rolÍ - w†czasie
nadawania jest buforem nadaw-
czym, a†w czasie odbioru buforem
odbiorczym.
WYKAZ ELEMENTÓW
Rezystory
R1: 10k
Kondensatory
C1, C2: 33pF
C3, C4: 100nF
C5: 100
F/16V
F/16V
C7...C11: 10
F/16V
Półprzewodniki
D1: 1N4004
US1: AT89C2051 zaprogramowany
US2: MAX232
US3: 78L05
Różne
CON1: ARK2(3,5mm)
CON2: goldpin 5*2
CON3: DB9M do druku
JP1...JP4: goldpin 1*2
Q1: kwarc 11,059MHz
START:
MOV SCON,#SCON_SET ;konfiguracja portu
;szeregowego jako
ORL PCON,#80H ;asynchroniczny
MOV TMOD,#TMOD_SET ;konfiguracja Timera1
;do pracy w trybie 2
SETB TR1;start Timera 1
SETB TI
MOV P1,#255 ;port1=FF
MOV P3,#255 ;port3=FF
JNB TRYB,LOOP_1 ;jeżeli tryb=1,to nadajnik
;Praca jako nadajnik
LOOP:
JNB TI,$ ;czy można nadać znak
JB DIODA,LOOP ;jeżeli P3.7=0 nadaj znak
;z Portu1
CLR TI
;zeruj znacznik nadawania
LOOP_2:
MOV A,P1
;kopiuj port1 do ACC
MOV SBUF,A
;wyślij znak
LOOP_3:
JNB DIODA,LOOP_3;czekaj na 1 na P3.7
MOV A,#10
;czekaj 10ms
CALL WAIT_10
SJMP LOOP ;kolejny znak
;Praca jako odbiornik
LOOP_1:
SETB DIODA ;ustaw P3.7
JNB RI,$ ;czekaj na znak z portu
;szeregowego
CLR RI ;jeśli jest, to zeruj
;znacznik
MOV A,SBUF ;przepisz znak do ACC
MOV P1,A ;przepisz znak do portu P1
SJMP LOOP_1 ;następny znak
scalonych moøna sprawdziÊ, czy
napiÍcie zasilaj¹ce uk³ady wynosi
5V (uprzednio do z³¹cza CON1
naleøy do³¹czyÊ napiÍcie 9V). Po-
³¹czenie p³ytki z†komputerem wy-
konujemy kablem zakoÒczonym
z†obydwu stron z³¹czami DB9-
øeÒskimi. Kable takie s¹ wyko-
rzystywane do po³¹czenia dwÛch
komputerÛw. Waøne jest, aby po-
siada³ przeplot pomiÍdzy wypro-
wadzeniami ì2î i†ì3". Schemat
po³¹czeÒ umoøliwiaj¹cy samo-
dzielne wykonanie takiego kabla
jest przedstawiony na rys. 3 . Po
wykonaniu powyøszych czynnoúci
uk³ad jest gotowy do wspÛ³pracy
z†dowolnym komputerem.
Krzysztof P³awsiuk, AVT
krzysztof.plawsiuk@ep.com.pl
TH1 nastÍpuje automatyczne prze-
pisanie jego wartoúci pocz¹tkowej
z†rejestru TL1, dziÍki czemu nie
trzeba za kaødym razem wpisy-
waÊ jego wartoúci pocz¹tkowej.
Na list. 1 przedstawiono procedu-
rÍ obs³ugi portu szeregowego.
Na pocz¹tku programu ustala-
my tryb pracy Timera (wspÛ³czyn-
nik podzia³u czÍstotliwoúci sygna-
³u zegarowego). Wyliczona z†za-
leønoúci: T1_M+T1_C*4+T1_G*8
wartoúÊ jest przechowywana
w† TIM1 . NastÍpnie ustalamy tryb
pracy sterownika transmisji szerego-
wej (w przyk³adzie: praca asynchro-
niczna oraz zezwolenie na odbiÛr)
i†wstÍpnie zapisujemy wyliczon¹
z†zaleønoúci TR_M*64+TR_R*16
wartoúÊ w† SCON_SET . Pocz¹tko-
wa wartoúÊ wpisana do rejestru
Timera , dla rezonatora kwarcowe-
go o†czÍstotliwoúci 11,059MHz,
jest obliczana ze wzoru TH1=256-
(57600/V), gdzie V†oznacza prÍd-
koúÊ transmisji. Dla przyk³adu,
dla prÍdkoúci 9600 wzÛr ma po-
staÊ TH1=256-(57600/9600), czyli
TH1=250. WartoúÊ tÍ wpisujemy
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem: http://www.ep.com.pl/
?pdf/lipiec02.htm oraz na p³ycie
CD-EP07/2002B w katalogu PCB .
Montaø i†uruchomienie
Montaø wed³ug schematu mon-
taøowego pokazanego na rys. 2
wykonujemy rozpoczynaj¹c od†ele-
mentÛw o†najmniejszych gabary-
tach (rezystory, diody, podstawki
pod uk³ady scalone), a nastÍpnie
montujemy kondensatory i†z³¹cza
CON1...CON3. Po zmontowaniu
ze sprawnych elementÛw uk³ad
jest gotowy do pracy. Dla pew-
noúci przed w³oøeniem uk³adÛw
Rys. 3. Sposób wykonania kabla
Elektronika Praktyczna 7/2002
35
RN1: R−pack − 10k
C6: 220
39639773.020.png
Zgłoś jeśli naruszono regulamin