Voici quelques informations concernant la programmation des ports les plus courants, pouvant servir, à des fins diverses, d'E/S TTL.
Le port parallèle (BASE = 0x3bc pour /dev/lp0, 0x378 pour /dev/lp1 et 0x278 pour /dev/lp2)~: {source~: IBM PS/2 model 50/60 Technical Reference, et quelques expériences}
En plus du mode standard, monodirectionnel en sortie, il existe, pour la plupart des ports parallèles, un mode "étendu" bidirectionnel. Ce mode possède un bit de sens qui peut être positionné en lecture ou écriture. Malheurement, j'ignore comment sélectionner ce mode étendu (il ne l'est pas par défaut)...
Le port BASE+0 (port de données) contrôle les signaux de données du port (D0 à D7 pour les bits 0 à 7, respectivement~; états~: 0 = bas (0V), 1 = haut (5V)). Une écriture sur ce port recopie (latches, NDT) les données sur les broches. En mode d'écriture standard ou étendu, une lecture renvoie les dernières données écrites. En mode de lecture étendu, une lecture renvoie les données présentes sur les broches du périphérique connecté.
Le port BASE+1 (port d'état), en lecture seule, renvoie l'état des signaux d'entrée suivants~:
réservés.
IRQ status (ne correspond à aucune broche, j'ignore comment il se comporte)
-ERROR (0=haut)
SLCT (1=haut)
PE (1=haut)
-ACK (0=haut)
-BUSY (0=haut)
Le port BASE+2 (port de contrôle), en écriture seule (une lecture renvoie la dernière donnée écrite), contrôle les signaux d'états suivants~:
-STROBE (0=haut)
AUTO_FD_XT (1=haut)
-INIT (0=haut)
SLCT_IN (1=haut)
si positionné à 1, autorise l'IRQ associée au port parallèle (qui intervient lors de la transition de -ACK de bas à haut).
commande le sens du mode étendu (0 = écriture, 1 = lecture), en écriture seule (une lecture ne renvoie rien d'utile sur ce bit).
réservés.
Brochage (un connecteur 25 broches femelle sur le port) (e=entrée, s=sortie)~:
1es -STROBE, 2es D0, 3es D1, 4es D2, 5es D3, 6es D4, 7es D5, 8es D6, 9es D7, 10e -ACK, 11e -BUSY, 12e PE, 13e SLCT, 14s AUTO_FD_XT, 15e -ERROR, 16s -INIT, 17s SLCT_IN, 18-25 Masse.
Les spécifications d'IBM précisent que les broches 1, 14, 16 et 17 (les sorties de contrôle) sont à collecteurs ouverts, connectées au 5V à travers des résistances de 4,7kiloohms (puits 20mA, source 0,55mA, niveau de sortie haut 5V moins la tension aux bornes de la résistance). Les autres broches ont un courant de puits de 24mA, de source de 15mA et leur niveau de sortie haut est supérieur à 2,4V. L'état bas dans les deux cas est inférieur à 0,5V. Il est probable que les ports parallèles des clones s'écartent de cette norme.
Enfin, un avertissement~: attention à la mise à la masse. J'ai endommagé plusieurs ports parallèles en les connectant alors que la machine fonctionnait. Il est conseillé d'utiliser un port parallèle non intégré à la carte mère pour faire des choses pareilles.
Le port jeu (ports 0x200-0x207)~: je n'ai pas de spécifications là-dessus, mais je pense qu'il doit y avoir au moins quelques entrées TTL et un peu de puissance en sortie. Si quelqu'un possède plus d'informations, qu'il me le fasse savoir...
Si vous voulez des E/S analogiques, vous pouvez connecter des circuits convertisseurs analogiques-numériques (ADC) et/ou numériques-analogiques (DAC) sur ces ports (astuce~: pour l'alimentation, utilisez un connecteur d'alimentation (de lecteur) inutilisé que vous sortirez du boitier, à moins que votre composant ne consomme très peu, auquel cas le port lui-même peut fournir la puissance). Sinon, achetez une carte AD/DA (la plupart sont contrôlées par les ports d'E/S). Ou, si vous pouvez vous contenter de 1 ou 2 voies, peu précises, et (probablement) mal réglées en zéro, une carte son à bas prix, supportée par le pilote sonore de Linux, devrait faire l'affaire (et se montrera plutôt rapide).
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre