5. INTERFACE PARALLELE IMPRIMANTE LPT. PIO 8255
Transcription
5. INTERFACE PARALLELE IMPRIMANTE LPT. PIO 8255
Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 5. INTERFACE PARALLELE IMPRIMANTE LPT. PIO 8255 Architecture PC 8288 Contrôleur de bus 8088 NMI Unité Centrale INTR 8087 Coprocesseur Démultiplexage et bufferisation du bus système Bus 8259 Contrôleur d'interruption Décodage adresses E/S CPU Décodage adresses ROM ROM MEMOIRE Décodage adresses RAM RAM 8250 Interface E/S série E/S 8253 Horloge 8255 Interface E/S parallèle 8237 Contrôleur DMA Interface clavier Commande HP Test de parité Slots d'Extension Schéma-bloc de la carte mère du PC TR 5. 1 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) Mapping des E/S du PC Adresse d'E/S Unité connectée 00 - 0F 10 - 1F 20 - 21 22 - 3F 40 - 43 44 - 5F 60 - 64 65 - 7F 80 - 83 84 - 1FF 200 - 20F 210 - 26F 270 - 27F 280 - 2F7 2F8 - 2FF 300 - 377 Contrôleur DMA 8237 Libre Contrôleur d'interruption 8259 Libre Compteurs programmables 8253 Libre Ports d'E/S de la carte mère Libre Registres DMA Libre Adaptateurs jeux Libre Réservé Libre Réservé Libre 378 - 37F INTERFACE PARALLELE (IMPRIMANTE) 380 - 3AF 3B0 - 3BF 300 - 3CF 3D0 - 3DF 3E0 - 3EF 3F0 - 3F7 3F8 - 3FF 400 - FFFF Libre Contrôleur parallèle imprimante Libre Contrôleur graphique/couleur Libre Contrôleur disquettes (floppy disk) Interface série (RS-232C) Libre (reste des 64K canaux d'E/S) TR 5. 2 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) Connecteur port parallèle imprimante (DB25) côté PC : Parallel (PC) (at the PC) 25 PIN D-SUB FEMALE at the PC Pin Name 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 TR 5. /STROBE D0 D1 D2 D3 D4 D5 D6 D7 ACK /BUSY PO SEL IN /AUTOFD ERROR INIT /SEL GND GND GND GND GND GND GND GND Dir ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ ← ← ← ← ↔ ← ↔ ↔ Description Strobe Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Acknowledge Busy Paper out Select in Autofeed Error Initialize Select Printer Ground Ground Ground Ground Ground Ground Ground Ground 3 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 4. Architecture logicielle de l’interface parallèle 4.1. Paramétrage du BIOS Mode Sens de transfert SPP (Normal) Bidirectionnel (OUT/IN) EPP Bidirectionnel (OUT/IN) ECP Monodirectionnel (OUT) Spécificité Mode normal Mode rapide Fonctions étendues 4.2. Adresse de l’interface parallèle Adresse (notée BASE) Spécificité Paramétrage 378H LPT1 Modifiable par le BIOS 278H LPT2 Modifiable par le BIOS 4.3. Affectation des broches du connecteur parallèle (LPT1) Pin # DB25 Signal Direction Register 1 IN/OUT Control Strobe 2 Data0 OUT/IN Data 3 Data1 OUT/IN Data 4 Data2 OUT/IN Data 5 Data3 OUT/IN Data 6 Data4 OUT/IN Data 7 Data5 OUT/IN Data 8 Data6 OUT/IN Data 9 Data7 OUT/IN Data 10 Ack IN Status Busy 11 IN Status 12 Paper out IN Status 13 Select in IN Status 14 IN/OUT Control Auto linefeed 15 Error IN Status 16 Initialize printer IN/OUT Control Select printer 17 IN/OUT Control 18-25 Ground GND TR 5. 4 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 4.4. Ports de l’interface parallèle Connecteur parallèle LPT = 3 “ ports ” : Adresse Port Direction (READ-IN / WRITE -OUT) Taille Pin # DB25 BASE+0 Data port OUT si Mode Monodir. (BIOS) 8 bits 2-9 OUT/IN si Mode Bidir. (BIOS) (OUT par défaut) BASE+1 Status port IN only 8 bits 10-13 (si données écrites → ignorées) +15 BASE+2 Control port IN/OUT 8 bits 1 (sélect. sens Data port en Mode Bidir.) +14 +16-17 4.5. Data port de l’interface parallèle Adresse Port Direction (READ-IN / WRITE –OUT) BASE+0 Data port OUT en Mode Monodir. OUT/IN en Mode Bidir. (OUT par défaut) TR 5. Bit # Signal Pin # DB25 Bit 7(MSB) Data7 9 Data6 8 Bit 6 Data5 7 Bit 5 Data4 6 Bit 4 Data3 5 Bit 3 Data2 4 Bit 2 Data1 3 Bit 1 Bit 0(LSB) Data0 2 5 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 4.6. Status port de l’interface parallèle Adresse Port Direction Bit # (READ-IN / WRITE –OUT) BASE+1 Status port IN only Bit 7 (si données écrites → ignorées) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Signal Busy Ack Paper out Select in Error IRQ Reserved Reserved Pin # DB25 11 10 12 13 15 - 4.7. Control port de l’interface parallèle Adresse Port Direction Bit # (READ-IN / WRITE –OUT) BASE+2 Control port IN/OUT Bit 7 (sélect. sens Bit 6 de Data port Bit 5 Mode Bidir.) Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Signal Pin # DB25 Reserved Reserved Select Data port IN/OUT Enable IRQ via Ack line Select printer 17 Initialize printer 16 14 Auto linefeed 1 Strobe Mot à écrire à l’adresse BASE + 2 pour sélection du Data port IN/OUT : MSB 7 .Data port IN: mot = MSB 7 .Data port OUT: mot = TR 5. 6 5 X X 1 6 5 X X 0 4 3 2 1 0 LSB = X X X X X 4 3 2 1 0 X X X X X LSB = MSB 7 6 5 4 3 2 1 0 0 0 1 0 0 0 0 0 MSB 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 LSB → mot = 20H LSB → mot = 00H 6 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 5. Programmation de l’interface parallèle Programme C CVI pilotant le port parallèle (LPT1) du PC Ecriture du mot FFH sur le port DATA puis lecture en boucle du port DATA #include <utility.h> // Inclusion de la librairie utility (fonctions inp(), outp()) #define ADR_LPT1 0x378 // 378H s'écrit en C : 0x3F8 #define ADR_LPT2 0x278 #define PORT_DATA ADR_LPT1 // Port DATA situé à l’adresse de base #define PORT_STATUS ADR_LPT1+1 // Port STATUS à l’adresse de base + 1 #define PORT_CTRL ADR_LPT1+2 // Port CTRL à l’adresse de base + 2 main() { unsigned char mot; // Déclarations outp(PORT_CTRL,0x00); // Place le port DATA en sortie (par défaut) outp(PORT_DATA, 0xFF); // 8 bits à « 1 » sont envoyés sur le port DATA // (et y restent mémorisés à cette valeur // les ports du 8255 intègrent un registre) outp(PORT_CTRL,0x20); // Place le port DATA en entrée while(1) // Boucle infinie { mot = inp(PORT_DATA); // Lecture permanente du port DATA // à la cadence horloge PC // avec 1 acquisition par cycle horloge // chaque acquisition étant stockée dans mot } // Sans la boucle infinie, 1 seule acquisition // serait réalisée à l’instant de l’exécution // de mot = inp(PORT_DATA) // et serait mémorisée dans mot } TR 5. 7 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 6. Application de l’interface parallèle 6.1. Entrées/Sorties en mode Monodirectionnel Par LPT : . Affichage d’un digit (en code binaire) . Acquisition d’un chiffre (en code DCB) par roue codeuse . CNA d’un fichier audio Maquette PIO DB25 Parallel Interface Male Connector Pins HP Female Connector Pins GND 18 16 Status Port Bits Control Port Bits 16 10 12 13 15 7 6 MSB 5 4 3 2 1 0 LSB 7 6 MSB 5 4 3 9 2 1 0 LSB 8 7 7 6 MSB 6 5 5 4 4 3 3 2 L R 2 1 0 Data Port Bits LSB +5 Volts +5 Volts GND R' = 470 Ω GND R' R' R' R' R' R' R' -5 Volts -5 Volts C MSB 8 0 + 4 2 LSB 1 Roue codeuse 1 2 3 4 5 6 7 8 9 10 11 12 g f NC a b 10 9 8 7 6 a f g b e e R R R R 1 2 c d 3 4 d GND c p 5 p 24 23 22 21 20 19 18 17 16 15 14 13 CNA R = 470 Ω Résistances de pull-down GND : masse Afficheur 7 segments L : Left R : Right NC : Non Connecté Acquisition du chiffre (en code DCB) de la roue codeuse → Acquisition par le Status port (IN) sur les bits 6,5,4,3 → Masquer puis décaler l’octet d’acquisition. Commande afficheur (en code binaire sur 7 bits) → Affichage du digit par le Data port (OUT) sur les bits 6,5,4,3,2,1,0 → Coder l’allumage des segments correspondant à chaque chiffre. Commande CNA (Conversion Numérique/Analogique audio 8 bits) → Echantillons transmis périodiquement au Data port (OUT) sur les bits 7,6,5,4,3,2,1,0. → Horloge déclenchant la CNA de chaque échantillon sur le bit 2 du Control Port. → Cadencement par attente active (fonction delai). TR 5. 8 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 6.2. Autres applications de l’interface parallèle Interface de clavier et de dispositif d'affichage 8255 PC6 CLAVIER décodé PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 D0 D1 D2 D3 D4 D5 SHIFT CONTROL PC0 PC1 STROBE ACK PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 AFFICHEUR D0 D1 intelligent D2 D3 D4 D5 BACKSPACE CLEAR PC2 PC3 PC4 PC5 DATA READY ACK BLANKING CANCEL WORD PC7 Interface d'imprimante 8255 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 LOGIQUE de CONTROLE PC0 PC1 PC2 PC3 DATA READY ACK PAPER FEED FWD / REV IMPRIMANTE } RELAIS des MARTEAUX PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 DATA READY ACK PC4 PC5 PC6 Demande d'interruption Demande d'interruption DATA READY ACK PAPER FEED FWD / REV RIBBON CARRIAGE RETURN PC7 Demande d'interruption Demande d'interruption Interface contrôleur de disquette CAN / CNA 8255 8255 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PC0 PC1 PC2 PC3 D0 CNA D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 12 bits PC4 PC5 CLOCK OUTPUT ENABLE CAN 8 bits PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 D0 D1 D2 D3 D4 D5 D6 D7 PC6 PC7 CLOCK SAMPLE ENABLE TR 5. SORTIE ANALOGIQUE ENTREE ANALOGIQUE CONTROLEUR PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 D0 D1 D2 D3 D4 D5 D6 D7 PC0 PC1 PC2 PC3 DATA STROBE ACK (IN) DATA READY ACK (OUT) PC4 PC5 PC6 TRACK SENSOR SYNC READY INDEX PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 ENGAGE FWD / REV READ ENABLE WRITE ENABLE DISC SELECT ENABLE CRC TEST BUSY PC7 Demande d'interruption 9 Informatique Industrielle 5. Interface parallèle imprimante LPT (PIO 8255) 5 ANNEXE. Interface parallèle imprimante LPT (PIO 8255) Le contrôleur de l’interface parallèle (PIO) est le composant 8255. Contrôleur PIO 8255 de liaison parallèle Bus PC (ordinateur) Périphérique BUS DONNEES Adresses { A0 A1 A2 I/0 R I/O W Reset 8 PORT A 8255 A0 A1 CS RD WR Reset I/O 8 PORT C Bas 4 PORT C Haut 4 PORT B 8 } I/O I/O __________ TR 5. 10