| Zeile 1: | Zeile 1: | ||
| − | Die '''serielle Schnittstelle''' (Abkürzung: '''COM''' oder '''RS232''') | + | Die '''serielle Schnittstelle''' (Abkürzung: '''COM''' von ''Communication'' oder '''RS232''', heute '''EIA232''' genannt) ist eine 1980 eingeführte Schnittstelle für die Übertragung von Daten, meist von Computer zu Computer. |
| − | ==Basis-I/O-Ports | + | |
| + | == Funktionsweise == | ||
| + | Daten werden bei der seriellen Schnittstellen als Wörter übertragen, welche je nach Konfiguration fünf bis neun Bits entsprechen. Codiert werden diese Wörter nach dem ASCII-Zeichensatz. Der wichtigste Unterschied zur [[parallelen Schnittstelle]] ist, dass die Bits nacheinander übertragen werden. | ||
| + | |||
| + | == Aufbau == | ||
| + | === Basis-I/O-Ports === | ||
Normalerweise haben die COM-Ports folgende Basis-I/O-Ports: | Normalerweise haben die COM-Ports folgende Basis-I/O-Ports: | ||
{| {{prettytable}} | {| {{prettytable}} | ||
| Zeile 16: | Zeile 21: | ||
Man sollte die Basis-I/O-Ports aber aus der [[BIOS Data Area]] auslesen. | Man sollte die Basis-I/O-Ports aber aus der [[BIOS Data Area]] auslesen. | ||
| − | ==Offsets der einzelnen Register== | + | === Offsets der einzelnen Register === |
Da ein COM-Port mehrere Register benutzt, braucht er auch mehrere I/O-Ports. Die oben angegebenen I/O-Ports sind nur die Basis-I/O-Ports. Man muss also nachher noch das Offset der einzelnen Register addieren. Folgende Register verbergen sich hinter den Offsets: | Da ein COM-Port mehrere Register benutzt, braucht er auch mehrere I/O-Ports. Die oben angegebenen I/O-Ports sind nur die Basis-I/O-Ports. Man muss also nachher noch das Offset der einzelnen Register addieren. Folgende Register verbergen sich hinter den Offsets: | ||
| Zeile 127: | Zeile 132: | ||
} | } | ||
| − | // | + | // Prüft, ob man bereits schreiben kann |
uint8_t is_transmit_empty(u16 base) { | uint8_t is_transmit_empty(u16 base) { | ||
return inb(base+LSR)&0x20; | return inb(base+LSR)&0x20; | ||
| Zeile 138: | Zeile 143: | ||
} | } | ||
| − | // | + | // Prüft, ob man bereits lesen kann |
uint8_t serial_received(uint16_t base) { | uint8_t serial_received(uint16_t base) { | ||
return inb(base+LSR)&1; | return inb(base+LSR)&1; | ||
| Zeile 151: | Zeile 156: | ||
==Weblinks== | ==Weblinks== | ||
| − | * http://www.nondot.org/sabre/os/files/Communication/CP_serial.pdf | + | * [http://www.nondot.org/sabre/os/files/Communication/CP_serial.pdf Tutorial zur seriellen Schnittstelle] |
| + | * [http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html Tutorial zum RS232-Standard] | ||
[[Category:Hardware]] | [[Category:Hardware]] | ||