Win3x.Org

Windows & DOS Community

[ Tutoriel ] Le port parallèle

Répondre   Page 1 sur 1  [ 4 messages ]
Auteur Message
attilavv
Sujet du message : [ Tutoriel ] Le port parallèle
Publié : 13 janv. 2011 11:56
Membre inscrit
Hors-ligne
 
Messages : 549
Inscription : 26 déc. 2008 13:22
 
Je vous propose de (re)découvrir le port parallèle d'une façon bien différente de son utilisation principale : Y brancher une imprimante.

Sous DOS et Windows 98SE était encore avec un DOS, il était possible d'accéder directement à chaque broche du port //. Les utilisations à l'époque était nombreuses. Les plus connues sont les lecteurs ZIP, LS120, disque dur externe, lecteur de CD-ROM, programmateur de EEPROM, adaptateur réseau ( Ethernet, modem ... ). Il a permis de faire aussi beaucoup de "petites choses" comme pouvoir cracker des machines, des programmateurs en tout genre de type I2C ou SPI ... la liste est longue !

Un simple port // une LED récupérée d'un boitier que j'ai coupé à la pince, un bouton poussoir récupéré du même boitier donc j'ai coupé le connecteur qui va sur la carte mère.
Je tiens à insister que je n'ai pas utiliser de fer à souder car certains n'en disposent pas, uniquement que ce que tout le monde peux avoir. Il est possible d'utiliser une paire de ciseaux, un couteau pour gratter la soudure et couper un fil, retirer la gaine ...

Sur l'écran se trouve la valeur lue soit 120 quand le poussoir est relâché, soit 112 quand il est appuyé.
La LED clignote "lentement" quand le poussoir est relâché et "rapidement" quand il est appuyé.

Le programme :


J'ai été chercher un peu à droite et à gauche comme sur ce site : http://members.cox.net/jkemege/lapcounter.html
Pour faire ce petit programme http://attilavv.free.fr/images/LED.BAS fait avec Quick Basic 4.5 : http://www.commentcamarche.net/download ... quickbasic

Le programme :

DEF SEG = 0
prnt% = PEEK ( &H408) + PEEK(&H409) * 256
CLS

( Personnellement, j'aurais récupé l'adresse du port // par le bios et je l'aurais mis en dur. Mais là, c'est mieux je le reconnais )
PRINT "LPT1";
IF prnt% = 0 THEN
PRINT " not found"
ELSE
PRINT " adress is &H"; HEX$(prnt%)
END IF

( C'est que de la décoration ... afficher l'adresse physique du port parallèle )
Debut :
tempo = INP(prnt% + 1)

( L'adresse primaire c'est les 8 bits du "registre" de la donnée pour l'imprimante, l'adresse + 1 c'est le "registre" qui reçoit les status )
PRINT tempo
( C'est pour que cela se voit bien sur la vidéo :lol: )
IF tempo = 120 THEN
FOR i = 0 TO 50000
NEXT i
END IF

( Quand le poussoir est relaché, vitesse lente )
IF tempo = 120 THEN
FOR i = 0 TO 20000
NEXT i
END IF

( Quand le poussoir est appuyé, vitesse rapide )

IF a = 0 THEN a = 1 ELSE a = 1
IF a = 0 THEN OUT prnt%, &H0 ELSE OUT prnt%, &HFF

( un flip-flop et pour simplifier tout les fils à "0" ou à "1" )
GOTO Debut
Bien-sûr, il était possible de faire mieux, plus propre, plus beau. Mais la philosophie du port parallèle est aussi là : Faire comme nous avons envie, faire aussi simple que cela nous vient.
Je comprend ( et je comprennais ) ceux qui voudrait copier et dire que c'est eux qui l'ont fait tout en montrant cela au monde entier mais face à tout ces "erreurs", ces "conneries", c'était soit accepter d'être un con ou de devoir virer la #######, tout refaire au propre.

Pour ceux qui se lanceront dans l'aventure avec leur port parallèle, il est possible de faire mieux et aussi d'utiliser Visual Basic.
Moi, c'était que pour faire la vidéo et le programme était largement suffisant !

Les composants simple :


Peut on déjà parler d'électronique ?
Je pense que c'est encore un peu tôt. Disons que de fils, de poussoir, de boouton, d'interrupteur, de LED, de fil à dénuder, de fil à enrouler ensemble.

Pour ce qui est des LED car ceux qui voudront se lancer dans cette aventure commenceront probablement par là, une LED, une poignée de LED. Alors il faut savoir certaines petites choses :
- Une LED est une diode, c'est un composant électronique qui laisse passer le courant d'un sens mais pas dans l'autre. Sa xonsommation est faible car si il serait possible d'utiliser une mini ampoule, le port parallèle serait incapable de lui faire produire de la lumière. Une LED à donc un SENS puisque c'est une diode :

[ img ]
http://www.jeulin.fr/fr/a-a1024003-edc1 ... -LED-.html

Attention, il est hors de question de brancher une LED directement sur du 12V ou même du 5V car sa résistante est considérer comme nul. Ce qui signifie que dans le sens passant, c'est un fil, un simple bout de fil ce qui reviendrait à faire un court circuit ou de placer un fusible qui claquerait rapidement. Il faut donc placer une résistance en série en tenant compte de l'intensité lumineuse qui est désirée et de la caapcité de la LED. Quand c'est une LED de récupération disons que 20mA c'est bien. Sinon, il faut chercher car cela dépend aussi de la couleur :D . Pour savoir quoi mettre comme résistance :

http://www.volta-electricite.info/artic ... fr&pg=6152
L'exemple : 20mA = 0.02 ... je le rappel ... c'est "BIEN" !
Il est aussi possible de placer un potentiomètre, c'est à dire un bouton qui permet de faire le réglage du volume qu'il soit rond ou linéaire. Cela se trouve encore sur des vieux appareils.

Si il est possible de mettre une LED directement dans les trous d'un port parallèle, c'est qu'il est fait à le permettre.
Je reviendrais plus en détail sur le fonctonnement électronique du port paralléle. Disons que pour le moment, il y a aucun danger.


Je passe rapidement sur les poussoirs, les boutons, les interrupteurs.
Disons qu'il est possible d'utiliser vraiment n'importe quoi et même deux fils électrique.
Deux fils électrique proche l'un de l'autre, une roue avec une zone recouverte d'une plaque de métal et il est possible de compter le nombre de tour.
Deux plaques l'une sur l'autre avec une bande sur tout les bords et cela fait un capteur lorsqu'il y a écrasement.


Le fonctionnement électrique du port parallèle :

A l'origine, le port parallèle est là pour transmettre des données à travers un câble d'une longeur de quelques mètres ( 5m - 10m ), qui peux subir des dégradations. Le port est donc prévu juste pour cela. Envoyer un peu de courant, une poignée de mA par broche ( pin ) et surtout savoir se limiter à cette poignée de mA et jamais plus. Ensuite, il y a deux façons de faire. La première consiste à faire passer par la puce tout ses mA qui sont à multiplier par le nombre de broches ( une dizaine pour le PC ) ce qui peux commencer à faire beaucoup obligeant alors de faire des puces capables d'accepter sur sa broche 5V et surtout en interne de faire passer beaucoup de courant. L'autre façon consiste à tout faire passer par la masse en "court cuicuitant" une résistance qui elle se trouve au 5V et qui fera office de "limiteur".

Cette deuxième méthode, appeler des sorties à collecteur ouvert est celle qui est utiliser dans 99% des PC, le 1% qui reste se retrouve sur les plus anciens PC et portable ( 8088 -> 80286 ) tout en étant rare. Dans ce cas, une résistance est mise en "série" afin de protéger la puce mais cela limite totalement le port à moins d'un mètre et surtout ce n'est pas dans les normes ! ! !

Alors quand cela grille, c'est qu'une résistance qui devait limiter le courant était HS ! Mais là aussi c'est RARE !

C'est pour cette raison que j'avais préciser plus haut que c'est sans danger, sans risque.

Il est donc possible de traduire le fonctionnement d'une broche par :
- Soit qu'elle est à 0V et peux accepter un courant SANS LIMITE
- Soit qu'elle est à 5V et qu'elle laissera passer jamais plus que ce que l'électronique le prévoit. Une 10mA à 30mA afin de prévoir les pertes du câbles et de pouvoir satisfaire une très ancienne imprimante toujours compatible

Le danger serait d'utiliser le port à "l'envers", c'est à dire par exemple, de brancher une lampe sur le 5V d'une prise Molex ( le nom d'une prise pour disque dur ) et de mettre la masse dans une broche. Car dans ce cas, le 5V de la prise Molex est "sans limite" tout comme le 0V d'une broche et c'est la puce qui lacherait avant que l'alimentation ( sans limite dans l'absolue ) craque !

Donc, tant que les branchements se font TOUJOURS d'une masse, soit une des broches du port parallèle ou d'une prise Molex, d'un point de masse comme sous une vis car toutes les masses sont identiques à 100% ET de l'autre coté une des broches du port parallèle il y a aucun danger, aucun risque de griller quoique ce soit. ( revoir la vidéo pour ceux qui doute ).


Pour ce qui est des entrées, une entrée se sert en courant d'une façon tellement infime qu'il est possible de considérer cela comme étant nul. Juste le nécessaire pour activer un transistor. Mais là aussi les broches sont maintenu par une bonne résistance afin d'éviter que la valeur change tout le temps à cause de la longueur d'un câble par exemple.

[ img ]
L'image montre un câble comme étant un réservoir. Comme tout câble chauffe, à des fuites et que l'entrée à l'autre bout du câble est aussi une fuite, il y a juste que deux petits arrivées permanentes en 5V. Comme elles sont permanentes, pour vider le réservoir ou "faire croire que le réservoir est vide, il suffit de faire une énorme évacuation.

Les broches ( ou pin ) du port parallèle :

[ img ]

C'est la vue de derrière le PC comme il est visible en regardant l'arrière du PC et non l'inverse, c'est à dire en regardant dans le cable.
C'est à dire qu'une fois mis vos éléments, LED et fils cela doit correspondre au dessin.

D0 à D7 : C'est la valeur qui sera mis dans le registre DATA ( Adresse de base du port parallèle ). Ce sont donc 8 fils en SORTIE pour des LED !
S3 à S7 : C'est ce qui sera lu dans le registre STATUS ( adresse de base +1 ). Il y a 4 entrée dites actives à 1 et une active à 0. Disons que l'entrée 7 est toujours active jusqu'au moment où un fil la relis à la masse. Mais dans le principe toutes les entrées sont toujours actives car là nous somme déjà dans la norme "imprimante" et non dans le fonctionnement réel. Regarder la vidéo, j'ai utiliser S3 et de l'autre coté du poussoir le fil était à la masse. 120 ... 112 ... 8 d'écart ... c'est bien S3, le troisième bit ... et quand je n'appuyais pas dessus ... il était à 1 et quand j'appuyais il était à 0 ... Et oui ... c'est un signal /S3 et non S3. Et le reste ... 120 ... Ha ... pas plus grand que 128 ... donc ... /S7 est appuyer naturellement ... snif ... ( mais il est possible de le faire passer "proprement" avec une résistance à 5V. De plus, la broche doit être protégé à cause des risques de dégradations du câble ). Quand aux autres ... tous à 5V ... suffit de leurs mettre un fil à la masse ...

C0 à C3 : Comme leur registre à d'autres fonctions ... il est préférable de les oublier ( pour le moment ) ...

Il est donc possible d'utiliser sans difficultés 8 sorties et 4 entrées :
D0 D1 D2 D3 D4 D5 D6 D7 ----- S3 S4 S5 S6

Dernière modification par attilavv le 14 janv. 2011 19:26, modifié 6 fois.

Haut
Profil Citer
attilavv
Sujet du message : Re: [ Tutorial ] Le port parallèle.
Publié : 13 janv. 2011 11:56
Membre inscrit
Hors-ligne
 
Messages : 549
Inscription : 26 déc. 2008 13:22
 
Réservé :

Il est possible qu'il y a des manques, des erreurs : Faite le moi savoir !
Si le sujet interresse du monde, je ferais une partie 2, 3 ...

- Plus d'entrée ... les dernières broches ...

- Une LED, plusieurs LED c'est bien mais comment y mettre une lampe 220V, un moteur ...

- Des capteurs en tout genre ...

- Mon projet me plait ... je veux passer à l'USB ...


Pour ce qui est des applications, j'aurais tendance à écrire qu'elles sont sans limite !
Mais pour vous aider à en trouver, voila une liste de ce qui est possible de faire souvent avec peu d'électronique mais beaucoup de programmation !

- Lecteur de carte à puce.
- Lecteur de SD Card.
- Connecter un afficheur du type texte ( 2 lignes de 16 caractéres comme dans certains distributeur de café )
- connecter un écran LCD couleur comme ceux de certains téléphones, afficher des images, des dessins de lettre pour former du texte ...
- Programmer une mémoire Flash série ...

Et tout cela sous DOS, sans port USB ... et oui, imaginer un lecteur de carte SD sur le port // qui fonctionnerait avec un "bon driver" ... sur un 8088 ... sous DOS !


Ne pas compter sur moi pour la partie PROGRAMME.
Mais pour la partie électronique, je peux apporter mon aide.

_________________

-----------------------------------------
Alienware M18x i7 3840 / CF 7970 / 32Gb 1866Mhz / SSD 256 + Raid 512Gox2
Serveur Minecraft : ASUS portable W90VP T9400 3Ghz CF 4870.


Haut
Profil Citer
gm86
Sujet du message : Re: [ Tutorial ] Le port parallèle.
Publié : 14 janv. 2011 12:25
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 541
Inscription : 01 sept. 2008 19:07
 
Je sais que le segment 40h est celui des données du BIOS.
En revanche, grâce à vous, j'apprends que le mot stocké à l'offset 8 contient l'adresse du port imprimante. Et effectivement, il est mieux de l'obtenir ainsi que par la voie de l'utilisateur.

Il ne manque plus qu'à remplacer le mot anglais tutorial par tutoriel pour que le sujet prenne sa place dans la section « documentation ». Bonne initiative !


----
Publié : Mercredi 23 Mars 2011 10:50:50
attilavv a écrit :
Il est donc possible d'utiliser sans difficulté 8 sorties et 4 entrées :
D0 D1 D2 D3 D4 D5 D6 D7 ----- S3 S4 S5 S6
N'est-ce pas l'astuce utilisée par les lecteurs branchés sur port parallèle standard (SPP), à l'instar du ZIP en mode nibble ?
En effet, à la base, le port parallèle ne servait qu'à envoyer des octets car il était destiné aux imprimantes. Heureusement, il était possible de recevoir des quartets via les broches de statut.

_________________

C:\ONGRTLNS.W95


Haut
Profil Citer
attilavv
Sujet du message : Re: [ Tutoriel ] Le port parallèle.
Publié : 23 mars 2011 13:07
Membre inscrit
Hors-ligne
 
Messages : 549
Inscription : 26 déc. 2008 13:22
 
OUI ! Exactement !

Zip, mais aussi le SCSI, des cartes réseaux // ... et ailleurs les programmateurs d'EPROM en //
Les lecteurs ZIP / LS120 / bernouilli ... arrivèrent bien plus tard.

C'est l'arrivé de Windows XP qui a tout bloqué considérant alors le port // comme un simple port imprimante alors qu'il aurait été possible de le considérer comme un port d'extension à part entière.

Une volonté de "nous" retirer une grosse liberté, la possibilité de continuer à faire nos propres montages ...
L'USB ... Ha c'est bien, c'est mieux ... mais là ... il faut du matériel, il faut arrivé à programmer comme un dieux ( comme une entreprise de 50 personnes ).
Et puis arrivé à trouver des puces en DIL avec des grosses papattes faciles à souder c'est aussi difficile ( cela existe ) car en USB "tout" est en PLCC, en CMS.

_________________

-----------------------------------------
Alienware M18x i7 3840 / CF 7970 / 32Gb 1866Mhz / SSD 256 + Raid 512Gox2
Serveur Minecraft : ASUS portable W90VP T9400 3Ghz CF 4870.


Haut
Profil
Afficher : Trier par : Ordre :
Répondre   Page 1 sur 1  [ 4 messages ]
Revenir à « Documentations et tutoriels »
Aller :