Brochage du port LPT. Qu'est-ce qu'un port « LPT » et à quoi sert-il ? Mode octet bidirectionnel - Mode octet

L'un des ports informatiques les plus anciens est le port LPT ou port parallèle. Et bien que le port LPT ne soit plus visible sur toutes les cartes mères, les lecteurs pourraient néanmoins être intéressés de savoir de quoi il s'agit.

Tout d’abord, regardons le nom du port. Peut-être que tout le monde ne sait pas ce que signifie l'abréviation LPT. En fait, LPT est l’abréviation de Line Print Terminal. Ainsi, il devient clair que le port LPT était principalement destiné à connecter des imprimantes. C'est pourquoi le port LPT a un autre nom : port d'imprimante. Bien qu'en théorie, d'autres appareils puissent être connectés au LPT.

Le port LPT a une longue histoire. Il a été développé par Centronics (c'est pourquoi ce port est souvent appelé port Centronics), qui fabriquait des imprimantes matricielles avant l'ère du PC, au début des années 1970. Et au début des années 1980, le port LPT a commencé à être utilisé par IBM dans ses ordinateurs et est devenu pendant un certain temps le port standard pour connecter des appareils à haut débit (à l'époque).

Apparition du port parallèle à l'arrière de l'ordinateur

L'interface LPT a existé dans plusieurs éditions. Dans la version originale, le port LPT était unidirectionnel, c'est-à-dire qu'il ne pouvait transmettre des données que dans une seule direction : vers un périphérique. Bien entendu, cette situation ne convenait pas aux utilisateurs, car certaines imprimantes nécessitaient un transfert de données dans les deux sens. Par conséquent, l'interface LPT a ensuite été améliorée à plusieurs reprises jusqu'à ce que sa norme internationale IEEE 1284 soit développée. Conformément à cette norme, l'interface du port parallèle prenait en charge plusieurs modes de fonctionnement et était également compatible avec les normes plus anciennes. De plus, l'interface dans sa version finale prenait en charge des taux de transfert de données relativement élevés - jusqu'à 5 Mb/s.

Comment fonctionne le port parallèle

Le port LPT est dit parallèle car le câble qui y est connecté transmet les données en parallèle, c'est-à-dire simultanément le long de plusieurs conducteurs. Cette propriété distingue un port parallèle d'un autre port d'ordinateur : un port COM série.

Il y a 8 conducteurs qui transmettent les données elles-mêmes dans le câble Centronics. De plus, le câble contient plusieurs lignes à travers lesquelles les signaux de commande sont transmis.

Bien que le port parallèle soit principalement utilisé pour connecter des imprimantes, il existait cependant d'autres utilisations. Tout d'abord, en utilisant le port LPT, vous pouvez connecter directement deux ordinateurs à l'aide d'un câble Interlink spécial. Avant l'utilisation généralisée des cartes réseau Ethernet, une telle connexion, même si elle n'offrait pas à l'utilisateur des vitesses de transfert de données élevées, était néanmoins souvent le seul moyen de connecter deux ordinateurs. Il existe également des clés électroniques conçues pour se connecter au port LPT.

Câble pour le transfert de données entre ordinateurs - Interlink

Comme pour de nombreux autres périphériques de la carte mère, les modes de fonctionnement des ports parallèles peuvent souvent être configurés via la configuration du BIOS. En règle générale, les options du BIOS telles que Parallel Port, Parallel Port IRQ, Parallel Port DMA, etc. sont utilisées à cet effet.

Connecteur de port parallèle de la carte mère et câble Centronics

Le connecteur du port LPT est généralement situé directement sur la carte mère, jusqu'au milieu des années 1990. il était généralement présent sur une multicarte insérée dans un slot d'extension, sur lequel se trouvaient également d'autres ports de l'ordinateur. La sortie du port est un connecteur femelle à 25 broches appelé connecteur DB25.

Multicarte ISA avec LPT (DB25 - « mère ») et un port de jeu à bord.

Pour se connecter à l'imprimante, un câble spécial est utilisé - un câble Centronics. Une extrémité (fiche) du câble Centronics est connectée au port, l'autre (également fiche) est connectée à un connecteur spécial sur l'imprimante. Le dernier connecteur comporte 36 broches. Par conséquent, une caractéristique du câble Centronics est qu’il possède des connecteurs différents des deux côtés.

Apparition du câble Centronics.

Bien que le connecteur du câble de la carte mère soit souvent appelé connecteur Centronics, à proprement parler, le connecteur Centronics n'est qu'un connecteur à 36 broches pour la connexion à l'imprimante et non à la carte mère. Le connecteur du câble permettant de se connecter au port est appelé connecteur Amphénolstacker, du nom du fabricant américain de connecteurs Amphénol qui l'a développé.

Caractéristiques du port parallèle

Étant donné que le port LPT prend en charge le transfert de données parallèle, ce port était considéré dans les premiers PC comme l'un des ports informatiques les plus rapides. La transmission de données sur plusieurs lignes rend l'interface LPT beaucoup plus proche en architecture des bus informatiques. Cependant, cette circonstance impose également une limitation de la longueur du câble qui, en raison des interférences se produisant dans le câble, ne peut excéder 5 m.

La tension maximale utilisée dans les lignes de signal du port est de +5 V. Pour une transmission de données simple, seules dix lignes de signal sont nécessaires - il s'agit de 8 lignes de données, une ligne de signal stroboscopique, c'est-à-dire un signal indiquant que le port est prêt à transmettre des données. , et une ligne occupée . Les lignes restantes sont utilisées pour la compatibilité avec la norme Centronics.

Port LPT de type « femelle » avec numérotation des contacts.

Brochage du connecteur de port parallèle DB25 :

  • 1 – Stroboscope de données
  • 2-9 – Données, bits 0-7
  • 10 – Accusé de réception (Confirmation de l'imprimante)
  • 11 – Occupé
  • 12 – Fin du papier
  • 13 – Sélectionner (Imprimante active)
  • 14 – Alimentation automatique
  • 15 – Erreur
  • 16 – Init (initialisation de l'imprimante)
  • 17 – Sélectionnez l'entrée
  • 18-25 – Terre

Conclusion

Le port LPT est une interface d'ordinateur personnel qui est désormais considérée comme obsolète et ne bénéficie pas d'un support significatif de la part des fabricants de matériel informatique et de logiciels. Cependant, le port parallèle est encore utilisé avec succès dans de nombreux anciens modèles d'ordinateurs et d'imprimantes.

formation professionnelle supérieure

"Université technique d'État de Komsomolsk-sur-Amour"

Département d'électronique industrielle

Test du port LPT d'un ordinateur personnel

Lignes directrices pour les travaux de laboratoire pendant le cours

« Outils de débogage des systèmes à microprocesseurs » pour les étudiants de la direction 210100 « Électronique et nanoélectronique »

Komsomolsk-sur-Amour 2013

Test du port LPT d'un ordinateur personnel : Lignes directrices pour les travaux de laboratoire dans le cours « Outils de débogage pour systèmes à microprocesseurs » pour les étudiants de la direction 210100 « Électronique et nanoélectronique » / Comp. CM. Kopytov. - Komsomolsk-sur-Amour : État de Komsomolsk-sur-Amour. technologie. univ., 2013. - 19 p.

L'interface parallèle Centronics, les signaux et la prise en charge logicielle pour le port LPT d'un ordinateur personnel sont pris en compte et des recommandations pour les tester sont données.

Les lignes directrices proposées sont destinées aux étudiants de la direction 210100.

Publié par décret du conseil de rédaction et de publication de l'Université technique d'État de Komsomolsk-sur-Amour.

En coordination avec le service de normalisation.

Le critique V.A. Egorov

Objectif du travail : explorez les capacités de base d’un port LPT standard. Maîtrisez les principes de l'échange d'informations contrôlé par logiciel via un port parallèle. Apprenez à vérifier ses performances.

1 Informations de base

1.1 Description de l'interface parallèle

Historiquement, une interface parallèle a été introduite dans un ordinateur personnel (PC) pour connecter une imprimante (d'où l'abréviation LPT - Line Printer). Cependant, par la suite, l'interface parallèle a commencé à être utilisée pour connecter d'autres périphériques (PU). Le type de port de base permet le transfert de données uniquement dans une seule direction (du PC vers l'unité de contrôle), mais un certain nombre de normes pour le transfert de données bidirectionnel ont ensuite été développées.

En règle générale, les ordinateurs de bureau modernes ne disposent pas de port LPT ; cependant, en installant une carte d'extension multiport, vous pouvez disposer d'un tel port.

L'adaptateur d'interface parallèle est un ensemble de registres situés dans l'espace d'adressage des périphériques d'entrée/sortie. Le nombre de registres dépend du type de port, mais trois d'entre eux sont standards et sont toujours présents. Il s'agit du registre de données, du registre d'état et du registre de contrôle. Les adresses de registre sont comptées à partir de la base dont les valeurs standards sont 3BCh, 378h, 278h. Le port peut utiliser une interruption matérielle (IRQ7 ou IRQ9). De nombreux systèmes modernes vous permettent de modifier le mode de fonctionnement du port, son adresse et son IRQ à partir de la configuration du BIOS (Base Input Output System).

Le port LPT dispose d'un bus de données externe de 8 bits, d'un bus de signal d'état de 5 bits et d'un bus de signal de contrôle de 4 bits. Évidemment, le port est asymétrique - 12 lignes fonctionnent pour la sortie et seulement 5 pour l'entrée.

Lors du démarrage initial, le BIOS essaie de détecter un port parallèle, et le fait de manière primitive et pas toujours correcte : un octet de test composé d'un ensemble alterné de zéros et de uns (55h ou AAh) est transmis aux adresses de base possibles du ports, puis lu à la même adresse, et si l'octet lu correspond à celui écrit, alors on considère qu'un port LPT a été trouvé à cette adresse. Le BIOS ne peut pas déterminer l'adresse du port LPT4. Pour travailler avec le PU, le BIOS fournit l'interruption INT 17h, qui permet de transférer des données (octet par octet), d'initialiser le PU et de recevoir des informations sur son état.

Concept Centronique fait référence à un ensemble de signaux, un protocole de communication et un connecteur à 36 broches préalablement installés dans les imprimantes. La fonction des signaux et des contacts du connecteur du panneau de commande vers lesquels ils sont émis est indiquée dans le tableau 1.

Tableau 1 - Signaux d'interface Centronics

Direction

But

Stroboscope de données. L'ordinateur est transmis, les données sont enregistrées à un niveau de signal faible.

Lignes de données. D0 - bit le moins significatif.

Acquitter – une impulsion de confirmation d'octet (une demande de réception de la suivante). Peut être utilisé pour générer une interruption.

Occupé. La réception des données n'est possible que lorsque le niveau du signal est faible

"1" signale la fin du papier

« 1 » signale que l'imprimante est allumée (GP – préparation du récepteur), généralement +5 V via une résistance de l'alimentation du PU)

Traduction automatique des lignes. Si "0", alors la centrale, dès réception du caractère CR (retour chariot), exécute la fonction LF - saut de ligne

Erreur PU (hors ligne, pas de papier, pas de toner, erreur interne)

Initialisation (aller au début de la ligne, réinitialiser tous les paramètres aux valeurs par défaut)

Sélection d'une imprimante. Lorsque "1" l'imprimante n'accepte pas les autres signaux d'interface

Fil commun

Note: colonne « T » – niveau de signal actif : « 1 » – niveau actif haut, « 0 » – niveau actif bas. Colonne "Direction" – sens de transmission par rapport à l'imprimante : I – Entrée, O – Sortie.

Le signal Auto LF est peu utile, mais un réglage incorrect entraînera le fait que l'imprimante sautera des lignes, imprimera des lignes les unes sur les autres ou dupliquera des lignes lors d'une impression en deux passes.

L'analogue national de l'interface Centronics est l'IRPR-M. A cela s'ajoute une interface IRPR (obsolète), qui se distingue par son protocole d'échange, l'absence de signal « Erreur » et l'inversion des lignes de données. De plus, des paires de résistances adaptées sont connectées à toutes les lignes d'entrée IRPR : 220 Ohms à +5 V et 330 Ohms au fil commun. Cela surcharge la plupart des adaptateurs d'interface sur les PC modernes.

Le protocole d'échange de données via l'interface Centronics est illustré à la figure 1.

Figure 1 - Protocole d'échange de données via l'interface Centronics

La transmission commence par vérifier la source du signal d'erreur. S'il est installé, l'échange n'est pas effectué. Ensuite, l'état du signal Occupé est vérifié. S'il vaut "0", alors la source commence à transmettre l'octet de données. Pour transmettre un octet, la source place un octet de données sur la ligne D0-D7 et émet un signal Strobe#. Le récepteur, utilisant le signal Strobe# (ci-après dans le texte, l'icône « # » après le nom du signal est un signe que le signal a un niveau actif faible) lit les données du bus de données et définit le signal Occupé pour la durée de son traitement. A la fin du traitement, le récepteur émet le signal ACK# et supprime le signal Busy.

Si la source ne reçoit pas l'ACK# pendant une longue période (6 à 12 secondes), elle décide alors d'une erreur de « time-out » de l'appareil. Si, après avoir reçu un octet, le récepteur, pour une raison quelconque, n'est pas prêt à recevoir des données, il ne supprime pas le signal Occupé. Lors de la mise en œuvre d'un échange utilisant le protocole spécifié dans le logiciel, il est conseillé de limiter le temps d'attente pour la suppression de Busy (généralement 30 à 45 secondes), sinon le programme pourrait se bloquer.

Le port parallèle standard est appelé SPP (Standard Parallel Port). Le port SPP est unidirectionnel ; le protocole d'échange Centronics est implémenté sur cette base par logiciel. Le port offre la possibilité de générer une IRQ basée sur l'impulsion ACK# à l'entrée. Les signaux des ports sont émis vers un connecteur DB-25S standard (femelle), qui est placé directement sur la carte adaptateur ou connecté à celle-ci avec un câble plat (si l'adaptateur est intégré à la carte mère).

Les noms des signaux correspondent aux noms des signaux d'interface Centronics (Tableau 1), et l'image du connecteur de l'adaptateur d'interface du côté de l'ordinateur est illustrée à la Figure 2.

Tableau 2 - Connecteur et câble d'un port LPT standard

Fil de boucle

10, 22, 14, 16, 18, 20, 22, 24, 26

Note. E/S – sens de transmission : I – entrée ; O – sortie ; O(I) – sortie dont l'état peut être lu sous certaines conditions, O/I – lignes de sortie dont l'état est lu lors de la lecture à partir des registres de port correspondants. * - L'entrée ACK# est connectée à l'alimentation +5 V via une résistance de 10 kOhm. Ceci est fait pour éliminer les fausses interruptions, car L'interruption est générée par le front négatif du signal à l'entrée ACK#.

Figure 2 - Connecteur de l'adaptateur d'interface Cetronics DB-25S

Les inconvénients d'un port LPT standard (SPP) incluent la faible vitesse de transfert de données (100 à 150 Ko/sec), la charge du processeur lors du transfert de données et l'impossibilité d'échange d'octets bidirectionnel. Il existe une technique « radioamateur » d'échange bidirectionnel, qui consiste à mettre « 1 » sur les lignes D0-D7 pour entrer les données, et à utiliser des microcircuits à collecteur ouvert comme émetteur, qui, lorsque le transistor est ouvert, peuvent « remonter » la tension de l'unité logique au niveau d'environ 1,5 – 1,7 V. Le courant est limité à 30 mA. Comme le montrent les niveaux de signal, ils ne correspondent pas aux niveaux TTL, c'est pourquoi de nombreux ports ne fonctionnent pas dans ce mode ou sont instables. De plus, cette méthode peut être dangereuse pour l'adaptateur de port, qui fonctionnera avec des limites de courant.

Norme IEEE 1284, adoptée en 1994, définit les termes SPP, EPP et ECP. La norme définit 5 modes d'échange de données, la méthode de négociation des modes, les interfaces physiques et électriques. Selon IEEE 1284, les modes d'échange de données suivants via le port parallèle sont possibles :

Mode de compatibilité – unidirectionnel (sortie) via le protocole Centronics. Ce mode correspond au port SPP standard ;

Mode Nibble – saisissez un octet en deux cycles (4 bits chacun), en utilisant la ligne d'état pour entrer. Ce mode d'échange peut être utilisé sur n'importe quel adaptateur ;

Mode octet – saisissez un octet entier en utilisant des lignes de données pour la réception. Ce mode ne fonctionne que sur les ports capables de lire les données de sortie (bidirectionnel ou PS/2 Type 1) ;

Le mode EPP (Enhanced Parallel Port) est un échange de données bidirectionnel dans lequel des signaux de contrôle d'interface sont générés par le matériel pendant le cycle d'accès au port (lecture ou écriture sur le port). Efficace lorsque vous travaillez avec des périphériques de mémoire externes, des adaptateurs réseau locaux ;

Mode ECP (Extended Capability Port) – échange bidirectionnel avec possibilité de compression matérielle des données à l’aide de la méthode RLE (RunLength Encoding), à l’aide de tampons FIFO et DMA. Les signaux de contrôle d'interface sont générés dans le matériel. Efficace pour les imprimantes et les scanners.

Sur les machines modernes dotées d'un port LPT sur la carte mère, le mode du port - SPP, EPP, ECP ou une combinaison de ceux-ci est défini dans la configuration du BIOS. Le mode de compatibilité est entièrement conforme à SPP et est souvent installé par défaut. Tous les autres modes étendent les fonctionnalités de l'interface et améliorent ses performances. De plus, la norme réglemente la manière de négocier le mode disponible à la fois pour le PC et le périphérique.

Interface physique et électrique. La norme IEEE 1284 définit les caractéristiques physiques des récepteurs et émetteurs de signaux. Il est essentiel que les niveaux logiques TTL soient utilisés lors de la transmission.

La norme IEEE 1284 définit trois types de connecteurs utilisés : A (DB-25S), B (Centronics-36), C (nouveau connecteur compact 36 broches). Les câbles d'interface peuvent avoir de 18 à 25 conducteurs (selon le nombre de conducteurs GND). Les câbles conventionnels ne peuvent fonctionner qu'à basse vitesse et sur une longueur ne dépassant pas 2 mètres. Les câbles blindés améliorés avec des conducteurs de signaux entrelacés avec des fils communs peuvent mesurer jusqu'à 10 mètres de long. Ces câbles portent la marque « Conforme à la norme IEEE Std 1284 - 1994 ».

Travailler avec le port parallèle à un niveau bas(c'est-à-dire au niveau de l'accès direct au contrôleur de port) est utilisé pour résoudre diverses tâches d'échange d'informations avec des périphériques non standard, pour l'écriture de pilotes d'imprimante et un certain nombre d'autres tâches. Le travail direct avec le contrôleur vous permet de mettre en œuvre n'importe quel protocole d'échange avec l'appareil et d'utiliser les lignes de port à votre discrétion.

Le contrôleur de port est situé dans l'espace d'adressage des périphériques d'E/S et est accessible à l'aide des commandes assembleur IN et OUT. Des informations sur les ports LPT1 à LPT3 peuvent être obtenues en lisant les variables du BIOS répertoriées dans le tableau 3.

Tableau 3 - Variables BIOS pour les ports LPT

Nom du port

Adresse dans le BIOS

Type de variable

Description

Adresse de base du port LPT1. Si la variable est 0, alors le port LPT1 n'a pas été trouvé

Délai d'expiration de spécification constante

Adresse de base du port LPT2. Si la variable est 0, alors le port LPT2 n'a pas été trouvé

Délai d'expiration de spécification constante

Adresse de base du port LPT3. Si la variable est 0, alors le port LPT3 n'a pas été trouvé

Délai d'expiration de spécification constante

Adresse de base du port LPT4. Si la variable est 0, alors le port LPT4 n'a pas été trouvé

Délai d'expiration de spécification constante

Le BIOS recherche les ports par adresses de base : 3BCh, 378h, 278h. Le BIOS ne trouve pas le port LPT4 :

378h - adaptateur parallèle LPT1 ;

278h - adaptateur LPT2 parallèle ;

3BCh - Adaptateur parallèle LPT3.

Un port standard possède trois registres de 8 bits situés à des adresses adjacentes, en commençant par l'adresse de base. La liste des données du registre est donnée dans le tableau 4.

Tableau 4 - Registres d'un port LPT standard

Registre de données (DR). Les données écrites dans ce registre sont sorties vers les lignes de sortie de l'interface D0-D7. Le résultat de la lecture de ce registre dépend de la conception du circuit de l'adaptateur et correspond soit à des données préalablement enregistrées, soit à des signaux sur les lignes D0-D7, ce qui n'est pas toujours la même chose. Avec une mise sous tension standard, la première option est valable - les données lues sont égales aux données précédemment écrites.

Registre de statut (SR). Il s'agit d'un port d'entrée 5 bits qui reçoit les signaux d'état d'un périphérique externe. Lecture seulement. L'affectation des bits de ce registre est donnée dans le tableau 5.

Tableau 5 - Bits du registre d'état SR

Nom

But

Affichage inversé de l'état de la ligne occupée (11). Lorsque le niveau sur la ligne 11 (Busy) est bas – le bit est égal à « 1 » – le PU est prêt à recevoir l'octet suivant

Affiche l'état de la ligne ACK# (10).

"0" – confirmation de réception,

"1" – état normal

Affiche l'état de la ligne Fin du papier (12).

« 0 » – normal, « 1 » – il n'y a pas de papier dans l'unité centrale

Affiche l'état de la ligne de sélection (13).

"0" - PU non sélectionné, "1" - PU sélectionné

(inverse)

Affiche l'état de la ligne d'erreur (15).

"0" – erreur du panneau de commande, "1" – état normal

Indicateur d'interruption ACK# (PS/2 uniquement).

Effacé si ACK# a provoqué une interruption matérielle. "1" – après réinitialisation ou après lecture du registre d'état

Non utilisé (réserve)

Registre de contrôle (CR). Le registre de contrôle est un port de sortie 4 bits qui peut être lu et écrit. Les bits 0, 1, 3 sont inversés, c'est-à-dire "1" dans ces bits du registre de contrôle correspond à "0" sur les lignes de port correspondantes. L'objectif des bits du registre de contrôle est indiqué dans le tableau 6. Le bit 5 est utilisé uniquement par les ports bidirectionnels.

Tableau 6 - Bits du registre de contrôle CR

Nom

But

Bit de contrôle de direction du port.

"1" – mode d'entrée, "0" – mode de sortie

Bit de contrôle de génération d’interruption ACK#. "1" - activer l'interruption en cas de chute du ACK# (10)

Contrôle de ligne SLCT IN# (17).

"1" – le fonctionnement de l'imprimante est autorisé.

Contrôle de ligne INIT# (16). "1" – état normal, "0" – réinitialisation matérielle de l'unité de contrôle

Contrôle de ligne automatique LF# (14). « 1 » – active le mode « Auto LF », « 0 » – état normal

Contrôle de ligne Strobe# (1). "1" – enregistrement des données, "0" – état normal

Programmation des interfaces. Pour développer des programmes d'application, vous devez choisir un langage de programmation. Si vous avez besoin d'un programme simple, rapide et compact qui ne contient pas d'opérations de calcul complexes, alors il est préférable de choisir un langage de bas niveau (langage assembleur) pour l'écrire. Le langage assembleur appartient au groupe des langages orientés machine, c'est-à-dire Chaque famille de microprocesseurs possède son propre langage.

Un langage de haut niveau doit être choisi s'il est nécessaire d'effectuer des calculs complexes ou si des performances élevées du programme ne sont pas requises. Les codes objets obtenus à la suite de la traduction de programmes écrits dans un langage de haut niveau occupent généralement beaucoup plus d'espace dans la mémoire de l'ordinateur et sont exécutés plus lentement que les programmes en langage assembleur. Une approche souvent utilisée est lorsque les parties du programme critiques pour les performances sont écrites en langage assembleur et que les procédures de calcul sont écrites dans un langage de haut niveau, par exemple Pascal ou C.

Voyons comment travailler avec les registres d'interface CENTRONICS en PASCAL ou en langage assembleur :

X est un nombre de type "octet" (0..255). Par exemple, lors de l'envoi de 170 10 = 10101010 2 sur la ligne d0 à d7, un seul signal sera présent aux broches d1, d3, d5, d7 (la désignation des broches commence par d0). Le numéro 170 restera sur les broches du connecteur jusqu'à ce que vous y envoyiez un autre numéro (un autre programme peut le faire) ou que vous éteigniez l'ordinateur. Notez que l'adresse du port dans la commande est donnée en hexadécimal et que l'envoi est en décimal. Si au lieu de la commande Pascal

Port[$378] :=170 ;

Vous appliquerez

où d est une variable, alors la variable prendra la valeur du dernier octet envoyé au port ou, lors du passage en mode réception, la valeur de l'octet envoyé au port par un périphérique externe.

Un exemple de lecture d'un registre d'état en Pascal :

La variable d affichera l'état du port après l'exécution du programme. Disons que la variable a renvoyé la valeur 126 10 . En binaire, cela ressemble à 01111110 2 . Les trois bits de poids faible (à droite) (zéro, premier et deuxième) ne sont pas utilisés et sont presque égaux à 1, 1 et 0. Le troisième bit est 1, ce qui signifie que ERROR est à un niveau élevé. La même situation s'applique à SELECT, Paper End, ACK et BUSY (rappelez-vous que le signal BUSY est inversé).

Voici un exemple de fragment de programme qui lit un octet des lignes de données D0-D7 :

Port[$37A]:=32 ; la valeur 32 "inclut" celle du cinquième

d:=Port[$378] ; bit, basculant le port en mode d'entrée

Comme le montrent les exemples donnés, la programmation d'un port LPT est une tâche très simple, ce qui peut grandement faciliter le travail du développeur de logiciels d'appareils dotés de l'interface en question.

1.2 Test du port LPT

Le test du port LPT peut être effectué à l'aide d'une simple fiche, qui peut être réalisée à l'aide du tableau 7.

Tableau 7 - Tableau des circuits tronqués pour le test du port LPT

Direction

Direction

La fiche est constituée d'un connecteur mâle DB-25M en soudant des cavaliers entre les contacts indiqués dans le tableau.

Le travail de laboratoire utilise le programme test- lpt, proposé dans . Initialement, le programme était destiné à tester le port LPT. Mais dans la pratique, il s'est avéré qu'avec son aide, il est très pratique de déboguer de nouveaux appareils connectés au port LPT, ainsi que de rechercher des défauts lors de la réparation de divers appareils numériques. De plus, ce programme est un excellent outil pédagogique pour les programmeurs et concepteurs de circuits débutants. Il est écrit dans le langage de programmation C++. Lorsque vous démarrez le programme, la fenêtre du programme illustrée à la figure 3 apparaît sur l'écran du moniteur.

Figure 3 - Fenêtre du programme Test-lpt

Au centre de cette fenêtre se trouve un connecteur de port LPT avec l'affectation des contacts et un affichage du niveau de signal logique sur chacun d'eux. La description des signaux du port LPT parallèle DB-25F est donnée dans le tableau 1.

Dans les registres accessibles en écriture, les informations peuvent être modifiées arbitrairement, tandis que l'état du port obéira automatiquement aux actions de l'utilisateur du programme et que les niveaux logiques sur le connecteur changeront également. La sélection d'un registre par entrée se fait à l'aide de la touche LANGUETTE. Ainsi, vous pouvez contrôler le port LPT en mode statique et déboguer les périphériques externes qui y sont connectés. Étant donné que certains bits de registre sont inversés dans l'ordinateur lui-même, un masque permettant d'inverser ces bits lors de la lecture et de l'écriture est introduit dans le programme pour éliminer toute confusion. Ces registres sont donc marqués d'une apostrophe, par exemple SR".

Au bas de la fenêtre du programme se trouvent des lignes d'aide. Quand vous appuyez sur une touche F10 Vous pouvez appeler jusqu'à cinq écrans d'aide pour le port LPT. Ils contiennent des informations sur l'objectif des signaux de port, leur correspondance avec les broches du connecteur, décrivent les fonctions d'interruption du port, l'algorithme d'impression d'un symbole, les adresses et l'objectif de tous les registres de port et d'autres informations utiles.

Les touches Fl - F3 permettent de sélectionner le numéro du port LPT utilisé de 1 à 3, s'il est disponible sur l'ordinateur. Sinon, un message s'affichera indiquant que le port LPT correspondant n'est pas disponible et la sélection ne sera pas effectuée.

1.3 Utilisation du port LPT pour les signaux d'entrée/sortie

À titre d'exemple d'utilisation d'un port LPT pour contrôler un périphérique externe, envisagez de connecter un moteur pas à pas unipolaire à un ordinateur.

Un moteur pas à pas (SM) est un dispositif électromécanique qui convertit les impulsions électriques en mouvements mécaniques discrets. Les moteurs pas à pas possèdent des propriétés uniques qui les rendent extrêmement utiles, voire indispensables dans certaines applications.

Les moteurs pas à pas appartiennent à la classe des moteurs à courant continu sans balais. Comme tout moteur sans balais, ils ont une fiabilité élevée et une longue durée de vie, ce qui leur permet d'être utilisés dans des applications critiques en termes de fiabilité. Par rapport aux moteurs à courant continu conventionnels, les moteurs pas à pas nécessitent des circuits de commande beaucoup plus complexes qui doivent gérer toutes les commutations des enroulements lorsque le moteur tourne.

L'un des principaux avantages des moteurs pas à pas est la possibilité d'effectuer un positionnement précis et un contrôle de vitesse sans capteur de rétroaction. Ceci est très important car de tels capteurs peuvent coûter beaucoup plus cher que le moteur lui-même. Toutefois, cela ne convient qu'aux systèmes fonctionnant à faible accélération et avec une charge relativement constante. Dans le même temps, les systèmes avec retour d'information sont capables de fonctionner avec des accélérations élevées et même avec une charge variable. Si la charge sur le moteur pas à pas dépasse son couple, les informations sur la position du rotor sont perdues et le système nécessite un étalonnage à l'aide, par exemple, d'un interrupteur de fin de course ou d'un autre capteur. Les systèmes de rétroaction ne présentent pas cet inconvénient.

Lors de la conception de systèmes spécifiques, vous devez faire un choix entre un moteur conventionnel et un moteur pas à pas. Lorsqu'un positionnement précis et un contrôle précis de la vitesse sont requis, et que le couple et la vitesse requis se situent dans des limites acceptables, un moteur pas à pas est la solution la plus économique. Comme pour les moteurs conventionnels, un réducteur peut être utilisé pour augmenter le couple. Cependant, une boîte de vitesses n'est pas toujours adaptée aux moteurs pas à pas. Contrairement aux moteurs à balais, qui augmentent le couple à mesure que la vitesse augmente, un moteur pas à pas a plus de couple à basse vitesse. De plus, les moteurs pas à pas ont une vitesse maximale bien inférieure à celle des moteurs à balais, ce qui limite le rapport de démultiplication maximal et, par conséquent, l'augmentation du couple à l'aide d'une boîte de vitesses. Les moteurs pas à pas prêts à l'emploi avec réducteurs sont produits par l'industrie en petits volumes. Un autre fait qui limite l'utilisation de la boîte de vitesses est son jeu inhérent.

SD a ce qui suit caractéristiques:

1. L'angle de rotation du rotor est déterminé par le nombre d'impulsions fournies au moteur.

2. Le moteur fournit le couple complet en mode arrêt (si les enroulements sont sous tension).

3. Positionnement de précision et répétabilité. Les bons moteurs pas à pas ont une précision de 3 à 5 % de la taille du pas. Cette erreur ne s'accumule pas d'étape en étape.

4. Possibilité de démarrage/arrêt/inversion rapide.

5. Haute fiabilité grâce à l'absence de balais, la durée de vie du moteur pas à pas est en fait déterminée par la durée de vie des roulements.

6. La dépendance unique de la position aux impulsions d'entrée garantit un positionnement sans retour.

7. Possibilité d'obtenir des vitesses de rotation très faibles pour une charge reliée directement à l'arbre moteur sans réducteur intermédiaire.

8. Une gamme de vitesses assez large peut être couverte, la vitesse est proportionnelle à la fréquence des impulsions d'entrée.

Les moteurs pas à pas ont également défauts:

1. Ils se caractérisent par le phénomène de résonance.

2. Perte possible du contrôle de position en raison d'un fonctionnement en boucle ouverte.

3. La consommation d'énergie ne diminue pas même sans charge.

4. Il est difficile de travailler à des vitesses élevées.

5. Faible densité de puissance.

6. Schéma de contrôle relativement complexe.

Il existe des moteurs pas à pas unipolaires et bipolaires. Les premiers comportent quatre enroulements avec une borne commune et quatre bornes de commande, auxquelles sont appliquées séquentiellement des tensions de même polarité. Ces derniers ne comportent que deux enroulements à quatre bornes dont la polarité de la tension doit être modifiée.

Si vous fermez toutes les bornes d'un moteur en état de marche et essayez de faire tourner son arbre, l'arbre devrait tourner avec difficulté, comparé à la façon dont il tourne avec les bornes ouvertes.

Pour faire correspondre les sorties TTL de faible puissance du port LPT avec la faible résistance des enroulements du moteur pas à pas, il est pratique d'utiliser la puce pilote ULN2003, qui contient sept puissants commutateurs à transistors de type n-p-n assemblés selon un circuit Darlington. Chaque touche est capable de contrôler une charge avec une consommation de courant allant jusqu'à 500 mA. Le microcircuit possède des résistances dans le circuit de base, ce qui vous permet de connecter directement ses entrées aux microcircuits numériques conventionnels. Tous les émetteurs sont connectés entre eux et sortent sur une broche commune E. Les collecteurs des commutateurs à transistors sont connectés à la broche CLMP via des diodes de redressement, ce qui vous permet de contrôler des charges inductives à l'aide de ce microcircuit avec un minimum de composants externes. Notre stand utilise uniquement quatre interrupteurs à transistors.

Le schéma électrique de connexion du moteur pas à pas est illustré à la figure 4.

Figure 4 – Schéma de connexion du moteur pas à pas

Les broches du moteur pas à pas sont connectées aux bits D0 – D3 du registre de données du port parallèle via la puce ULN2003. Des LED rouges avec des résistances de limitation de courant sont connectées en parallèle aux entrées du pilote aux bits D0 – D3. Cela vous permet d'observer l'ordre dans lequel les impulsions sont fournies aux enroulements du moteur en mode débogage et à faibles vitesses de rotation.

Généralement, avant de commencer à travailler avec un appareil utilisant un entraînement par moteur pas à pas, il est nécessaire de régler l'unité mobile dans la position initiale. Pour obtenir un retour de position, dans le cas le plus simple, un interrupteur de fin de course est utilisé, par exemple un optocoupleur avec une fente, qui comprend un drapeau fixé à une unité mobile. Dans le support, le drapeau est fixé directement sur l'arbre du rotor du moteur. Cette solution permet de déterminer facilement non seulement la position initiale de l'arbre, mais également le nombre de pas par tour complet du rotor.

Le rôle de capteur de rétroaction est assuré par un phototransistor optocoupleur. Le commutateur le plus simple avec un émetteur commun y est construit, dont le courant de sortie est encore amplifié par deux étages clés utilisant des transistors KT315. Le signal amplifié du phototransistor allume la LED verte pour plus de clarté et va au bit S3 (broche 15 du connecteur) du registre d'état du port.

L'algorithme de contrôle d'un moteur pas à pas est assez simple. Il est nécessaire de former une séquence spéciale d'impulsions au niveau des broches du port. Cette séquence est présentée dans le tableau 8.

Tableau 8 – Combinaison d'impulsions pour faire tourner l'arbre du moteur

Numéro d'étape


La séquence indiquée dans le tableau met en œuvre un demi-angle de rotation de l'arbre d'un pas. Si nous utilisons des combinaisons uniquement pour les étapes 1, 3, 5 et 7, nous obtenons l'angle de rotation complet de l'arbre par étape.

La différence entre les algorithmes (angle de rotation complet et demi de l'arbre d'un pas) est que dans le second cas, la vitesse de rotation est deux fois inférieure, tandis que l'angle de rotation de l'arbre du moteur à chaque pas est divisé par deux, c'est-à-dire la résolution augmente la capacité du système. Dans le second cas également, la consommation électrique double approximativement et, de plus, le moteur est capable de développer deux fois plus de couple.

Pour changer le sens de rotation de l'arbre du moteur, il est nécessaire de former les séquences indiquées dans l'ordre inverse.

Vous trouverez ci-dessous un court exemple de programme pour Turbo C exécuté sur le système d'exploitation MS-DOS. Ce programme fait tourner le moteur pas à pas vers l'avant, en mode plein angle, un pas à la fois.

Regardons un autre exemple de programme de contrôle de moteur pas à pas en langage assembleur. Ce programme interroge le capteur de rétroaction et règle automatiquement l'arbre du moteur dans sa position de départ d'origine. De plus, au démarrage, il effectue un tour complet du rotor afin de retrouver le nombre de pas par tour. Le paramètre résultant vous permet de déterminer sans ambiguïté le nombre de pas requis pour tourner à l'angle souhaité. Pour afficher les valeurs numériques à l'écran sous une forme pratique pour l'opérateur, des routines de conversion de code à partir de la source sont utilisées.

; Contrôle du moteur pas à pas via le port LPT

MODÈLE PETIT ; modèle de mémoire

PILE 100h ; taille du segment de pile 100h

DONNÉES; segment de données

TEXT1 DB "Nombre de pas par tour - ",0DH,0AH, "$"

BD DE RÉSULTAT " ", 0DH, 0AH, "$" ; nombre de pas par tour en ASCII

TEXT2 DB "Définir le nombre de pas dans le sens des aiguilles d'une montre - ",0DH,0AH, "$"

TEXT3 DB "Définir le nombre de pas dans le sens inverse des aiguilles d'une montre - ",0DH,0AH, "$"

TEXT4 DB "Régler le temps d'un pas en µs (de 2000 à 65000) - ", 0DH, 0AH, "$"

err_msg db "Mauvais numéro saisi"

crlf db 0Dh,0Ah,"$"

base de données tampon 6 ; taille maximale du tampon d'entrée

blength db ? ; taille du tampon après la lecture

bcontenu DB 10 DUP (0) ; contenu du tampon

ST_MCS DW0 ; microsecondes d'octets élevés

ML_MCS DW 10000 ; microsecondes d'octets faibles

COUNT_T DW1 ; compteur de pas en pleine rotation

COUNT_L DW 0 ; compteur de pas gauche

COUNT_R DW 0 ; compteur de pas à droite

ERREUR DB 0 ; indicateur d'erreur

CODE ; segment de code

procédure principale ; début de la procédure principale

mov ds, hache ; définir le registre DS

MOV DX, DÉCALAGE TEXTE1

INT 21H ; sortie de message

MOUVEMENT AL, 00010001B

H1 : ROL AL, 1 ; remettre l'arbre en position initiale

MOUVEMENT DX, 378H ; Adresse du registre de données LPT

TEMPS D'APPEL ; retard d'étape

MOUVEMENT DX, 379H ; Adresse du registre d'état LPT

TEST AL, 08H; analyse de l'état du phototransistor

JNZ H1 ; répéter si ce n'est pas démarré

H2 : ROR AL,1 ; faire un pas vers la droite pour retirer le rideau

INC COUNT_T ; accumuler un compteur de pas

MOUVEMENT AXE, COUNT_T ; Convertir en ASCII et afficher les étapes

MOV DX, DÉCALAGE TEXTE2

INT 21H ;sortie de message

APPELEZ DEC2HEX ; entrez le nombre de pas à gauche et

;convertir de ASCII en binaire

MOV COUNT_L, AX ; enregistrer le nombre de pas à gauche

MOV DX, DÉCALAGE TEXTE3

INT 21H ; sortie de message

APPELEZ DEC2HEX ; entrez le nombre d'étapes à droite et convertissez de l'ASCII en binaire.

JNZ FIN ; se terminer si le numéro est mal saisi

MOUVEMENT COUNT_R, AX ; enregistrer le nombre de pas à droite

MOV DX, DÉCALAGE TEXTE4

INT 21H ; sortie de message

APPELEZ DEC2HEX ; entrez le temps de l'étape et

; convertir de ASCII en binaire

JNZ FIN ; se terminer si le numéro est mal saisi

MOUVEMENT ML_MCS, AX ; gagner du temps

MOUVEMENT AL, 00010001B

H3 : ROL AL, 1 ; tourner le moteur vers la gauche

H4 : RORAL, 1 ; tourner le moteur vers la droite

FIN : mov ah, 4ch ; Fonction de terminaison du programme DOS

int 21h ; compléter le programme

fin principale ; fin de procédure principale

; Chiffres décimaux ASCII dans ES:DI se terminant par "$"

MOV DI, RÉSULTAT DE DÉCALAGE ; adresse du résultat

MOVBX, 10 ; diviseur

XOR CX, CX ; compteur de chiffres à 0

DIVLP : XOR DX, DX

DIV BX ; diviser le nombre par 10

ADD DL, "0" ; ajoute le code ASCII de zéro au reste

PUSH DX ; Pousser un chiffre sur la pile

INC CX ; augmenter le compteur de chiffres

TEST AX, AX ; et, s'il y a encore quelque chose à partager,

JNZ DIVLP ; continuer la division

STOSB ; ajoutez-le à la fin de la ligne dans ES:DI

LOOP STORE ; continuer pour tous les chiffres CX

;MOV BYTE PTR ES:, "$" ;ajouter "$" à la fin de la ligne

MOV DX, RÉSULTAT DE DÉCALAGE ; dans l'adresse de la ligne DX

INT 21H ; chaîne de sortie

TEMPS DE PROCÉDURE PROCHE ; délai en microsecondes

; Le sous-programme DEC2HEX convertit un nombre décimal en hexadécimal

DEC2HEX PROC PROCHE ; Zoubkov, p. 152

mov dx, décalage crlf

int 21h ; traduction de ligne

; convertir un nombre au format ASCII d'un tampon en un nombre binaire dans AX

xor di,di ; DI = 0 - numéro d'octet dans le tampon

xor hache,hache ; AX = 0 - valeur du résultat actuel

mouvement si,cx ; SI - longueur du tampon

mouvement cl,10 ; CL = 10, multiplicateur pour MUL

mov bl, octet ptr bcontent

sous bl,"0" ; chiffre = code de chiffre - code de caractère "0"

jb asc_error ; si le code caractère était inférieur au code "0",

cmp bl,9 ; ou plus de "9"

et asc_error ; quitter le programme avec un message d'erreur

mul cx ; sinon : multipliez le résultat actuel par 10,

ajouter hache,bx ; ajoutez-y un nouveau numéro,

inc di; augmenter le compteur

cmp di, si ; si compteur+1 est inférieur au nombre de caractères -

jb asc2hex ; continuer (le compteur compte à partir de 0)

retraité ; achèvement du sous-programme (résultat en AX)

asc_error : ERREUR MOV, 1 ; indicateur d'erreur

mov dx, décalage err_msg

int 21h ; afficher un message d'erreur

retraité ; et terminer le sous-programme

fin principale ; fin du programme avec le point d'entrée principal

pousad ; pousser tous les registres communs sur la pile

déplacer ecx, ; charger le nombre requis de ticks RDTSC

; Calculer la limite du compteur dangereux

mov ebx,0ffffffffh ; 2 32 -1

sous ebx, ecx; soustraire la fréquence du processeur

;RDTSC ; lecture du compteur d'horloge du processeur

cmp eax, ebx ; comparer le RDTSC actuel avec la limite dangereuse

décembre ecx ; soustraire ce qui a déjà été mesuré par le cycle de ce qui est nécessaire ; nombre de ticks

oui warn_bord ; si plus - boucle à éviter

; passer par 0

déplacer ebx, eax ; charger la valeur initiale du compteur d'horloge

; Attendez les ticks ecx (ecx = freq moins les ticks déjà passés)

ajouter ebx, ecx ; obtenir la valeur finale du compteur

;RDTSC ; obtenir la valeur actuelle du compteur

DB 0FH, 31H ; Code de commande RDTSC

cmp eax, ebx ; comparer la valeur actuelle et finale

jb tp ; alors que le courant est moindre - boucle

papa ; extraire tous les registres courants de la pile

Il est donc temps d'écrire un programme simple illustrant comment lire et écrire des données sur un port LPT. Pour l'instant, nous l'écrirons dans la version console, afin qu'au stade de la compréhension et de l'analyse de ce programme, nous n'ayons pas à « creuser » dans les profondeurs du code sous Windows (ne vous inquiétez pas, le prochain article le fera être consacré spécifiquement à une application dotée d’une interface visuelle).


Avant de passer à l'écriture d'un programme, nous devons comprendre le port LPT, voir en quoi il consiste et comment nous pouvons l'utiliser à nos propres fins. Si nous parlons au niveau domestique, nous pouvons dire qu'un port LPT est un ensemble de contacts sur lesquels nous pouvons régler la tension à 0 ou +5 V (0 et 1 logiques) à partir du programme ou cela peut être fait par un externe. appareil de l’extérieur.



Voyons quels contacts nous pouvons opérer et lesquels nous ne pouvons pas. Le dessin ci-dessous va nous y aider (il n'a pas été dessiné par moi, l'auteur m'est inconnu. Mais il est très bien, je l'utilise moi-même tout le temps).

La figure montre que les broches du port peuvent être divisées en quatre groupes : "en terre" conclusions. Ils sont marqués en noir (pins 18-25). Tous sont reliés les uns aux autres, vous pouvez donc utiliser n'importe lequel d'entre eux comme terrain pour votre développement.

Les broches du soi-disant registre sont marquées en rouge Données(broches 2 à 9). Par registre, nous entendons (au niveau quotidien) l'association d'un groupe de contacts portuaires LPT. Il y en a 8 dans le registre des données. C'est le registre le plus judicieux - il nous permet, à la fois depuis le programme et depuis un périphérique externe, de définir le 0 ou le 1 logique sur ses contacts, c'est-à-dire c'est bidirectionnel. C'est exactement ce que nous avons utilisé dans notre premier programme. Port.exe- connecté la LED à la 2ème broche du port (comme vous pouvez maintenant le voir, cette broche appartient au registre de données et est son bit zéro) et à la broche 25 (masse), et en utilisant le programme nous avons contrôlé l'alimentation en tension de la broche 2 par rapport au sol. Pour accéder à ce registre, vous devez connaître son adresse : 0x378- en système hexadécimal ou 888 en décimal.


Sur la figure, il est indiqué &H378 - c'est la même chose que 0x378, c'est juste que la première désignation est inhérente au langage Pascal et autres, mais nous écrivons en C.


Se souvenir à nouveau du programme Port.exe, notez que nous avons accédé au registre en utilisant la fonction suivante _outp(Address, 0); , où la variable Adresseétait auparavant défini comme 888. Maintenant, il est clair que nous indiquions par là les fonctions _outp() que nous souhaitons travailler spécifiquement avec le Registre des Données.

Continuons à regarder le port. Il reste deux autres registres. La prochaine étape sera de s'inscrire Statut(broches 10-13, 15). Il s'agit d'un registre unidirectionnel. Il ne peut être contrôlé que « de l’extérieur », via un appareil externe (cela signifie modifier les données qu’il contient ; vous pouvez lire depuis n’importe quel registre dans n’importe quelle direction). Il a une adresse 0x379- en système hexadécimal ou 889 en décimal. Et inscrivez-vous Contrôle(contacts 1, 14, 16-17). Il ne possède que 4 contacts et ne peut être contrôlé que par un programme. Son adresse: 890 dans le système décimal.



Voyons maintenant comment les données sont écrites et lues dans les registres du port LPT, c'est-à-dire Comment pouvons-nous définir les broches requises sur 0 ou 1 ?


Écriture/lecture de données dans le registre de données

Voyons donc tout de suite un problème pratique. Je veux la broche numéro 3 du port LPT (bit D1 du registre Données) le 1 logique a été défini (c'est-à-dire pour qu'il y ait +5 V entre lui et la masse) et les broches restantes de ce registre (broches de port 2,4-9) étaient des zéros. Nous écrivons le code :

Adresse internationale = 888 ; données int = 2 ; Out32(Adresse, données);

J'ai utilisé la fonction Sortie32() bibliothèques entrée32.dll, on va s'y habituer, parce que... Nous analyserons d'autres exemples en utilisant cette bibliothèque. Si ce code est exécuté, il s'avère qu'il y a +5 V sur la broche 3 du port et zéro se bloque à 2,4-9. Comment est-ce arrivé?

Commençons par comprendre : nous passons le nombre 888 comme premier paramètre à la fonction Out32() Comme vous le savez déjà, il s'agit de l'adresse du registre du port Data LPT. La fonction sait désormais où écrire les données. Ensuite, nous passons le chiffre 2 comme deuxième paramètre, c'est-à-dire valeur à écrire sur le port. Veuillez noter que deux est dans le système de nombres décimaux. Que se passe-t-il ensuite ? Pour une meilleure visualisation du processus, nous convertissons le nombre 2 du système numérique décimal au système binaire. Chaque chiffre d'un nombre binaire, de droite à gauche, est écrit dans l'ordre dans le registre, en commençant par le chiffre de poids faible D0 (broche 2 du port) et en terminant par le chiffre haut D7 (broche 9). Si vous convertissez le nombre 2 de décimal en binaire et ajoutez 8 chiffres au nombre (selon le nombre de chiffres dans le registre), vous obtiendrez 00000010 . Chiffre zéro d'un nombre binaire - 0 (à l’extrême droite) est écrit dans D0, puis 1 est écrit dans D1. Et ainsi de suite jusqu'à la fin, les 8 chiffres.

Eh bien, êtes-vous un peu fatigué en lisant ? Maintenant, cela deviendra plus clair. Allons au registre Données Notons le nombre 245. Nous écrivons le code :

Adresse internationale = 888 ; données int = 245 ; Out32(Adresse, données);

Encore une fois, nous convertissons 245 en système de nombres binaires et écrivons les chiffres du nombre dans les bits correspondants du registre de droite à gauche. En conséquence, nous obtenons qu'il y a une tension de +5 V sur les broches du port LPT numérotées 2,4,6-9 et de zéro sur les broches 3.5.

Eh bien, maintenant je pense à écrire des données dans le registre Données nous l'avons compris. Il convient de noter que la plage de nombres décimaux pouvant être écrits dans le registre Données est compris entre 0 avant 255 . Notre registre est de 8 bits, ce qui signifie que le nombre maximum de combinaisons de 0 et 1 sur ses broches est de 2 8 -1=256-1=255.


Lecture de données

Lisons maintenant les données précédemment écrites sur le port, à savoir, découvrons les statistiques actuelles du registre Données. Nous voulons savoir quelles broches de registre Données Maintenant, le niveau de tension est élevé et il est faible. Vous vous souvenez ci-dessus, nous avons écrit le numéro 245 dans le port ? Récupérons-le du port maintenant. Nous écrivons le code :

Adresse internationale = 888 ; données entières ; données = Inp32 (Adresse);

Entrée32()- c'est une fonction pour lire les données du port de la bibliothèque entrée32.dll. Le seul paramètre est l'adresse du registre à partir duquel nous voulons lire les données. En sortie, il renvoie un nombre décimal correspondant au contenu actuel du registre. En exécutant ce code, la variable données contiendra le nombre 245. Qu’est-ce que cela signifie ? Pour le comprendre, nous convertissons le nombre 245 de décimal en binaire et nous pouvons affirmer en toute sécurité qu'aux broches du port 2,4,6-9 il y a maintenant +5 V et aux broches 3,5 0 V. (voir figure ci-dessus)


Écriture/lecture de données dans le registre de contrôle

Gérons maintenant le registre de contrôle. Il est unidirectionnel ; seul notre programme peut y écrire des données. Notez plusieurs caractéristiques de ce registre. Premièrement, il ne contient que quatre broches fonctionnelles. Cela signifie que vous pouvez écrire un nombre compris entre 0 et 2 4 -1=16-1=15. Deuxièmement, il présente une particularité très désagréable : certaines de ses sorties sont inversées, c'est-à-dire si vous écrivez 1 sur cette broche, alors elle est définie sur 0. Et vice versa, vous lisez 1, mais en fait il y a 0. Par conséquent, la signification des données écrites et des données lues n'est pas tout à fait évidente. Voici un exemple d'écriture d'un nombre dans le registre de contrôle. Nous écrivons le code :

Adresse internationale = 890 ; données int = 10 ; Out32(Adresse, données);

Et un exemple de lecture :

Adresse internationale = 890 ; données entières ; données = Inp32 (Adresse);

Écriture/lecture de données dans le registre d'état

Je suis enfin arrivé au registre Statut. Il est unidirectionnel, les données ne peuvent y être écrites dispositif externe, c'est à dire. Dans le programme, nous ne pouvons lire que le contenu de ce registre. Après avoir lu les données de Statut, et en les convertissant en nombre binaire, il est tout de suite assez difficile de comprendre ce qui se passe réellement avec les tensions aux sorties de ce registre. Premièrement, il a également des broches inversées, et deuxièmement, les bits de travail sont les nombres 4 à 7 et 0 à 3 ne sont pas utilisés, et donc le nombre est écrit plutôt intelligemment.

La question se pose, comment y installer ces données ? Assez facile. Pour l'instant, vous agirez comme un périphérique externe. Exécutez ce code.

Adresse internationale = 889 ; données entières ; données = Inp32 (Adresse);

Vous obtiendrez un numéro. Maintenant, prenez un conducteur et connectez-le à l'une des broches de terre du port (18-25) avec une broche de registre. Statut(10-13, 15), par exemple avec le dixième. Et relisez. Vous recevrez un numéro différent. Retirez le conducteur. Après lecture, vous obtiendrez le numéro d'origine. Comment ça fonctionne? Initialement, toutes les broches de ce registre ont un niveau de tension élevé de +5 V. Lorsque nous avons connecté l'une de ses broches à la terre, la tension sur celle-ci est devenue nulle, c'est-à-dire zéro logique. Vous pouvez essayer de court-circuiter d'autres broches de registre Statutà la terre, court-circuitez-en plusieurs à la fois.

Il convient de noter que dans de telles expériences avec le registre Statut Une situation pas tout à fait claire se présente avec les autres broches du port LPT. Après la première fermeture des terminaux Statut, les sorties commencent à clignoter Données Et Contrôle. Cela est dû au fait que le port LPT est conçu pour connecter une imprimante et que les broches Statut il est utilisé pour fournir à l'ordinateur certaines informations de service. Modifications des épingles Statut enregistre le pilote système du système d'exploitation. Il réalise également des actions de réponse, qui nous sont observables sous la forme de changements périodiques dans l'état d'autres conclusions. Vous ne pouvez rien y faire. En général, je ferme simplement une ligne de registre au début de mon travail avec le port. Statut au sol et attendez environ une minute jusqu'à ce que le conducteur « se calme ». Après cela, le port est gratuit, et de nouvelles opérations sur le registre Statut ne conduisent pas à des processus incontrôlés dans le port.


© Dmitri Ivanov
2005-2006

LPT EEE 1284 (Line Print Terminal) est une norme internationale d'interface parallèle permettant de connecter des périphériques d'un ordinateur personnel. Le nom LPT est dérivé du nom du périphérique d'impression standard LPT1 (Line Printer Terminal ou Line PrinTer) dans les systèmes d'exploitation de la famille MS-DOS.

Standard IEEE 1284définit une variante de port bidirectionnel qui permet d'envoyer et de recevoir simultanément des bits de données.Ce standard est basé sur l'interface Centronics et ses versions étendues (ECP, EPP). Norme IEEE 1284 était le résultat d’une longue lutte pour assurer la compatibilité. Standard comprend une description formelle de tous les modes de fonctionnement du port LPT. Avant l'adoption de cette norme, il n'existait aucun document formel qui, s'il était suivi, pouvait compter sur le bon fonctionnement de l'appareil dans toutes les configurations possibles.

Fondamentalement, le port LPT est utilisé pour connecter une imprimante, un scanner et d'autres périphériques externes à un ordinateur. Également un port LPT souvent utilisé pour connecter des périphériques de stockage externes.Peut être utilisé pour organiser la communication entre deux ordinateurs, connecter tous appareils de télésignalisation et/ou de télécommande.

La norme IEEE-1284 n'est pas actuellement en cours de développement. La standardisation finale du port parallèle a coïncidé avec le début de l'introduction de l'interface USB, qui permet également de connecter des MFP et garantit une vitesse d'impression plus élevée et un fonctionnement fiable de l'imprimante. Une autre alternative à l'interface parallèle est l'interface réseau Ethernet.

Histoire

Initialement, le port LPT était physiquement absent de la carte mère et était implémenté par une carte d'extension supplémentaire insérée dans l'un des connecteurs d'extension ISA de la carte mère. Le port parallèle était généralement utilisé pour une imprimante ou un scanner, pour lesquels le transfert d'une grande quantité de données n'était pas critique en termes de temps. Par la suite, la prise en charge des ports parallèles a été intégrée aux chipsets qui implémentent la logique de la carte mère.

Le port parallèle Centronics est un port utilisé depuis 1981 dans les ordinateurs personnels IBM pour connecter des périphériques d'impression, développé par Centronics Data Computer Corporation. Initialement, ce port était conçu uniquement pour le transfert de données simplex (unidirectionnel), car il était supposé que le port Centronics ne devait être utilisé que pour travailler avec une imprimante. Par la suite, différentes sociétés ont développé des extensions d'interface duplex (Byte Mode, EPP, ECP). La norme internationale IEEE 1284 a alors été adoptée, décrivant à la fois l'interface de base de Centronics et toutes ses extensions.

informations générales

Le standard IBM définit 3 ports d'E/S parallèles, qui sont fournis dans le BIOS du PC et dans toutes les versions de DOS. Les adresses de base de ces ports sont réservées dans l'espace d'adressage de l'ordinateur : 3BCh, 378h, 278h.

Sur les ordinateurs compatibles IBM, les ports parallèles se voient attribuer des noms logiques spéciaux pris en charge par le système : LPT1, LPT2, LPT3. Il n'est pas nécessaire que ces noms logiques correspondent aux adresses de port d'E/S spécifiées. Au démarrage, le système analyse la présence de ports parallèles pour chacune des trois adresses de base. Les recherches de ports sont toujours effectuées dans l'ordre suivant : 03BCh, 0378h, 0278h. Le premier port parallèle trouvé reçoit le nom logique LPT1, le deuxième - LPT2 et le troisième - LPT3. Grâce à la mise en œuvre de ce schéma de dénomination, il y aura toujours un port LPT1 dans le système, quelle que soit l'adresse du port d'E/S qui lui est attribuée, à condition que l'ordinateur dispose physiquement de ce port parallèle.

Biographie

Les adresses de port attribuées à chaque emplacement LPTx peuvent être déterminées en lisant la zone de données du BIOS à l'adresse 0000:0408.

Port parallèle embarqué - Cette option spécifie l'adresse d'E/S et le numéro d'interruption du port LPT parallèle. Cette option, selon la version du BIOS, définit soit l'adresse et l'interruption utilisées par le port parallèle (LPT), soit uniquement l'adresse (l'interruption est définie par une option distincte située à côté).

Valeurs des options :

378H/IRQ7 – adresse 378H et interruption IRQ7 ;

278H/IRQ5 – adresse 278H et interruption IRQ5 ;

3BCH/IRQ7 – Adresse 3BCH et interruption IRQ7 ;

Auto – détermination automatique de l'adresse d'E/S et du numéro d'interruption ;

Désactivé – désactive le port LPT.

Mode port parallèle- Cette option définit le mode de fonctionnement du port LPT parallèle.

Exemple de page de paramètres Phoenix - Bios des récompenses

Valeurs des options :

Normal ou SPP - le plus simple unidirectionnel ou standard (port parallèle standard) ;

Bi-Dir, Bi-Directional ou BPP - bidirectionnel (Bi-Directional) ;

EPP - Port parallèle amélioré ;

ECP - Port de capacités améliorées ;

ECP+EPP - prend en charge deux modes : port à capacités améliorées et port parallèle amélioré.

Le choix optimal consiste à sélectionner la valeur « Enhanced Capabilities Port - ECP », qui garantira la vitesse maximale d'échange de données entre l'ordinateur et le périphérique.

Si l'équipement connecté à ce port PC parallèle est instable, vous pouvez successivement réduire le mode utilisé jusqu'au mode standard. Dans certains cas, l'installation des modes bidirectionnel (bidirectionnel) ou combiné (port parallèle amélioré et port de capacités améliorées) est utile.

ECP DMA Sélectionner- Si le port parallèle fonctionne en mode port haut débit avec des capacités ECP avancées (Port à capacités améliorées) ou ECP+EPP ( Port à capacités améliorées et port parallèle amélioré) , il doit allouer un canal d'accès direct à la mémoire (DMA). La valeur par défaut est le numéro de canal 3.

Propriétés système - Matériel - Gestionnaire de périphériques - Ports (Com et LPT) - Port LPT - Ressources

Note: Sur les versions de Windows qui n'utilisent pas le noyau Windows NT (comme DOS et certains autres systèmes d'exploitation), les programmes peuvent accéder au port parallèle à l'aide des routines outportb() et inportb(). Sur les systèmes d'exploitation Windows NT et Unix (NetBSD, FreeBSD, Solaris, 386BSD), le mécanisme de sécurité intégré du processeur 80386 est activé et l'accès au port parallèle est interdit à moins que le pilote correct ne soit spécifié. Cette restriction augmente la sécurité et aide à résoudre les conflits lors de l'accès à l'appareil.

Mode de fonctionnement des ports

La norme permet d'utiliser l'interface dans plusieurs modes :

  • PPS(Port parallèle standard) - port unidirectionnel, entièrement compatible avec l'interface Centronics.
  • Mode grignotage- permet d'organiser l'échange de données bidirectionnel en mode SPP en utilisant des lignes de contrôle (4 bits) pour transférer les données d'un périphérique vers le contrôleur. Historiquement, c’était la seule manière d’utiliser Centronics pour une communication bidirectionnelle.
  • Mode octet- mode d'échange de données bidirectionnel rarement utilisé. Utilisé dans certains contrôleurs plus anciens avant l'adoption de la norme IEEE 1284.
  • PPE(Enhanced Parallel Port) - développé par Intel, Xircom et Zenith Data Systems - port bidirectionnel, avec des vitesses de transfert de données allant jusqu'à 2 Mo/s (1991)
  • RSE(Extended Capabilities Port) - développé par Hewlett-Packard et Microsoft - de plus, des fonctionnalités telles que la compression matérielle des données, un tampon et la possibilité de travailler en mode DMA sont apparues.

Brochage LPT DB25F

Brochage LPT Centronics (CN36)

Émulation de port LPT (IEEE 1284) sous OS Windows

#1: Utilisation d'une carte d'extension compatible PCI pour un ordinateur personnel.

Exemple de carte d'extension PCIe avec un port EPP LPT

PCI(Anglais : Peripheral Component Interconnect) - un bus d'entrée/sortie pour connecter des périphériques à la carte mère de l'ordinateur.

Propriétés système - Matériel - Gestionnaire de périphériques - Ports (Com et LPT) - Port PCI LPT - Ressources

Note: Le plus souvent, lors de l'installation d'une carte PCI LPT, les adresses d'E/S seront différentes des adresses standard/de base, de sorte que presque tous les programmeurs et clés LPT ne fonctionneront pas ou fonctionneront de manière incorrecte.

L'adresse E/S réelle dépend du système d'exploitation et sera choisie de manière aléatoire. L'adresse E/S ne sera pas modifiée à moins que la carte PCI ne soit déplacée vers un autre emplacement PCI.

Des cartes PCI IEEE1284 à 1 et 2 ports sont disponibles à la vente.

La description technique des cartes d'extension PCI avec interface LPT indique la possibilité d'utiliser un espace d'adressage standard pour les E/S (entrée/sortie), cependant, la possibilité de spécifier les ressources d'E/S est déterminée par le type de système d'exploitation utilisé.

Dans les systèmes d'exploitation MS Windows 95/98/ME, DOS, il est possible de définir les paramètres correspondant aux ports standards ISA LPT. B b Dans les systèmes d'exploitation plus modernes (par exemple, Windows 2000/XP/Vista), l'allocation des ressources d'E/S s'effectue sans la participation de l'utilisateur ou de l'administrateur.Dans certains cas, cela peut empêcher le contrôleur de fonctionner dans certains modes et dépend largement de la configuration matérielle et du type de système d'exploitation utilisé.