19 16

background image

Każdy komputer musi współpracować

z jakimiś urządzeniami zewnętrznymi.
Bez takich urządzeń jak drukarka, mysz,
joystick, modem telefoniczny, skaner, itp,
sam komputer jest niemal zupełnie bez−
użyteczny.

Wymienione urządzenia dołączane są

do komputera za pomocą tak zwanych
portów. Wystarczy zajrzeć na tylną płytę
obudowy komputera, by się przekonać,
iż umieszczonych tam jest przynajmniej
kilka gniazd połączeniowych. Umożli−
wiają one wysyłanie i przyjmowanie in−
formacji.

Spośród gniazd znajdujących się na tyl−

nej ściance komputera, elektroników naj−
bardziej interesują:
– porty szeregowe, oznaczane COM,

itd, które są zgodne ze standardem
RS−232, a które potocznie nazywamy
komami, eresami lub serialami,

– port równoległy, zgodny ze standar−

dem Centronics, oznaczany LPT, zwa−
ny potocznie elpetem,

– port joysticka, oznaczany GAME

PORT, nazywany gejmportem.
W każdym komputerze PC występują

przynajmniej dwa porty szeregowe
(COM1 i COM2). Komputer ma też przy−
najmniej jeden port równoległy (LPT1)
i jeden port joysticka. Port joysticka ma
specyficzną budowę i funkcje. W zasa−
dzie służy tylko do przyjmowania informa−
cji od współpracującegu urządzenia (joys−
ticka). Jego funkcje i możliwości wyko−
rzystania zostaną omówione w dalszej
części cyklu.

Zadaniem portów jest przesyłanie in−

formacji na zewnątrz komputera oraz po−
bieranie informacji z zewnątrz, do i od
urządzeń współpracujących.

Niemal wszystkie informacje przesyła−

ne do i z komputera mają postać cyfrową,
to znaczy, że mają postać napięcia odpo−
wiadającego stanom logicznym 0 i 1.

Zazwyczaj przesyłane są duże ilości in−

formacji. Z różnych względów, od dawna
podstawową „porcją” informacji jest
bajt, czyli osiem bitów.

Informacje cyfrowe, jako kolejne bajty,

mogą być przesyłane w postaci równo−
ległej; wtedy potrzebne jest tyle linii –
przewodów, ile bitów przesyłanych jest
jednocześnie (plus przewód masy). Ilu−
struje to rry

ys

su

un

ne

ek

k 1

1a

a.

Informacje mogą też być przesyłane

w postaci szeregowej, czyli kolejno je−
den bit za drugim. Ilustruje to rry

ys

su

u−

n

ne

ek

k 1

1b

b. Tu wystarczą tylko dwa przewo−

dy – sygnałowy i masa.

Oba te sposoby wykorzystano do ko−

munikacji komputera z otoczeniem.

Najprostsze jest działanie portu rów−

noległego. Wykorzystano tu pierwszy
sposób. W porcie tym między innymi
znajduje się osiem linii, które pracują jako

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

28

Port szeregowy

Rys. 1a. Równoległe
przekazywanie danych.

W kilku ostatnich numerach EdW

poświęcono dużo miejsca spra−

wie wykorzystania komputera PC

do sterowania różnych urządzeń

zewnętrznych.

Przedstawiono kilka książek, które

w przystępny sposób uczą progra−

mowania w języku Basic. Napły−

wające listy świadczą o znacznym

zainteresowaniu tą sprawą. Jed−

nak materiał zawarty w poleca−

nych przez nas książkach nie obe−

jmuje zagadnień ogromnie istot−

nych dla elektronika – sposobów

wykorzystania portów komputera.

Niniejszy cykl artykułów wypełnia

tę lukę – zawiera obszerne i wy−

czerpujące omówienie zasady

działania oraz możliwości dostępu

do portów komputera PC. Przed−

stawiony materiał umożliwi nawet

mało zaawansowanemu użytkow−

nikowi komputera PC praktyczne

wykorzystanie tych portów.

Oprócz informacji ogólnych Autor

proponuje przeprowadzenie sze−

regu eksperymentów z wykorzys−

taniem prostej przystawki i rów−

nie prostych programów w języku

Basic. Nie potrzebna będzie na−

wet umiejętność programowania

w Basicu – do przeprowadzenia

najprostszych prób wystarczy

mieć dostęp do jakiegokolwiek

PC−ta i skorzystać ze wskazówek

zawartych w artykule.

1

1

część

Rys. 1b. Szeregowe przesyłanie danych.

W

Wy

yk

ko

or

rz

zy

ys

st

ta

an

niie

e p

po

or

rt

ów

w

k

ko

om

mp

pu

ut

te

er

ra

a P

PC

C

background image

K

Ko

om

mp

pu

ut

te

er

ry

y

29

E

LEKTRONIKA DLA WSZYSTKICH 6/97

wyjścia. Komputer jednocześnie wysyła
na te osiem wyjść cały bajt informacji.
Ponieważ jednocześnie za pomocą oś−
miu przewodów przesyłanych jest osiem
bitów, transmisja danych przez port rów−
noległy jest szybka. Oprócz ośmiu głów−
nych linii wyjściowych, port równoległy
zawiera szereg innych linii, które mogą
służyć jako wejścia, a niektóre jako wy−
jścia. Są one potrzebne do wymiany in−
formacji pomocniczych, na przykład syg−
nału synchronizującego, wskazującego,
kiedy na liniach przesyłowych pojawia
się nowy bajt informacji, czy informacji
o błędach.

Port równoległy zazwyczaj obsługuje

drukarkę, dlatego w praktyce do różno−
rodnych celów „elektronicznych” wyko−
rzystuje się port szeregowy. Spośród
dwóch portów szeregowych, jeden
zwykle obsługuje myszkę, a drugi port
może być wykorzystany w dowolny spo−
sób. Dodatkową, cenną zaletą portu sze−
regowego jest fakt, że stanom logicz−
nym 0 i 1 odpowiadają w nim napięcia
+12V i −12V, i że z wyjść można pobrać
prąd do 10mA. Tak znaczne napięcia
i prądy są często wykorzystywane do...
zasilania współpracujących urządzeń.
W ten sposób wyjścia portu szeregowe−
go stają się źródłem zasilania. Wyjścia
i wejścia portu szeregowego są odporne
na uszkodzenia pod wpływem zewnętr−
znych napięć i prądów, dlatego zasadni−
czo można dołączać do tego portu
współpracujące urządzenia także przy
włączonym zasilaniu komputera.

Wspomniane zalety zadecydowały, że

port szeregowy jest najczęściej wyko−
rzystywany przez konstruktorów do pod−
łączania różnych bardziej lub mniej stan−
dardowych urządzeń zewnętrznych. Trze−
ba jednak mieć świadomość, że port sze−
regowy jest znacznie wolniejszy od portu
równoległego, a więc jeśli wymagane
jest szybkie przesyłanie danych, koniecz−
ne może się okazać wykorzystanie portu
równoległego.

Właściwości portu szeregowego zwią−

zane są ze starymi standardami stosowa−
nymi w dalekopisach oraz z sygnałami
wykorzystywanymi w modemach, czyli
urządzeniach współpracujących z linią te−
lefoniczną. Opis pełnego standardu jest
bardzo obszerny. W opisie spotkasz ta−
jemnicze określenia RS−232C, V.24, DTE,
DCE, DSR, DTR, RTS, CTS, i wiele in−
nych. Różnorodne możliwości połączeń,
całe mnóstwo stosowanych kabli, tajem−
nicze skróty – wszystko to może wręcz
przerazić przeciętnego użytkownika. Na
szczęście do praktycznego wykorzysta−
nia portów komputera wystarczy garść
najważniejszych informacji, natomiast
szczegóły nie są potrzebne, dlatego zo−
staną pominięte.

W dalszej części artykułu przedstawio−

ne zostanie wszystko to, co jest potrzeb−
ne elektronikowi do praktycznego wyko−
rzystania portu dla celów sterowania
i zbierania danych. Ogólnie biorąc, poniż−
szy materiał jest zgrubnym opisem stan−
dardu RS−232C.

Port szeregowy

Główne dwie linie portu szeregowe−

go oznaczone są TxD i RxD. TxD to linia
Transmit Data, czyli wyjście. RxD (Re−
ceive Data) to wejście. Jak pokazuje rry

y−

s

su

un

ne

ek

k 2

2a

a, te dwie linie plus przewód

masy wystarczą, by przesyłać dane
z i do komputera. Zastosowano tu tak
zwaną transmisję szeregową, asynchro−
niczną. Urządzenie nadawcze wysyła
kolejno w linię poszczególne bity.
W największym uproszczeniu wygląda
to jak na rysunku 1b. Przebieg napięcia
o takiej postaci jest wysyłany w linię
i odbierany przez współpracujące urzą−
dzenie. Ale taki ciąg bitów mógłby być
błędnie odebrany, albo w skrajnym przy−
padku, zupełnie nie odebrany. Przykła−
dowo przy transmisji samych zer lub sa−
mych jedynek urządzenie odbiorcze nie
wiedziałoby, kiedy zaczyna się, a kiedy
kończy transmisja. Dlatego przy szere−
gowym przesyłaniu danych trzeba
wprowadzić dodatkowe informacje
i spełnić pewne warunki. Przede wszys−
tkim trzeba przyjąć jakiś stan spoczyn−
kowy. Niech to będzie stan wysoki. Jeś−
li przez linię nie są przesyłane dane, na
linii przesyłowej utrzymuje się stan wy−
soki. Pojawienie się stanu niskiego jest
sygnałem o rozpoczęciu transmisji. Ale
pierwszy bit transmitowanej informacji
wcale nie musi być zerem. Dlatego ko−
nieczne jest wprowadzenie dodatkowe−
go, początkowego bitu, który zawsze
będzie zerem. Jedynym zadaniem tego
bitu jest wskazanie odbiornikowi, że
właśnie rozpoczyna się transmisja. Ten
bit jest zwany bitem startu. Ilustruje to
rry

ys

su

un

ne

ek

k 2

2b

b.

Wydawałoby się, że po wysłaniu bitu

startu, można potem przesłać kolejno do−
wolnie wielką ilość bitów. W praktyce
wcale nie jest to takie proste. Odbiornik
powinien wiedzieć, kiedy w linii pojawił
się następny bit. A skąd ma to wiedzieć?
Jeśli wykorzystana byłaby dodatkowa li−
nia, przez którą przesyłany byłby sygnał
taktujący, czyli zegarowy, nie byłoby żad−
nego problemu. Sygnał taktujący wskazy−
wałby, kiedy w linii danych pojawia się na−
stępny bit (taki sposób nazywany jest
transmisją synchroniczną). Ale tu nie ma
sygnału zegarowego – zarówno nazwa,
jak i rysunek 2 wskazują, iż jest to trans−
misja asynchroniczna, czyli nie ma żad−
nych dodatkowych linii przesyłających
sygnały synchronizacji.

Prędkość transmisji

Bit startu wskazuje tylko początek

transmisji, a następne bity muszą poja−
wić się w ściśle określonym czasie. Ina−
czej mówiąc, zarówno nadajnik, jak i od−
biornik muszą mieć równo tykające zega−
ry, które odmierzą czas pojawiania się ko−
lejnych bitów. Oznacza to, że nadajnik
i odbiornik muszą się „umówić”, z jaką
prędkością są przesyłane dane. Teore−
tyczne, prędkość przesyłania mogłaby
być dowolna, jednak dla porządku przyję−
to pewien standard. Dawniej stosowano
bardzo małe prędkości transmisji: 50, 75
lub 110 bodów, czyli bitów na sekundę.
Potem stosowano prędkości 300, 600,
1200, 2400, 3600 i 4800 bitów na sekun−
dę. Obecnie w zależności od rodzaju
współpracujących urządzeń, stosuje się
prędkości transmisji 9600, 14400, 19200,
28800 bitów na sekundę i wyższe.

Zasadą jest, że w linię wysyła się ko−

lejne bity danego bajtu, począwszy od bi−
tu najmłodszego, oznaczanego D0 do naj−
starszego.

Przyjęcie standardowych prędkości

transmisji znakomicie ułatwia współpracę
urządzeń różnych producentów – wystar−
czy, by zachowane były ogólne zasady,
w tym podane prędkości, czyli częstotli−
wości taktujące nadajnika i odbiornika.

A z jaką dokładnością należy utrzymy−

wać podane prędkości transmisji i częs−
totliwości taktujące?

Jeśli zegary taktujące nadajnika i odbior−

nika tykałyby idealnie równo, po bicie star−
tu można byłoby przesłać dowolną ilość bi−
tów informacji bez obawy o błędy. Pokazu−
je to rry

ys

su

un

ne

ek

k 3

3. Generator taktujący odbior−

nika wyznacza momenty czasu, które po−
winny wypadać dokładnie w połowie cza−

Rys. 2a. Najprostsze wykorzystanie
portu szeregowego.

Rys. 2b. Przebiegi czasowe przy
transmisji szeregowej.

background image

su przesyłania danego bitu. Tylko w tych
momentach odbiornik próbkuje stan linii,
czyli odczytuje aktualny stan linii. Momen−
ty te na rysunku 3 zaznaczono strzałkami.

Jednak już przy jakiejś niewielkiej róż−

nicy częstotliwości zegarów taktujących,
dłuższy przekaz zostałby zinterpretowany
błędnie. Jeśli częstotliwości zegarów bę−
dą się znacznie różnić, któryś kolejny mo−
ment próbkowania wypadnie w czasie
trwania następnego lub poprzedniego bi−
tu. Ilustruje to rry

ys

su

un

ne

ek

k 4

4. Strzałki wskazu−

ją momenty próbkowania.

Wskutek różnicy częstotliwości zega−

rów taktujących nadajnika i odbiornika,
przesyłana informacja została odczytana
błędnie.

Wiadomo, że w praktyce idealnej do−

kładności zapewnić się nie da. Dla bez−
pieczeństwa przyjęto więc, że po bicie
startu przesyła się tylko 5...8 bitów właś−
ciwej informacji. Wtedy wymagania na
dokładność częstotliwości taktującej nie
są zbyt ostre.

Ponieważ po bicie startu przesyłanych

jest tylko kilka bitów informacji, urządze−
nia będą poprawnie pracować, nawet jeś−
li częstotliwości taktujące będą różnić się
o kilka procent.

W praktyce, w urządzeniach standar−

du RS−232 stosuje się sygnał pomocniczy
o częstotliwości 16 razy większej, niż
standardowa częstotliwość przesyłania
danych. Właśnie ten pomocniczy sygnał
wyznacza momenty próbkowania. Ponie−
waż w czasie trwania każdego bitu wy−

stępuje 16 taktów tego sygnału pomocni−
czego, próbkowanie „środka bitu” odby−
wa się w ósmym takcie każdego cyklu.

Częstotliwości taktujące, potrzebne

przy różnych prędkościach transmisji,
uzyskuje się z jednego generatora kwar−
cowego przez odpowiedni podział jego
częstotliwości.

Omówiliśmy już dwie sprawy związa−

ne z transmisją szeregową: znaczenie bi−
tu startu oraz dokładność częstotliwości
taktujących nadajnika i odbiornika.

Trzecią sprawą jest bit kontroli pa−

rzystości.

Bit kontroli parzystości

Przy przesyłaniu danych na odległość,

chwilowe zakłócenia indukujące się
w przewodach, albo też inne szkodliwe
czynniki, mogą wprowadzić błędy i odebra−
ny sygnał będzie różnić się od nadanego.
Prawdopodobieństwo wystąpienia błędu
jest w sumie niewielkie, ale nie można go
wykluczyć. Dobrze byłoby mieć informację
o wystąpieniu błędów w transmisji. Wtedy
dane można przesłać ponownie.

Wprowadzono więc dodatkowy bit

kontrolny. Wartość tego bitu zależy od
przesyłanej informacji. Umawiamy się,
że transmitowane dane powinny zawie−
rać parzystą ilość jedynek. Jeśli akurat
przesyłane kilka bitów zawiera parzystą
liczbę jedynek, bit kontrolny dodawany
w nadajniku ma wartość zero. Jeśli właś−
ciwa informacja zawiera nieparzystą licz−
bę jedynek, bit kontrolny ustawiany jest
na 1, aby całkowita liczba jedynek była
parzysta. Po stronie odbiorczej spraw−
dzana jest ilość odebranych jedynek.
Jeśli ich liczba nie jest parzysta, odbior−
nik sygnalizuje błąd. Przy odpowiedniej
organizacji transmisji, po wykryciu błędu
zafałszowane dane zostaną przesłane
jeszcze raz.

Co prawda wprowadzenie bitu kontro−

li parzystości nie daje gwarancji wykrycia
wszystkich błędów. Na przykład przy jed−
noczesnym zaistnieniu dwóch przekła−
mań odbiornik nie wykryje błędu – jednak
prawdopodobieństwo takiego zdarzenia
jest o wiele mniejsze, niż szansa pojawie−
nia się jednego przekłamania i w praktyce
to wystarcza.

Notujemy kolejną ważną wiadomość:

w przesyłanym sygnale może się zna−

leźć, choć nie musi, dodatkowy bit kont−
roli parzystości.

Bit Stopu

Po wysłaniu jednej porcji informacji

nadajnik ustawi na linii stan spoczynko−
wy, czyli stan wysoki. Jeśli nadajnik miał
wysłać tylko te kilka bitów (jeden bajt), to
stan wysoki będzie się utrzymywał, aż po
upływie dowolnie długiego czasu nadaj−
nik otrzyma rozkaz wysłania następnej
porcji informacji (następnego bajtu).
W praktyce często trzeba przesłać dużą
ilość danych i wtedy nadajnik wysyła por−
cje informacji jedną po drugiej. Między
poszczególnymi porcjami musi wystąpić
przerwa, aby odbiornik mógł prawidłowo
odebrać bit startu następnej porcji. Ta
przerwa musi trwać przynajmniej przez
czas odpowiadający transmisji jednego
bitu (albo 1,5, albo 2 bitów). To właśnie
jest kolejny warunek.

Już wiemy, że przy transmisji szerego−

wej łączem RS−232, oprócz 4...8 bitów
właściwej informacji, przesyłany jest bit
startu, bit(y) stopu i ewentualnie bit kont−
roli parzystości.

Wszystkie te zasady, czyli tak zwany

protokół transmisji, mogą się wydać
skomplikowane. Ale obecnie nikt nie pró−
buje zbudować układu realizującego poda−
ne funkcje z kostek TTL czy CMOS4000.
W praktyce albo o wszystko troszczy się
mikroprocesor, albo wykorzystywane są
specjalizowane układy scalone, tak zwane
UARTy (Uniwersal Asynchronous Recei−
ver Transmitter). W PC−tach są to kostki
8250, 16450 lub ich odpowiedniki. Istnie−
je też wiele innych UARTów, na przykład
8251, IM6402 (IM6403), itp.

Użytkownik nie troszczy się o szczegó−

ły. Musi tylko poinformować taką kostkę
jaka będzie prędkość transmisji, ile bitów
będzie transmitowanych w jednej porcji
(5...8), czy wystąpi bit kontroli parzystości
(E – even), nieparzystości (O – odd), czy
nie będzie takiego bitu (N – no parity) oraz
jaki jest minimalny czas przerwy między
kolejnymi porcjami (1, 1,5 lub 2 bity sto−
pu). Przy obsłudze komputera zwykle
ustala się te parametry programowo.

Ostatecznie struktura przesyłanych in−

formacji jest taka, jak na rry

ys

su

un

nk

ku

u 5

5.

((rre

ed

d))

Cd. w EdW7/97

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

30

Rys. 3. Sytuacja przy jednakowych
częstotliwościach zegarów nadajnika
i odbiornika.

Rys. 4. Sytuacja przy niejednakowych
częstotliwościach zegarów nadajnika
i odbiornika

Rys. 5. Struktura informacji przy przesyłaniu danych łączem szeregowym RS−232.

background image

Inne właściwości

Elektronik powinien znać podane po−

wyżej ogólne zasady transmisji szerego−
wej złączem RS. W praktyce prawdopo−
dobnie nie będzie jednak wykorzystywał
tej wiedzy. Złącze to może zostać, i częs−
to bywa przez elektroników wykorzysty−
wane w nietypowy sposób. Należy więc
poznać je bliżej.

W takich nietypowych zastosowa−

niach transmitowane sygnały nie mają
struktury pokazanej na rysunku 5, a układ
pracy nie wygląda tak, jak pokazuje rysu−
nek 2. Wykorzystuje się za to dodatkowe
linie łącza RS−232.

Każdy port szeregowy komputera PC,

oprócz linii masy (GND), linii nadawania
TxD oraz odbierania danych – RxD, ma
jeszcze sześć dodatkowych linii oznacza−
nych DTR (Data Terminal Ready), RTS
(Request to Send), CTS (Clear to Send),
DSR (Data Set Ready), DCD (Data Carrier
Detect) oraz RI (Ring Indicator).

Wymienione linie są potrzebne na

przykład przy współpracy komputera
z

modemem telefonicznym. R

Ry

ys

su

u−

n

ne

ek

k 6

6 pokazuje jak zmieniają się stany po−

szczególnych linii, gdy modem przesyła
informacje do komputera.

Podane skróty i angielskie określenia

źródłowe mogą przyprawić o ból głowy.
Na szczęście wcale nie trzeba rozumieć
dokładnie, do czego miały służyć te
wszystkie linie przy współpracy z mode−
mem. Nie trzeba też szczegółowo anali−
zować kolejności pojawiania się i znacze−
nia sygnałów na poszczególnych liniach –
wystarczy wiedza, że łącze RS−232 za−
wiera linie pomocnicze.

Elektronik musi wiedzieć, że w kom−

puterze linie oznaczane DTR i RTS mogą
pełnić funkcje wyjścia, a linie oznaczane
CTS, DSR, DCD oraz RI – mogą pełnić
funkcję wejścia.

Trzeba też umieć sterować liniami

DTR i RTS, oraz odczytywać stan lini−
i CTS, DSR, DCD i RI. Jest to w sumie
bardzo proste.

W tabeli 1 podano zwięzłu opis sygna−

łów złącza szeregowego komputera i od−
powiadające im numery końcówek złącz
9 i 25−stykowych. R

Ry

ys

su

un

ne

ek

k 7

7 pokazuje jak

poszczególne linie podłączone są do szpi−
lek gniazd.

W portach szeregowych spotyka się

zarówno złącza 9−stykowe, jak i złącza 25−
stykowe. Nie ma to większego znaczenia
dla użytkownika, najwyżej na podstawie
tabeli 1 lub rysunku 7 trzeba wykonać
prostą przejściówkę składającą się
z gniazda i wtyczki, łączącą szpilki o właś−
ciwych numerach.

W komputerze porty szeregowe mają

złącza męskie, zawierające szpilki. Nato−
miast rysunek 7 pokazuje widok i nume−
rację złącz żeńskich, czyli nasadek dołą−

K

Ko

om

mp

pu

ut

te

er

ry

y

31

E

LEKTRONIKA DLA WSZYSTKICH 6/97

Rys. 6. Stany poszczególnych linii przy przesyłaniu informacji z modemu
do komputera.

Rys. 7. Podłączenie linii do szpilek gniazd 25 i 9−pinowych.

background image

czanych do komputera. Praktyka intere−
suje właśnie to, jak okablować te nasadki
dołączane do komputera. W wypadku ja−
kichkolwiek wątpliwości co do numeracji
nóżek złącz, należy odszukać cyferki wy−
tłoczone na gniazdach i wtykach.

Poziomy napięć

Jak wspomniano na początku artyku−

łu, na wyjściach portu szeregowego wy−
stępują napięcia rzędu ±10...15V. Takie
poziomy napięć wywodzą się z epoki

przedkomputerowej. W związku z przyję−
tymi wymaganiami na poziomy napięć,

urządzenie zawierające port szeregowy
musi zawierać obwody zasilania napię−
ciem ±10...15V albo też przetwornice,
wytwarzające takie napięcia ze standar−
dowego napięcia zasilania systemów lo−
gicznych, równego 5V lub 3,3V.

Schemat blokowy typowego portu

szeregowego pokazany jest na rry

ys

su

un

n−

k

ku

u 8

8. Procesor wpisuje do układu UART

rozkazy sterujące, dane do przesłania
i odczytuje odebrane dane. W kompute−
rach PC wykorzystuje się kostkę UART

8250, 16450, albo stosuje się rozwiązania
zgodne z nimi programowo.

Oprócz kostki UART konieczne są

jeszcze układy dopasowujące poziomy
napięć (0...+5V lub 0...+3,3V komputera,
do napięć wymaganych w liniach łącza
RS−232). Dawniej typowym układem od−
biorczym była kostka o numerze 1488
i układem nadawczym – 1489. Te układy
dopasowujące były zasilane napięciem
symetrycznym ±10...15V. Schematy we−
wnętrzne jednego toru nadajnika 1488
i odbiornika 1489 pokazane są na rry

ys

su

un

n−

k

ku

u 9

9. Obecnie bardzo wiele urządzeń

przenośnych zasilanych jest z baterii, dla−
tego powszechnie stosuje się tam układy
sprzęgające, które dodatkowo wyposażo−
ne są w system przetwornic, które z po−
jedynczego napięcia o wartości 5 lub na−
wet 3,3V wytwarzają napięcia symetrycz−
ne wymagane w standardzie RS−232. No−
woczesne kostki tego typu przedstawio−
ne są w Klubie Konstruktorów.

Na rry

ys

su

un

nk

ku

u 1

10

0 pokazano dopuszczalne

zakresy napięć na wyjściach i wejściach
łącza RS dla stanów logicznych 0 i 1 we−
dług normy. Obok (rys 10c) podano, jak
wejścia interpretują podawane na nie na−
pięcia.

Z poziomami napięć na trzech wy−

jściach portu szeregowego jest trochę za−
mieszania, dlatego nie zaznaczono, jakie
napięcia odpowiadają ligicznej 1, a jakie
logicznemu 0. Mówi się, że informacja
wysyłana przez linię TxD jest zanegowa−
na. W rzeczywistości jest ona podwójnie
negowana. Dla Czytelników EdW takie
szczegóły nie są istotne. Najważniejszy
jest fakt, że dwa urządzenia wyposażone
w złacze RS−232 potrafią się porozumieć,
o ile tylko jednakowo zaprogramowane
zostaną parametry transmisji.

Elektronik, chcący wykorzystać port

szeregowy powinien wiedzieć, że po włą−
czeniu komputera, na wszystkich trzech
wyjściach portu RS−232C występują na−
pięcia ujemne.

Wpisanie przez procesor do któregoś

z wyjść portu (DTR lub RTS), logicznej je−
dynki (czyli ustawienie tego wyjścia), po−
woduje pojawienie się na odpowiedniej
linii napięcia dodatniego o wartości
10...15V. Ponowne wpisanie tam zera po−
woduje pojawienie się napięcia ujemne−
go o podobnej wartości.

Właśnie te napięcia można wykorzys−

tać jako źródło zasilania dla dołączonych
z zewnątrz układów. Ponieważ z wyjść
można pobrać prąd rzędu kilku miliampe−
rów, a współczesne kostki zużywają bar−
dzo mało prądu, złącze RS może zasilać
nawet dość rozbudowany układ.

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

32

Rys. 8. Blokowy schemat portu szeregowego PC−ta.

Rys. 9a. Schemat wewnętrzny
jednego toru nadajnika 1488.

Rys. 9b. Schemat wewnętrzny
jednego toru odbiornika 1489.

Rys. 10.

background image

Przykładowo linie wyjściowe DTR

i RTS (ustawione w przeciwnych sta−

nach) mogą służyć jako źródło napięcia
zasilającego, a linia RxD będzie pełnić
funkcje wyjścia sygnałów.

W zasadzie już jedna linia wyjściowa

może dostarczyć napięć symetrycznych.
Wystarczy by komputerz odpowiednią
częstotliwością ustawiał na niej na prze−
mian stan wysoki i niski – napięcia sy−
metryczne można uzyskać z pomocą
dwóch diod i dwóch kondensatorów
w układzie z rry

ys

su

un

nk

ku

u 1

11

1.

Często do zasilania współpracującego

urządzenia wystarczy napięcie o jednej
biegunowości. Wykorzystuje się wtedy
w bardzo prosty sposób jedną linię, i to li−
nię, która jednocześnie transmituje dane.
Na rry

ys

su

un

nk

ku

u 1

12

2 pokazano sposób zasilania

urządzenia i przesyłania do niego informa−
cji za pomocą tylko dwóch przewodów.

Wiadomo, że z portu szeregowego na

linię wysyłane są napięcia dodatnie
i ujemne o znacznej wartości. Natomiast
wejścia portu wcale nie muszą być stero−
wane takimi napięciami, jak pokazano na
rysunku 10b. W zasadzie norma mówi,
że sygnały przychodzące do wejścia po−
winny mieć napięcie (dodatnie lub ujem−
ne) większe niż 3V. Ale w rzeczywistości
układy odbiorcze (z nielicznymi wyjątka−
mi) konstruuje się w ten sposób, że na−
pięcia większe niż +1,25V traktowane są
jako stan wysoki, a mniejsze niż +1V: ja−
ko stan niski. Wejścia wyposażone są po−

nadto w obwód histerezy, nie dopuszcza−
jącej do powstania przekłamań i drgań,
także w zakresie napięć wejściowych
+1...+1,25V. Pokazano to na rysunku 10c.

Jest to bardzo pożyteczne rozwiąza−

nie. Dzięki niemu wejście portu szerego−
wego komputera może być sterowane
sygnałami o poziomach TTL! Jest to bar−
dzo ważna cecha, często wykorzystywa−
na w praktyce. Port szeregowy kompute−
ra wysyła napięcia bipolarne, jak pokaza−
no na rysunku 10a. Ale wejścia tego por−
tu prawidłowo odczytają dane o pozio−
mach TTL – to znaczy, że urządzenie
współpracujące z komputerem wcale nie
musi być wyposażone we wspomniane
układy sprzęgające, zasilane napięciami
symetrycznymi – wystarczy zasilanie po−
jedynczym napięciem w zakresie 3...15V.
Takie właściwości wejść portu szerego−
wego otwierają przed amatorami duże
możliwości i znakomicie upraszczają bu−
dowę urządzeń współpracujących.

Podane właśnie informacje są bardzo

ważne dla każdego praktyka, bowiem po−
zwalają wykorzystać szeregowe porty
komputera na wiele nietypowych, a bar−
dzo ciekawych sposobów. W dalszej
części artykułu podane będą propozycje
prostych eksperymentów z portem sze−
regowym. Ale najpierw trzeba się nau−
czyć ustawiać i odczytywać stan po−
szczególnych linii portu.

Adresowanie

Z punktu widzenia procesora (a także

z punktu widzenia programu, np. QBasi−
ca), obsługa portów polega na wpisywa−
niu i odczytywaniu bajtów informacji
spod ściśle określonych adresów. Jest to
bardzo proste: wpisujemy bajt pod okreś−
lony adres i tym samym zmieniamy stany
linii wyjściowych portu. Odczytujemy bajt
spod pewnego adresu i otrzymujemy in−
formacje o stanie linii wejściowych
w momencie odczytu.

Elektronikowi−praktykowi nie są po−

trzebne wszystkie szczegóły na ten te−
mat. Trzeba jednak rozumieć pewne pod−
stawowe zagadnienie.

Z grubsza biorąc, w PC−cie mamy do

czynienia z dwoma rodzajami adresów.
Jak wiadomo, adresy są liczbami, wyra−
żanymi najczęściej w systemie szesnast−
kowym (dlatego liczby te poprzedzone
są, lub zakończone, literką H−hexadeci−
mal, a oprócz cyfr 0...9 zawierają znaki
A...F).

Jedne adresy dotyczą współpracy pro−

cesora z pamięcią operacyjną (RAM). Za−
kres tych adresów sięga od zera do dzie−
siątków milionów – taki zakres jest po−
trzebny do obsługi dzisiejszych pamięci
RAM o pojemności 32 lub 64 megabaj−
tów.

Drugi rodzaj adresów dotyczy współ−

pracy procesora z najróżniejszymi urzą−
dzeniami wejścia/wyjścia. Zakres tych
adresów wynosi w zasadzie od zera do
65536 (szesnastkowo FFFFH), ale z tej
liczby wykorzystuje się co najwyżej kilka−
set adresów.

Mamy więc w PC−cie sytuację, że ten

sam adres z zakresu 0...FFFFH może być
adresem komórki w pamięci RAM, i adre−
sem urządzenia wejścia/wyjścia. Kompu−
ter w sobie znany sposób radzi sobie z ty−
mi podwójnymi adresami. Nas to w zasa−
dzie może nie obchodzić, wystarczy, że
poinformujemy prosesor, że ma on od−
czytać lub zapisać dane do urządzenia
wejścia/wyjścia, a nie z/do pamięci RAM.

Jak się za chwilę okaże, jest to bardzo

proste. Jest to tym bardziej łatwe, że
w PC−cie dla poszczególnych urządzeń
wejścia/wyjścia, a w tym także dla na−
szych portów, zarezerwowano pewne
stałe adresy.

Mamy więc tak zwane adresy bazowe

portów.

Adresy bazowe portów

Porty szeregowe COM1 i COM2 mają

adresy bazowe (w zapisie szesnastko−
wym) 3F8 i 2F8, czyli w zapisie dziesięt−
nym 1016 i 760 (ewentualne porty
COM3 i COM4 mają adresy szestnastko−
we 3E8 i 2E8, co dziesiętnie daje 1000
i 744).

Pod każdym adresem znajduje się oś−

miobitowy rejestr (coś w rodzaju komórki
pamięci). Przy normalnej transmisji szere−
gowej (wg rysunków 2 i 5), pod te adre−
sy wpisuje się (ośmiobitowe) dane do
wysłania, i spod tych samych adresów
odczytuje się dane odebrane z lini−
i (z tego wynika, że w rzeczywistości pod
tym jednym adresem bazowym są dwa
rejestry: wyjściowy i wejściowy, ale dla
nas nie jest to istotne).

Do zaadresowanego rejestru możemy

więc wpisać (lub odczytać) dowolną licz−

z

zakresu

0...255

(binarnie

0...11111111). Bardzo często nie chodzi
nam o liczbę, tylko o ustawienie w stan
1, lub wyzerownie poszczególnych bitów
tego rejestru. Powiedzmy, że chcemy
wpisać jedynkę do dwóch najstarszych
bitów rejestru. To znaczy, że do tego re−
jestru musimy wpisać liczbę binarną
11000000. Liczba ta przedstawiona w za−
pisie dziesiętnym to 192. Z poziomu
QBasica każemy więc wpisać pod okreś−
lony adres liczbę 192 – tym samym wpi−
szemy dwie jedynki do najstarszych bi−
tów rejestru. Analogicznie rozkaz wpisa−
nia liczby 7 wpisze jedynki do trzech naj−
młodszych bitów rejestru (bo liczba 7 to
binarnie 00000111).

Jak wspomniano, w komputerze PC

do obsługi portu szeregowego wykorzys−

K

Ko

om

mp

pu

ut

te

er

ry

y

33

E

LEKTRONIKA DLA WSZYSTKICH 6/97

Rys. 12. Zasilanie przez linię
transmisyjną.

Rys. 11. Zasilanie bipolarne z portu RS.

background image

tuje się albo kostkę UART 8250, albo sto−
suje się rozwiązania zgodne programowo
z tą kostką. W rzeczywistości do obsługi
wszystkich funkcji portu szeregowego
wykorzystuje się nie jeden (adres bazo−
wy), ale kilka kolejnych adresów. Dla ułat−
wienia, zamiast dla każdego portu poda−
wać wszystkie kolejne adresy, do adresu
bazowego dodaje się tak zwany offset,
czyli liczbę z zakresu 1...6.

Pokazuje to rry

ys

su

un

ne

ek

k 1

13

3. Znów nie trze−

ba znać szczegółów. Ważna jest wiado−
mość, że aby wykorzystać wspomniane
wcześniej dodatkowe linie portu szerego−
wego trzeba sięgnąć pod właściwe adre−
sy.

Przykładowo jeśli pod adres szesnast−

kowy 3FC, (czyli 3F8+2, gdzie 2 to wspo−
mniany offset) do najmłodszego bitu (D0)
wpiszemy jedynkę, czyli do rejestru wpi−
szemy liczbę binarną 00000001, to usta−
wimy linię DTR portu COM1. Gdy wpi−
szemy tam zero – powrócimy do stanu
spoczynkowego. Tak samo możemy ste−
rować linią RTS, wpisując pod ten sam
adres do bitu D1 jedynkę lub zero. Jedyn−
ka na miejscu D1 to w zapisie binarnym
00000010, czyli liczba 2.

Uważny Czytelnik domyślił się samo−

dzielnie, że można jednocześnie zmieniać
stany obu wyjść DTR i RTS. Wpisanie
pod adres 3FC liczby 3, czyli binarnie
00000011 ustawi oba wyjścia; wpisanie
00000010 wyzeruje linię DTR, pozosta−
wiając ustawioną linię RTS, itd.

A więc rejestr o adresie (AdresBazo−

wyPortu + 2) daje możliwość sterowania
liniami DTR i RTS danego portu.

Jak wspomniano, wyjście TxD w zasa−

dzie służy do szeregowego wysyłania
5...8 bitowych danych wpisywanych
przez procesor do rejestru znajdującego
się pod adresem bazowym (dla COM1 –
3F8H). W stanie spoczynku na lini−
i TxD występuje napięcie ujemne. Ale
w zastosowaniach nietypowych często
po prostu ustawia się tę linię w jeden ze
stanów. Ustawienie na wyjściu TxD na−
pięcia dodatniego jest możliwe przez

ustawienie siódmego bitu (D6), czyli wpi−
sanie liczby dwójkowej 01000000, pod
adresem (AdresBazowyPortu + 3). Póź−
niejsze wpisanie tam zera znów zmieni
napięcie wyjściowe na ujemne itd...

Naturalnie po wpisaniu tam jedynki

wyjście TxD nie będzie wykorzystywane
w typowy sposób pokazany na rysunkach
2 i 5.

Aby uzyskać informacje o stanie lini−

i CTS, DSR, DCD i RI, wystarczy odczytać
bajt spod adresu (AdresBazowy Portu
+ 6), czyli na przykład dla portu COM1 –
będzie to adres (szesnastkowo) 3FE, czy−
li właśnie 3F8+6. Cztery najstarsze bity
zawierają informacje o stanie tych wejść
w momencie odczytu.

Podane właśnie wiadomości mogą

w pierwszej chwili wydać się trudne,
szczególnie

dla

początkujących.

W rzeczywistości wykorzystanie ich jest
niezmiernie proste, zwłaszcza za pomocą
QBasica.

Eksperymenty

Każdy posiadacz jakiegokolwiek kom−

putera PC może od razu praktycznie wy−
korzystać podane właśnie wiadomości.
Za pomocą łącza szeregowego PC−ta
można sterować wielu urządzeniami
i zbierać informacje od takich urządzeń.
Do pierwszych fascynujących ekspery−
mentów wystarczy elementarna znajo−
mość języka QBasic. W ostatnich nume−
rach EdW przedstawiono książki „Przy−
gody z komputerem i bez komputera”
oraz „QBasic nie tylko dla orłów”. Książ−
ki te pomogą nawet zupełnie początkują−
cym bezbolesne zapoznanie się z podsta−
wami programowania. A wiadomości
z niniejszego artykułu umożliwią różno−
rodne wykorzystanie zalet portu szerego−
wego.

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

34

Rys. 13. Przestrzeń adresowa portu szeregowego.

Rys. 14. Schemat prostego układu do eksperymentów z portem szeregowym
komputera PC.

background image

ABP = &H3F8

OUT (ABP + 4), 3

IF (INP(ABP + 6) AND 16) = 16 THEN PRINT „CTS – plus” ELSE PRINT „CTS – minus lub masa”

IF (INP(ABP + 6) AND 32) = 32 THEN PRINT „DSR – plus” ELSE PRINT „DSR – minus lub masa”

IF (INP(ABP + 6) AND 64) = 64 THEN PRINT „RI – plus” ELSE PRINT „RI – minus lub masa”

IF (INP(ABP + 6) AND 128) = 128 THEN PRINT „DCD – plus” ELSE PRINT „DCD – minus lub masa”

END

background image

Na początek warto zapoznać się prak−

tycznie z działaniem poszczególnych lini−
i portu.

Na rry

ys

su

un

nk

ku

u 1

14

4 pokazano schemat naj−

prostszego układu do eksperymentów
z portem szeregowym.

Zmontowany układ widać na fotografi−

i. Jeśli w komputerze występują złącza 9−
pinowe, należy skorzystać z tabeli 1 i ry−
sunku 7.

Programowanie

Dostęp do wspomnianych adresów

z poziomu języka QBasic jest dziecinnie
prosty. Najpierw należy podłączyć do
wolnego portu szeregowego układzik
o schemacie z rry

ys

su

un

nk

ku

u 1

14

4. Jeden z por−

tów szeregowych jest zwykle zajęty
przez myszkę. Trzeba sprawdzić lub zapy−
tać znajomego komputerowca, który port
jest zajęty, a który wolny. Chodzi o usta−
lenie adresu bazowego wolnego portu.
U piszącego te słowa port COM2 obsłu−
guje myszkę, więc do eksperymentów
posłuży port COM1 o adresie szesnast−
kowym 3F8.

Następnie trzeba uruchomić interpre−

ter QBasic. Nie należy uruchomiać QBa−
sica spod Windows, bo próby się nie uda−
dzą. Z poziomu DOSa wykonuje się to po
prostu pisząc:

i naciskając enter. Jeśli ten sposób nie
uruchomi basica, należy podać ścieżkę
dostępu, najczęściej będzie to:

i nacisnąć enter, a za chwilę klawisz
esc(ape), by usunąć z ekranu informację
wstępną. Jeśli i to nie zadziała, trzeba po−
prosić o pomoc przy pierwszym urucho−
mieniu QBasica kogokolwiek, kto choć
trochę zna się na komputerze.

Od chwili włączenia komputera, na li−

niach wyjściowych portu powinny wystą−
pić napięcia ujemne, czyli na początku
świecić się będą diody czerwone.

Teraz można wpisać następujący pro−

gramik:

i nacisnąć klawisz oznaczony F5 (lub wy−
brać z górnego menu Run, a potem
Start).

W pierwszej linii zadeklarowaliśmy ad−

res bazowy naszego wolnego portu, do
którego jest dołączony układzik testowy.
Ten adres to 3F8. Znak & wskazuje że
jest to tak zwana stała liczbowa, a litera
H przez adresem 3F8 – że jest to liczba
szesnastkowa (Hexadecimal). Jeśli ktoś
wykorzystuje port o innym adresie bazo−

wym, przypisze stałej ABP aktualną war−
tość, reszta programu zostaje bez zmian.

W drugiej linii, poleceniem OUT, każe−

my do rejestru wyjściowego o adresie
(AdresBazowyPortu+4) zapisać liczbę 3,
czyli w zapisie binarnym 00000011. Tym
samym ustawiamy bity odpowiedzialne
za stan linii wyjściowych DTR i RTS.

Po naciśnięciu klawisza F5 uruchomi−

my program – zmienimy stan lini−
i DTR i RTS, zaświecą się dwie żółte dio−
dy.

Po naciśnięciu dowolnego klawisza

wrócimy do ekranu QBasica.

Zmieńmy drugą linię programu:

Po naciśnięciu F5, znów zaświecą się

wszystkie diody czerwone.

Po naciśnięciu jakiegokolwiek klawi−

sza znów zmodyfikujemy program:

Druga linia programu ustawi wyjścia

DTR i RTS, a trzecia linia, wpisując pod
adres (AdresBazowyPortu+3) liczbę 64
czyli dwójkowo 01000000, zmieni stan li−
nii TxD, czyli zaświeci trzecią żółtą diodę.

I to wszystko!
Jak się przekonałeś, sterowanie linia−

mi RTS, DTR i TxD jest naprawdę dziecin−
nie łatwe.

Wpisz jeszcze krótki programik:

Diody sterowane przez linię DTR po−

winny zapalać się na przemian (z pręd−
kością zależną od częstotliwości zegara
taktującego twego komputera), aż do
czasu naciśnięcia jakiegokolwiek klawi−
sza. Zmień w linii 40 wpisywaną wartość
z 0 na 2 i uruchom program – będą migać
obie diody.

Aby odczytać stan linii wejściowych

CTS, DSR, DCD i RI ustaw przynajmniej
na jednym z wyjść wyjść napięcie dodat−
nie – przełączniki trzeba zasilić napięciem
dodatnim. To napięcie zostanie podane
przez diodę(y) na przełączniki. W zależ−
ności od stanu przełączników, na po−
szczególnych wejściach pojawi się albo
napięcie dodatnie (przełącznik zwarty), al−
bo napięcie masy (przełącznik zamknię−
ty). Odczytaj zawartość rejestru spod ad−

resu (AdresBazowyPortu+6) i zinterpretuj
wyniki. Pomoże ci w tym programik
umieszczony na dole strony.

W drugiej linii powyższego programu

ustawiłeś dodatnie napięcie na liniach
DTR i RTS. Kolejne linie sprawdzają stany
poszczególnych bitów rejestru o adresie
(AdresBazowyPortu+6) i wypisują na ek−
ranie, czy na daną linię podano napięcie
dodatnie, czy nie. Wykorzystałeś funkcję
INP. Funkcja ta odczytała cały bajt infor−
macji spod podanego adresu. Za pomocą
iloczynu AND kolejno sprawdzane są sta−
ny czterech najstarszych bitów tego bajtu
i w zależności od wyniku, wypisywany
jest stosowny komunikat (pamiętaj, że
np. 16 to binarnie 00010000, więc funk−
cja AND sprawdzi wartość bitu D4, wska−
zującego, jak podaje rysunek 13, stan linii
CTS).

W ten prosty sposób nie możesz jed−

nak odczytać stanu linii RxD. Niewielka
strata, cztery linie wejściowe to też spo−
ro.

Podane krótkie programy pokazują,

w jak prosty sposób steruje się liniami
wyjściowymi i

odczytuje stan lini−

i wejściowych. Otwiera ci to drogę do
najróżniejszych zastosowań, oczywiście
nie tylko do zapalania i gaszenia trzech
diod LED.

Jeśli do tej pory nie splamiłeś się pro−

gramowaniem i coś w podanych progra−
mikach nie jest dla ciebie jasne, powinie−
neś sięgnąć do książek o Basicu, przed−
stawionych w EdW 1/97 i 3/97 (kupony
rabatowe jeszcze zachowują ważność).

Na życzenie Czytelników redakcja mo−

że przedstawić praktyczne przykłady wy−
korzystania portu szeregowego.

((rre

ed

d))

10 ABP = &H3F8

20 OUT (ABP + 4), 1

30 FOR N = 1 TO 1000: NEXT N

40 OUT (ABP + 4), 0

50 FOR N = 1 TO 1000: NEXT N

60 IF INKEY$ <> „” THEN END

70 GOTO 20

ABP = &H3F8

OUT (ABP+4),3

OUT (ABP+3),64

ABP = &H3F8

OUT (ABP+4),0

ABP = &H3F8

OUT (ABP + 4), 3

c:\dos\qbasic

qbasic

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

36


Wyszukiwarka

Podobne podstrony:
cwiczenia 19 16.05.2008, cwiczenia - dr skladowski
cwiczenia 19 16.05.2008, cwiczenia - dr skladowski
Fin 19 16 12 K Waliszewski
19 (16) doc
Grishkova kompetenciya 16 id 19 Nieznany
Wykład 16 (19.12.07), toxycologia
19.20.02.2011r.i 20.03 i 16.04- prawo finansowe, Administracja WSEI Lublin, Makarzec
przeciwienstwa 04 str 16 19 gawlik
spr16, 16, Rzeszów 19
spr16, 16, Rzeszów 19
KPC - Wykład (16), 19.02.2013
Teoria egzamin 16.09, 17-19, Zadanie 17
1,7,16,19,22,25
16 (19)
dodawanie (16-17-18-19), matematyka
excercise2, nader 16, 17, 18, 19

więcej podobnych podstron