SORTIE SUR LE PORT ASYNCHRONE RS232 -
ENTREES SORTIES EN C
L'adaptateur de communication asynchrone, que nous appelons par la suite "port série" est entièrement programmable et peut être utilisé selon les spécifications de la norme RS232.
Une communication série est faite selon certains paramètres qui sont:
- la vitesse d'échange (en bauds) de 50 à 115200;
- le nombre de bits de données;
- la présence d'un bit de parité ou non;
- la présence d'un bit de stop ou non.
Le brochage généralement utilisé est :
DB9 DB25
DTR 4 20
DCD 1 8
Tx 3 2
Rx 2 3
Masse 5 7
DSR 6 6
RTS 7 4
CTS 8 5
RI 9 22
Vous pouvez y connecter une imprimante de type "courrier", un IBM ou un modem. C'est dans ce dernier cas que l'utilisation est intéressante. Si la première version du BIOS concernant le port série était "buggée", il n'en est rien actuellement.
Pour rediriger les sorties du port parallèle vers le port série, il faut utiliser la commande MODE de la façon suivante:
Positionner les caractéristiques de communications (exemple pour une imprimante laser).
MODE COM1:9600,N,8,1
Faire la redirection de l'imprimante
MODE LPT1:=COM1
Pour faire communiquer 2 I.B.M. ou compatibles, vous devez relier leurs ports séries de la façon suivante:
2 --------------------------- 3
3 --------------------------- 2
4+5 ------------------------ 8
6 --------------------------- 20
7 --------------------------- 7
8 --------------------------- 4+5
20 -------------------------- 6
Si vous voulez prendre le contrôle de votre ordinateur à partir d’une console branchée sur le port série, faites :
CTTY com1
Le circuit principal est un 8250 ou un équivalent qui gère les différents signaux reçus ou envoyés. Des adresses mémoires sont réservées aux ports séries. Elles sont ;
Ces adresses correspondent aux fonctions suivantes.
3F8 Buffer Tx si DLAB = 0 Write
3F8 Buffer Rx si DLAB = 0 Read
3F8 Latch diviseur LSB si DLAB = 1
3F9 Latch diviseur MSB si DLAB = 1
3FA Registre d’identification d’interruptions (priorités)
3FB Registre de contrôle de ligne (lcr)
(le bit 7 permet de sélectionner certains registres)
3FC Registre de contrôle du modem (mcr)
3FD Registre état de la ligne (lsr)
3FE Registre état du modem (msr)
Les données transmises ou reçues le sont dans l’ordre bit 0 vers bit 7.
REGISTRES DE LIGNE
3FB Registre de contrôle de ligne (lcr)
Ce registre précise les caractéristiques de la communication :
BIT 7 6 5 4 3 2 1 0
D I P P P S L L
ex. : 0 0 1 1 0 1 0
bits 0 et 1 Longueur des données :
00 à 0 à 5bits
01 à 1 à 6 bits
10 à 2 à 7bits
11 à 3 à 8 bits
bit 2 Nombre de bits de stop :
Bit 2 = 0 à 1bit de stop
Bit 2 = 1 à Variable suivant la longueur
des données
Pour 5 bits de données à 1 bit ½ de stop
Pour 6, 7 ou 8 bits à 2 bits de stop
bit 3 Enclenchement de la parité :
Bit 3 = 1 à 1 bit de parité est généré entre les
bits de données et les bits de stop
bit 4 Parité impaire s’il est à 0 : avec bit 5 =0 :
Parité paire si ce bit est à 1
bit 5 Valeur de la parité
Bit 3 Bit 4 Bit 5
1 1 1 valeur de parité : 0
1 0 1 valeur de parité : 1
Bit 6 Break
0 force la sortie série
1 permet au processeur d’accéder au terminal
Bit 7 D.L.A.B
0 accède au buffer de réception et aux registres
1 accède au diviseur (vitesse)
3F8-3F9 Générateur de vitesses
On peut y accéder si D.L.A.B = 1 (voir ci - avant) :
Vitesse Valeurs (Hexa)
50 09 00
75 06 00
l10 04 17
134,5 03 59
150 03 00
300 01 80
600 00 C0
1200 00 60 ‘ MINITEL
1800 00 40
2000 00 3A
2400 00 30
3600 00 20
4800 00 18
7200 00 10
9600 00 0C
14400 00 08
19200 00 06
38400 00 03
57600 00 02
115200 00 01
3FD Registre d’état de la ligne (lsr)
Ce registre permet de donner des informations sur le transfert
des données,
Bit 0 DR (Data Ready)
Si ce bit est à 1 alors une donnée reçue est prête.
Remis à 0 par lecture des données ou forçage.
Bit 1 OE (Over run Error)
Un écrasement de données a eu lieu car la lecture n’a
pas été faite à temps.
Bit 2 PE (Parity Error)
Mauvaise parité à la réception.
Bit 3 FE (Framing Error)
Erreur avec les bits de stop.
Bit 4 BI (Break Interrupt)
Erreur de transmission.
Bit 5 THRE (Transmitter Holding Register Empty)
Le 8250 est prêt à accepter un nouveau caractère.
Bit 6 TSRE (Transmitter Shift Register Empty)
Ce bit ne peut être que lu.
Bit 7 Toujours à 0.
INTERRUPTIONS
3FA Registre d’identification d’interruption (IIR)
Le 8250 dispose de possibilités d’interruptions selon quatre niveaux.
Réception du Status de ligne :
<2> réception de données : donnée prête.
<3> prêt à émettre : registre vide.
<4> status du modem :
Bit 0 aucune interruption si ce bit est à 1
Bit 1 et Bit 2 identifient le niveau de priorité
(voir ci-dessus).
Bit 3 à Bit 7 toujours à 0.
3F9 Registre d’enclenchement d’interruptions
Ce registre active les quatre types d’interruption.
Pour éviter toute interruption il suffit de mettre tous les bits à 0
Bit 0 Interruption Donnée prête.
Bit 1 interruption Registre de transmission vide. .
Bit 2 Interruption Status de ligne
Bit 3 Interruption Status du modem.
Bit 4 à 7 Toujours à 0.
REGISTRES DE MODEM (MCR)
3FC Registre de contrôle du modem
Ce registre contrôle l’interfaçage avec un modem ou tout périphérique équivalent.
Bit 0 DTR (Data Terminal Ready)
Terminal prêt
Bit 1 RTS (Request To Send)
Demande à émettre
Bit 2 OUT1
Bit 3 OUT2
Bit 4 LOOP
Ce bit permet un bouclage de test du 8250 (mode diagnostic).
Bit 5 à 7 Toujours à 0.
3FE Registre de status du modem
Ce registre donne l’état du modem ou du périphérique.
Bit 0 DCTS .
Permet de savoir que l’état CTS a changé depuis la dernière lecture,
Bit 1 DDSR
Permet de savoir que l’état DSR a changé depuis la dernière lecture.
Bit 2 TERI
La sonnerie a changé d’état depuis la dernière lecture
Bit 3 DRLSD
Indique que RLSD a changé d’état depuis la dernière lecture.
Bit 4 CTS
Ce bit est le complément de CTS. Si le bit 4 de mcr est mis à 1 ceci est équivalent à RTS dans mcr.
Bit 5 DSR
Ce bit est le complément de DSR. Si le bit 4 de mcr est mis à 1 ceci est équivalent à DTR dans mcr.
Bit 6 RI
Ce bit est le complément de RI. Si le bit 4 de mcr est mis à 1 ceci est équivalent à OUT1 dans mcr,
Bit 7 RLSD
Ce bit est le complément de RLSD. Si le bit 4 de mcr est
mis à 1 ceci est équivalent à OUT2 dans mcr.
FONCTIONS ET MACROS
DU LANGAGE C
Les compilateurs C peuvent fournir des fonctions de lecture et d’écriture sui les ports, Normalement ces fonctions sont réduites au strict minimum. Il vous appartient de gérer la communication autrement dit le plus gros du travail !
24 août, 2009