Re: porty UART ???

Autor: Andrzej Karpinski (KARPIO_at_golem.umcs.lublin.pl)
Data: Thu 22 Feb 1996 - 23:03:58 MET


: Czytalem, ze aby kupowac modem zewnetrzny potrzeba (najlepiej)
: miec tak zwany port UART.
: Czy moglby mi ktos powiedziec co to jest za 'potwor' ten port i
: czy w starych modelach komputerow mozna cos takiego zainstalowac?

Szymon wyjasnil wystarczajaco dokladnie co to jest UART - po prostu jest to
uklad odpowiadajacy za obsluge RS232. Generalnie nalezy zwrocic uwage na to,
w jaki sposob komputer "rozmawia" z modemem. Dane do modemu wysylane sa
asynchronicznie. Polega to na tym, ze gdy np. ustawimy predkosc 1200 to de
facto ustawiamy jedynie CZAS TRWANIA kazdego bitu oraz CZAS po jakim moze
pojawic sie nastepny. Mimo ustawienia powiedzmy 115200 komputer wcale NIE
MUSI wysylac danych akurat z taka predkoscia. Natomiast czas trwania kazdego
bitu, oraz czas po jakim moze sie pojawic nastepny sa wtedy scisle
zdefiniowane. Zrozumienie tego wyjasnia, dlaczego np. nie mozna z taka
predkoscia polaczyc starego AT i jakiegos Pentiuma - po prostu 286 nie
bedzie w stanie w tym samym czasie przetworzyc takiej samej ilosci
informacji co Pentium. Teraz latwo tez zrozumiec dlaczego nie powinno sie
podlaczac bardzo szybkich modemow do klasycznych UARTow. Wlasnie,
klasycznych to znaczy jakich? Otoz generalnie w PC spotyka sie 3 moze 4
rodzaje kosci odpowiedzialnych za obsluge RSow. Najstarsze sa to po prostu
zwykle 8250 stosowane czesto np. w roznych interfejsach, miernikach itp
spelniajace po prostu role ukladu wejscia/wyjscia. Odrobinke nowsze 16450 sa
w chwili obecnej chyba najczesciej spotykane. Poza nieco wieksza predkoscia
wlasciwie nie roznia sie od wymienionych wczesniej. Warto wspomniec jak
dziala taki port. Otoz w klasycznym 16450 wystepuje jednobajtowy buforek
(FIFO) do ktorego ladowany jest znak i przechowywany do czasu obsluzenia
przerwania lub nadejscia nastepnego znaku ktory zastepuje go. To powoduje
gubienie danych jesli komputer nie wyrabia sie poniewaz predkosc danych jest
zbyt duza. Latwo to wyliczyc poniewaz na obsluge kazdego przychodzacego
bajtu potrzeba dokladnie jednego przerwania, ktore z kolei zabiera ilestam
rozkazow i czasu. Nawet jesli procesor jest wystarczajaco szybki by w
normalnych warunkach poradzic sobie z obsluga danego portu to pojawia sie
problemy gdy jednoczesnie zazadamy np. oblugi dysku czy innego zadania.
Nowsze uklady (nieudany 16550 i nowszy 16550A) posiadaja wiekszy bufor
(16550 8 bajtow - niestety dziala tylko w jedna strone czyli albo jako
wyjsciowy, albo jako wejsciowy, 16550A 16-bajtow ktory mozna dowolnie
podzielic np. 12/4 czyli 12 bajtow wyjscia i 4 wejscia). Umozliwia to
przyjecie bez straty wiekszej ilosci informacji i tym samym zmniejszenie
obciazenia procesora poprzez znaczne zmniejszenie ilosci przerwan
potrzebnych do obslugi transmisji. Generalnie bez zadnych problemow udaje
sie transmitowac np. pojedyncze znaki z dowolnie duza predkoscia terminala.
Problemy pojawia sie dopiero przy trnasmisji plikow czy innych duzych
obciazeniach. Zastosowanie 16550A pozwala wyeliminowac duza czesc problemow
z transmisja. Moim zdaniem kazdy modem szybszy niz 2400 powinien byc
podlaczany do portu z 16550A. Zastosowanie buforowanych portow dla
wolniejszych modemow jest takze oczywiscie sensowne, chociaz nie niezbedne.
Dodatkowo warto zwrocic uwage, ze ze wspolczesnymi modemami nalezy "gadac"
znacznie szybciej niz wynosi ich fizyczna predkosc - np. majac modem 14400
mozemy bez problemu ustawic predkosci na 57600 uzyskujac dzieki temu wzrost
predkosci trnasmisji (kompresja, komunikacja synchroniczna miedzy modemami).
Dodatkowo warto pamietac o wlaczeniu bufora w samym modemie (najczesciej
polecenie at%c1), ktory pozwala na dalsze zmniejszenie "zajecia" procesora,
a wiec przyspieszenie pracy. Szczegolnie istotne jest to o czym pisze w
szybkich modemach, systemach wialozadaniowych i pseudo-wielozadaniowych oraz
np. bbsach gdzie sysop odpowiada za jak najwieksza wydajnosc (uzytkownicy
przeciez placa rachunki telefoniczne i np. 20% przyspieszenie transmisji ma
istotne znaczenie). Mysle, ze wyjasnilem chociaz troche watpliwosci, jesli
pojawia sie nastepne to chetnie dalej sie powymadrzam :)

karpio

ps. sa oczywiscie takze inne uklady, czy nawet karty wyposazone we wlasne
procesory klasy RISC i megabajty pamieci przeznaczone do obslugo RS w PC,
ale zwyklych uzytkownikow generalnie nie powinny specjalnie interesowac.
Warto natomiast wspomniec o ciekawym ukladzie 16552 ktory od zwyklego rozni
sie mozliwoscia podwojenia predkosci wyjsciowej transmisji - np. program
terminalowy mysli ze wysyla dane do fifowanego portu 38400 a dane
faktycznie wysylane sa z predkoscia 57600. Ma to szczegolne znacznienie w
przypadku modemow v34 ktore potrafia gadac z terminalem szybciej niz 115200.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 12:39:14 MET DST