A.M.F.N.
Association des Modélistes Ferroviaires de Nice

Introduction au port parallèle des PC


Le port parallèle des PC, (ou si l'on préfère: la prise Centronics), peut facilement  être  utilisé à d'autres  fins  que  la  commande  d'une imprimante.
Elle est notamment très commode pour contrôler de petits dispositifs  électroniques externes délicieusement inutiles, voir même de quelque utilité. C'est un moyen simple et efficace pour commander un réseau miniature depuis le PC. Intérêt du port parallèle, par rapport à d'autres interfaces:

Ses avantages par rapport à l'interface série sont:

• une plus grande simplicité: pas besoin de récepteur série (UART) ou de microprocesseur dans le dispositif connecté. Des composants très simples peuvent se connecter directement aux fils du port.

• une plus grande rapidité, permettant par exemple un fonctionnement en scrutation (le PC interrogeant en permanence les lignes d'entrée, pour voir si elles ont changé d'état).

Ses avantages par rapport à une carte d'entrée/sortie (qui s'installe sur un connecteur à l'intérieur du PC) sont:

• la sécurité: rien à enficher sur les connecteurs internes, pas besoin d'ouvrir la machine.

• la disponibilité sur tous les types de PC, des vieux clous jusqu'aux portables, en passant par les PC "pleins comme un oeuf", où tous les emplacements sont déjà occupés.

Le seul petit inconvénient est la limitation de distance entre le PC et le dispositif connecté. En utilisant le câble de l'imprimante, qui est fait pour ça, il n'y a aucun problème. Si nécessaire, il est possible d'augmenter la distance en utilisant des câbles de qualité appropriée (IEE1284), et en faisant des essais.

La question se pose également de savoir jusqu'à quand les PC seront pourvus de ports parallèles.
Notre opinion sur le sujet est la suivante: s'il est clair que le port parallèle est amené à disparaître un jour, ça ne sera pas avant quelques années. Mais de toutes façon, nos bricolages sont conçus avec l'idée d'utiliser un vieux PC de récupération, bas de gamme, bon marché, et dédié au train. Comme nous utilisons actuellement des PC vieux de près de 20 ans, nous pouvons tabler sur le fait que dans 20 ans nous pourrons encore utiliser les PC d'aujourd'hui, qui seront alors vieux, bon marché, etc. Et quant à ceux d'il y a 20 ans, qui nous dit qu'ils ne seront pas encore opérationnels?

Différents types de ports parallèles:

Au fil des années, le port parallèle a subi plusieurs améliorations, et donc des changements de spécification.
On en distingue actuellement quatre sorte, du plus ancien au plus récent:

• le port parallèle d'origine, appelé "SPP" (Simple Parallel Port),
• le port "bidirectionnel simple", aussi appelé "PS/2",
• le port "EPP" (Extended Parallel Port),
• le port "ECP" (Extended Capability Port).

Les PC actuels offrent toutes ces possibilités sur un même port. On parle alors de "mode": mode SPP, mode PS/2, mode ECP, mode EPP.

Pour plus de détails sur ces différents modes, on peut se référer à la spécification officielle IEE1284, ou bien visiter quelques excellents sites Web traitant du sujet: http://www.lvr.com/index.html, ou: http://www.fapo.com/. Pour les  ports étendus, visiter: http://www.fapo.com/1284int.htm.

Dans ces pages, nous nous limiterons au mode primitif (SPP) pour plusieurs raisons:

• il est suffisant pour la plupart des applications liées au train électrique,
• nous utilisons personnellement des vieux PC de récupération, qui sont "dédiés" à la gestion du réseau, et qui n'ont que ce type de port.
Les descriptions qui suivent ne s'appliquent donc qu'aux ports SPP, ou aux autres ports en mode SPP.

Description générale d'un port SPP:

Un port parallèle SPP comprend 3 groupes de fils:

  • 8 fils de sortie, dits fils de données,
  • 5 fils d'entrée, dits fils d'état,
  • 4 fils d'entrée-sortie, dits fils de contrôle.
Les fils "de sortie" sont des fils qui présentent, vers l'extérieur, des états TTL (0/5V) commandés par le programme.
Les fils "d'entrée" sont des fils qui peuvent lire, sous contrôle du programme, des états TTL présentés par le dispositif extérieur.
Les fils "d'entrée-sortie" sont des fils qui fonctionnent en "collecteur ouvert", et peuvent donc servir aussi bien aux sorties qu'aux entrées. Mais dans toutes les applications présentées dans ces pages, ils ne seront utilisés qu'en mode "sortie".

Chacun de ces groupes a une adresse d'entrée/sortie, soit respectivement A0, A1 et A2. Ces adresses sont consécutives (A1=A0+1 et A2=A1+1). La détermination de l'adresse A0, ainsi que la façon de lire ou d'écrire des données sur les fils sont détaillées sur la page suivante.

Les fils de données:

Ces 8 fils sont commandées par écriture d'un octet dans un registre à l'adresse A0.

Ces lignes peuvent être relues, mais en mode SPP, on ne relit que ce qu'on a écrit (sauf court-circuit), ce qui est de peu d'intérêt.
Dans les autres modes, on peut lire les  signaux présentés  par le dispositif connecté (d'où l'appelation de "bi-directionnel"), mais ceci sort du cadre de ces pages.

Les fils d'état:

Ces 5 fils permettent de lire les signaux TTL présentés par le dispositif connecté, sous forme d'un octet, à l'adresse A1.
L'une de ces lignes peut également provoquer une interruption HW, mais ceci sort également du cadre de ces pages.

Les fils de contrôle:

Ces 4 fils sont commandés par écriture d'un octet dans un registre à l'adresse A2.
L'interface du PC utilise des circuits à collecteurs ouverts et des résistances au +5V, ce qui permet de lire les signaux présentés par le dispositif connecté à condition d'avoir au préalable écrit des "1" dans le registre de commande. Nous n'utilisons pas cette possibilité, aussi nous n'en parlerons pas dans ces pages.

Affectation des fils sur les connecteurs:

Chacun des fils dont nous venons de parler est disponible soit sur la prise DB25 femelle, sur le PC, soit sur la prise Centronics 36 points, à l'autre bout du câble d'imprimante. Les numéros des broches ne sont pas les mêmes sur ces deux connecteurs.
Tous les montages présentés sur ces pages se connectent à la prise Centronics, avec utilisation du câble d'imprimante.

Registre correspondant aux 8 lignes de données, à l'adresse A0:
 

bits vus du programme
valeur des bits sur les fils
position sur le connecteur DB25 du PC
position sur le connecteur Centronics 36 points de l'imprimante
nom "officiel" du signal sur l'imprimante
nom utilisé sur nos schémas
D0
+D0
2
2
+D0
D0
D1
+D1
3
3
+D1
D1
D2
+D2
4
4
+D2
D2
D3
+D3
5
5
+D3
D3
D4
+D4
6
6
+D4
D4
D5
+D5
7
7
+D5
D5
D6
+D6
8
8
+D6
D6
D7
+D7
9
9
+D7
D7
(0V)
 
18 à 25
19 à 26
logical 0
0V
(GRND)
 
capot
17
chassis ground

Remarques:

• le signe + devant D0...D7 indique que la valeur du bit écrite par le programme est égale à celle que l'on retrouve sur le fil correspondant. En d'autres termes, il n'y a pas d'inversion de la valeur logique de ces bits. Nous verrons qu'il n'en est est pas de même pour les autres registres.

• les noms "officiels" des signaux sont ceux utilisés dans les spécifications d'imprimante. Ils sont donnés ici à titre indicatif.

Registre correspondant aux 5 lignes d'état, à l'adresse A1:
 

bits vus du programme
valeur des bits sur les fils
position sur le connecteur DB25 du PC
position sur le connecteur Centronics 36 points de l'imprimante
nom "officiel" du signal sur l'imprimante
nom utilisé sur nos schémas
D3
+D3
15
32
+ error
I3+
D4
+D4
13
13
+ select
I4+
D5
+D5
12
12
+ paper end
I5+
D6
+D6
10
10
- acknowledge
I6+
D7
-D7
11
11
+ busy
I7-

Remarques:

• D7 est inversé, c'est-à-dire que lorsque le fil est à l'état "0", le programme lit une "1" logique, et inversement.

• les noms "officiels" des signaux, sont sujet à d'autres inversions. Ceci est sans importance pour l'utilisation que nous en faisons.

Registre correspondant aux 4 lignes de contrôle, à l'adresse A2:
 

bits vus du programme
valeur des bits sur les fils
position sur le connecteur DB25 du PC
position sur le connecteur Centronics 36 points de l'imprimante
nom du signal vu de l'imprimante
nom utilisé sur nos schémas
D0
-D0
1
1
- strobe
C0-
D1
-D1
14
14
- autofeed
C1-
D2
+D2
16
31
- init printer
C2+
D3
-D3
17
36
- select input
C3-

Remarques:

• D0, D1 et D3 sont inversés, c'est-à-dire que lorsque le programme écrit un "0" logique, les fils correspondants prennent l'état "1", et inversement.

• bien que nous n'utilisons pas ces lignes en entrée, précisons à titre indicatif que D0,D1  et D3 sont inversés en lecture  comme  en écriture, ce qui fait qu'on relit  bien  ce qu'on a écrit. Mais pour mettre  toutes les lignes à 1 (utilisation en entrée), il  faut écrire xxxx0100  (x4h)  à l'adresse A2, et non xxxx1111 (xFh).

• le registre A2 commande également deux lignes internes, "IRQ EN" (D4) et "direction" (D5), que nous n'utilisons pas, et que nous ne décrirons donc pas.

Brochage sur circuit imprimé:
 

Ci-contre, l'empreinte d'un connecteur Centronics sur un circuit imprimé, (vu par transparence), dans la même position que sur la photo ci-dessous. Les noms des broches sont ceux utilisés dans nos schémas.
 
 

Peut-on endommager le port parallèle en jouant avec?

Soyons francs: oui, bien sûr! Il serait malhonnête de prétendre le contraire.
Cependant, en 20 ans de bricolages ferroviaires ou autres, et près d'une dizaine de PCs, ça ne nous est jamais arrivé, ni à personne de notre connaissance. Il suffit de faire attention, et de respecter certains principes de base -et de bon sens- de l'électricité.

Pour limiter les risques, vous pouvez tout de même utiliser un vieux PC, ou au moins un port parallèle sur carte ISA (et non sur carte mère).

Par ailleurs, nous vous recommendons de prendre connaissance de notre page sur la sécurité électrique.

Le port parallèle en 2012

On entend souvent dire que le port parallèle est en voie de disparition, ou a même déjà disparu au profit du port USB.
Ce n'est pas totalement exact, mais une solution alternative est néanmoins intéressante.
Voir notre page sur le sujet.

Programmation:

La page suivante présente les principes de programmation du port parallèle.


sommaire pages ordinateur sommaire port parallèle page suivante

Retour à la page d'accueil