|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mint a fenti táblázatból kitűnik a COM1 és COM3, valamint a COM2 és COM4 ugyanazt a megszakításvonalat használja, ez azonban csak a portot közvetlenül kezelő alkalmazói programok számára érdekes, mivel a szabvány BIOS rutinok nem kezeli ezeket a megszakításokat.
A BIOS szervízrutinok adatbájtok küldésére, a vonal-állapot lekérdezésére, valamint adatok polling-jellegű fogadására képesek. (Ez utóbbi azt jelenti, hogy az érkező bájtokat csak a port állandó monitorozásával tudja észlelni és nem képes az adapter által egyébként biztosított megszakítások felhasználására).
A BIOS a gépbe épített soros portok számát a bekapcsolási önteszt során állapítja meg és azok báziscímeit a BIOS adatterületen a 0400h fizikai címen kezdődő 4 darab word-ön tárolja el. Mivel maguk a szervízrutinok az itt tárolt báziscímek felhasználásával kommunikálnak a soros portokkal, így ezen adatterület utólagos módosításával az eredeti sorszám-adapter hozzárendelések tetszőlegesen megváltoztathatók.
Mivel a BIOS rutinok a komolyabb felhasználást nem teszik lehetővé,
ismerkedjünk meg az adapter közvetlen programozásával.
Cím | Típus | Jelentés | |||||
B+0 | Csak írható | Adó adat-regiszter (DLA=0), vagy frekvenciaosztó alacsony helyiérték? bájtja (DLA=1) | |||||
B+0 | Csak olvasható | Vev? adat-regiszter | |||||
B+1 | Írható-olvasható | Megszakítás-engedélyez? regiszter (ha DLA=0), vagy frekvenciaosztó magas helyiérték? bájtja (DLA=1) | |||||
B+2 | Csak olvasható | Megszakítás-azonosító regiszter | |||||
7-3 |
|
nem használt (0) | |||||
2-1 |
|
megszakítás azonosító: | |||||
11 |
|
vonal állapot-változása | |||||
10 |
|
bájt vétele | |||||
01 |
|
bájt elküldve | |||||
00 |
|
modem állapotváltozása | |||||
B+3 | Írható-olvasható | Parancsregiszter | |||||
7 |
|
regiszter-kiválasztó (DLA): 0 - adat-regiszter, 1 - frekvenciaosztó) | |||||
6 |
|
BREAK, adási adatvonal szintjének 0-ra húzása | |||||
5 |
|
ha 1, a paritás-bit fixen a 4.bit invertáltja lesz | |||||
4 |
|
paritás kiválasztása, ha 5. bit 0: | |||||
1 |
|
páratlan (odd) paritás | |||||
0 |
|
páros (even) paritás | |||||
3 |
|
0: tiltja a paritás, 1 : a paritást az 5.-4. bitek határozzák meg | |||||
2 |
|
stop-bitek számának meghatározása: 0 - 1 stop bit, 1 - 2 stop bit | |||||
1-0 |
|
adatszó hosszának (adatbitek számának) meghatározása | |||||
11 |
|
8 adatbit | |||||
10 |
|
7 adatbit | |||||
01 |
|
6 adatbit | |||||
00 |
|
5 adatbit | |||||
B+4 | Írható-olvasható | Modem-vezérl? regiszter | |||||
7-5 |
|
nem használt (0) | |||||
4 |
|
diagnosztikai mód bekapcsolása | |||||
3-2 |
|
OUT2 ill. OUT1 (ált. nem bekötött vezetékek) invertált vezérlése | |||||
1 |
|
RTS jel vezérlése (invertált) | |||||
0 |
|
DTR jel vezérlése (invertált) | |||||
B+5 | Csak olvasható | Vonal állapot-regiszter | |||||
7 |
|
nem használt (0) (16650+: a FIFO-ban legalább egy hibásan érkezett bájt található) | |||||
6 |
|
nincs adás folyamatban | |||||
5 |
|
az adó adatregisztere üres | |||||
4 |
|
a vonal BREAK állapotban (lásd B+3 6. bit) | |||||
3 |
|
keret-hiba történt (vételkor hiányzott a stop-bit) | |||||
2 |
|
paritás-hiba történt | |||||
1 |
|
ráfutás történt (adat veszett el a vezetéken, mert az el?z? bájt nem lett id?ben kiolvasva) | |||||
0 |
|
a vev? adat-regiszterében érvényes adat van | |||||
B+6 | Csak olvasható | Modem állapot-regiszter | |||||
7 |
|
adatátviv? jelen (Data Carrier Detect) | |||||
6 |
|
csengés felfutó ágban (Ring Indicator) | |||||
5 |
|
az adatátviteli berendezés kész (Data Set Ready) | |||||
4 |
|
Adásra kész (Clear To Send) | |||||
3 |
|
A DCD megváltozott az utolsó olvasás óta (Delta DCD) | |||||
2 |
|
az RI inaktív állapotra váltott az utolsó olvasás óta (Delta RI) | |||||
1 |
|
a DSR megváltozott az utolsó olvasás óta (Delta DSR) | |||||
0 |
|
a CTS megváltozott az utolsó olvasás óta (Delta CTS) | |||||
B+7 | Írható-olvasható | Scratch register | |||||
Csak 16450 v. újabb UART-on létez? általános célú regiszter. Általában nem használt. |
A következő részben megismerkedünk a modemmel történő kommunikációval,
valamint egy teljes megszakítás-vezérelt gyűrű-pufferes kommunikációs unitot
is közlünk.