Port Parallèle PC : configuration registres pour bi-directio

Bonjour à tous,

Voici mon souci : j’utilise un PC programmé en Turbo-Pascal pour piloter mon système de plancher chauffant électrique. La sonde de température extérieure est un CI DS1620 s’interfaçant sur le port parallèle LPT1 ou 2 du PC.

La borne Data du DS1620 (reçoit la configuration du PC et envoie la température au PC) est connectée à la borne 17 (Select In) du LPT. Elle envoie ou reçoit les data en mode série via le LPT.

ca fonctionnait parfaitement sur un vieux PC type XT 8086 , mais ça n’a jamais fonctionné sur un AT (286 à I3). Pourtant la borne Select In semble bien pouvoir être bi-directionnelle d’après Internet, et d’ailleurs ça marche avec un exécutable .exe qui retourne l’adresse du port ou est connecté le DS 1620 et donne la température mesurée sur un AT. Jamais pu trouver le code source de cet exécutable !

Il me semble qu’il faudrait indiquer au registre en question (adresse écriture lecture $03BF ou 027A ou 037A) qu’il doit être en écriture ou en lecture ? Je ne trouve pas l’instruction (sans doute un octet donné à envoyer à une adresse donnée) pour positionner ce registre en écriture ou en lecture ?

Question annexe : pourquoi ça marche sur un XT, sans rien indiquer au registre ??? Mon vieux XT est à présent hors d’usage (et hors d’age !).

Merci de vos lumières. Bien cordialement. Jean-Marc

Bonjour,

Trouvé sur Internet :
Pour utiliser la communication bidirectionnelle, on active le bit 5 du 3ème port (port de contrpole SPP). ce bit détermine la direction du flux de données. Un 0 configure le port en sortie, alors qu’un 1 configure le port en entrée

Ca semble donc assez simple. je vais essayer…

Bien cordialement. Jean-Marc

Bonjour.
Il me semble que les ports parallèles 100% bidirectionnels n’existaient pas au début du PC.
Ensuite au niveau du BIOS on pouvait choisir entre SPP et EPP standard ou extended parallel port.
Il me semble que extended affectait aussi un canal DMA.
Ca a servit surtout pour les lecteurs CDrom,Scanners,lecteurs ZIP avant le déploiement de l’USB.
Mon conseil est donc de regarder le BIOS.

Bonjour Ford Prefect,

J’ai regardé le BIOS, j’ai modifié les modes LPT, je n’arrive à rien sur AT. Il y a moins de possibilités à l’adresse LPT1 $03BC (mon programme) qu’à l’adresse $0378. Il faut que je modifie le programme (j’ai eu tort de ne pas mettre les adresses en constantes !) et que j’éssaie les 3 possbilités proposées dans le BIOS à l’adresse $0378…

Pour le moment, mettre 0 ou 1 au bit 5 du registre SPP (3ème registre) du LPT ne donne pas grand chose. Avant de conclure, il faut que je refasse quelques éssais…

Bien cordialement. Jean-Marc

Bonjour
Ne te serais-tu pas gouré d’interlocuteur ? :mrgreen:

Oui tout à fait ! j’ai rectifié !!!
Désolé…

RESOLU :

L’info d’Internet était correct :
Le fil 17 du port Parallèle (Select In inversé) est bien positionné en sortie par défaut.
Il faut positionner le bit 5 du registre SPP à 1 pour que ce fil 17 soit positionné en entrée.

J’ai rajouté la ligne (en turbo pascal) avant la boucle de lecture du DS1620 via le fil 17 :

PORT[$03BE]:= 16; {port parallèle en lecture}

Et ça marche !!! Prochaine étape : je mets mes adresses de port parallèle en constante pour les changer facilement !
Merci à tous. Bien cordialement. Jean-Marc