PORT PARALLÈLE / BUS I2C AVEC PCF8574A, 24C32, PCF8591 ET PCF8583.

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 28 mars 2006 à 10:32
djsmoye Messages postés 1 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 12 octobre 2011 - 12 oct. 2011 à 17:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36774-port-parallele-bus-i2c-avec-pcf8574a-24c32-pcf8591-et-pcf8583

djsmoye Messages postés 1 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 12 octobre 2011
12 oct. 2011 à 17:37
Bonjour à tous,

Je sais que je fais un peu de déterrage mais bon :-)

J'ai essayé ce schéma et c'est plutôt concluant mais la question que je me pose c'est est-ce que vu sa simplicité la stabilité est au rendez-vous? Je vois nombre d'interfaces lpt -> i2c et la plupart est à base de 74ls05 et autres alors du coup je me demande si ces quelques résistances font que ça fonctionne vraiment bien?
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
13 juin 2006 à 20:52
Super !!
Et merci a toi aussi...

A+
ryl...
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
13 juin 2006 à 14:46
Merci beaucoup pour ton aide rylryl, maintenant tout fonctionne.

J'ai remplacé le 31 par 63 et plus de pb.

La 512 fonctionne également et le tout est alimenté par la broche 16 du port parallèle.

Encore merci pour ton aide rylryl tu me sort une sacrée épine du pied. ;)
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
13 juin 2006 à 14:28
Autre chose, As tu fait le test avec un PCF8583 par ex pour voir si la ça se passe bien ?
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
13 juin 2006 à 14:22
Essai d'intercaler une tempo dans:

'////////////////////////////////////
'// Lire 8 bits sur le bus I2C
Private Function Recep_8_I2c() As Integer
Recep_8_I2c = 0
n = 128 ' Valeur 8'eme bit
Out (LPTx + 2), 31 ' SCL=0 ++ SDA en SORTIE
>>>> ici <<<<
Loop8Bits2: ' Passer au bit suivant (7..0)
Out (LPTx + 2), 62 ' SCL=1 ++ SDA en ENTREE
If (Inp(LPTx) And 1) 1 Then Recep_8_I2c Recep_8_I2c + n
Out (LPTx + 2), 63 ' SCL=0 ++ SDA en ENTREE
n = n / 2 ' Valeur du bit n-1
If n <> 0.5 Then GoTo Loop8Bits2 ' Si les 8 bits pas tous Reç recommencer
End Function

Ou alors change la ligne : "Out (LPTx + 2), 31" en "Out (LPTx + 2), 63" pour voir ce qu'il se passe...

Ton port parallèle est-il bien en mode bidir ??

Si je pouvais reproduire ton pb ça serai plus facile pour moi mais la !!

Il faudrait savoir si d'autres personnes ont ce pb...
A+
ryl...
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
13 juin 2006 à 14:06
J'ai testé avec une alim externe est j'ai le même pb...
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
13 juin 2006 à 12:59
Oui que ce soit avec la 512 ou la 64 j'ai le même pb concernant la lecture.

Pour ce qui est de l'alim j'ai auto-alimenté l'eeprom via la broche 16 du port parallèle. Penses tu que le pb vienne de la?

Pour la fonction recept_8_i2c, lorsque je l'execute pas à pas et que je dois lire une valeur superieur a 7F. Je constate effectivement que le pb vient de la puisque la fonction lit 8bits à "1".
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
13 juin 2006 à 12:53
Je n'ai pas pour l'instant fait le test sur une 512(j'en ai pas sous la main !).
Apparemment le 7bit ne passe pas correctement a la lecture, mais n'ayant pas le pb difficile pour moi de te répondre...
Je pense que le pb doit être dans (Private Function Recep_8_I2c() As Integer).
Utilise tu une alim externe ou le systeme est auto alimenté par le port parallèle?
Sur la 512 as tu le même phénomène (écriture ok, lecture pb) ?
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
13 juin 2006 à 10:55
En fait il y'a juste le pb lors de la lecture. Le prog arrive a écrire toute les valeurs de 0 à FF (0 à 255) mais il ne peux lire que les valeurs comprise entre 0 et 7F (0 à 128).
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
13 juin 2006 à 09:01
Je viens d'essayer avec une 64 et j'ai le meme problème. Pourtant j'utilise ta source sans modif.

As tu essayé de ton coté?
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
12 juin 2006 à 17:56
Oui j'ai bien adapté le code pour pouvoir lire et ecrire la 512 j'arrive d'ailleurs a la lire et a l'écrire complètement. Mais uniquement avec des valeurs comprise entre 0 et 7F au lieu de 0 et FF.
Je ne pense pas que cela vienne du fait que j'utilise une 512 mais dans le doute j'essaierai avec une 64 demain.
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
12 juin 2006 à 17:21
Bonjour SNAKE57,

Je n'ai pas de 512 pour tester mais,
As tu modifié L'adressage pour une 512 ?
As tu essayé avec une 32 ou 64 et as tu le même prob ?
Peut être mettre en place une tempo !
Je me procure une 512 au plus vite pour voir ça !!

A+
ryl...
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
12 juin 2006 à 15:58
Pour l'ecriture c'est pareil. Impossible d'écrire un nombre superieur a 7F. Et je vois pas d'ou peux venir le problème.
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
12 juin 2006 à 15:30
Bonjour rylryl,

Sa fait plusieurs jours que je m"amuse avec ton programme et une eeprom 24c512.
Mais je me suis rendu compte qu'il y'avait un problème. Lorsque j'écris sur l'eeprom avec un programmateur de pic des valeurs superieur a 7F et que je veux relire avec ton programme il m'indique FF au lieu de m'indiquer la bonne valeur.

Il est donc possible de lire uniquement des valeurs comprise entre 0 et 7F. Pour les valeurs allant de 80 a FF on lit FF.

Peut tu me dire si ce problème vient de chez moi ou non. merci.
doba17 Messages postés 3 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 4 juin 2006
4 juin 2006 à 15:07
si on veut mettre par exemple 2 images dans la feuille du form du vb et mettre une sur l autre pour que au cours du programmation sur vb on met l un des 2 qui sera visible
merci rylryl
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
4 juin 2006 à 15:03
Bonjour DOBA17,

????? Je ne pige pas le sens de ta question désolé !
A+
ryl...
doba17 Messages postés 3 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 4 juin 2006
4 juin 2006 à 14:53
avec le branchage du port parallele avec le pc comment on mettre des photos de piles pris par net dans la feuille du form du visaul basic
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
30 mai 2006 à 18:48
Bonjour Snake57,

LPTx correspond a l'adresse de base du port parallèle...
(En théorie $H378 pour LPT1 voir BIOS)
Ce qui donne accès au registre DATA(D0...D7) du port parallèle sera piloté.

LPTx+2 correspond au registre CONTROL du port parallèle(SCL)Broche N°1...

Donc LPTx+2 permet de contrôler "SCL" et passe "SDA" soit en ENTREE soit en SORTIE...

Voili...
A+
ryl...
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
30 mai 2006 à 16:32
Bonjour rylryl,

Moi aussi je suis stagiaire et je me suis servit de ton code.

Mais je ne comprends pas bien les lignes:

Out (LPTx), 1
Out (LPTx + 2), 30
Out (LPTx), 0
Out (LPTx + 2), 31

Pour le 30 et le 31 ok j'ai compris ce que tu as dis plus haut. Par contre ce qui me gène c'est le LPTx et le LPTx+2. Sa correspond a quoi? Et pourquoi met tu 1 et 0 avec LPTX alors que tu met 30 et 31 avec LPTx+2?
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
26 mai 2006 à 17:44
Bonjour Johnjohn12 et merci,


les valeurs 30 00(0)1111(0) > bit5=0, bit0=0 =>SCL=0 SDA=Sortie
31 00(0)1111(1) > bit5=0, bit0=1 =>SCL=1 SDA=Sortie
62 00(1)1111(0) > bit5=1, bit0=0 =>SCL=0 SDA=Entrée
63 00(1)1111(1) > bit5=1, bit0=1 =>SCL=1 SDA=Entrée

Ex: Pour 63 ça pourrait aussi être 33 = 00(1)0000(1).

Le bit5 permet de faire basculer D0...D7 pour l'exemple j'uilise la broche N°2(D0=SDA) en entrée(si bit5=1) ou en sortie(si bit5=0)...

Et le bit0 met a 5volt ou 0volt la broche N°1(SCL) de la DB25...

voili...
ryl...
johnjohn12 Messages postés 1 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 26 mai 2006
26 mai 2006 à 15:46
Salut a tous, je suis stagiaire dans une boite d'élec et je dois développer un soft en VB pour dialoguer avec des composants I2C. Je me suis grandement inspiré de ce code (grand merki). Par contre je ne dialogue pas avec les memes pattes du port //.(tu utilise les pattes 1 et 2). Ou est défini le numéro des pattes dans ton soft? Est ce l'instruction Out (LPTx + 2), 31. Est ce que 31 est l'adresse de la patte? Encore merci pour ce code
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
31 mars 2006 à 19:20
nan je n'ai pas d'infos la dessus , je cherche toujour...

Oui , je suis sur un lecteur MP3 (plutot un autoradio MP3) , PIC 18f8722 , celui est assez grand en memoire pour recevoir la configuration du STA est son programme.
Et je pourai metre a jour mon autoradio par une clef usb (dumoins si jy arrive).

J'utilise donc un HD de 40Go, mon protocole la dessus est bon , j'arrive a le lire et ecrire , la j'en suis a la naviguation dans les dossiers , mais j'ai quelques probleme justement de I2C pour la memoire vive, fo que je travail ca. car je me sert d'une 24C256 pour y stoquer mes infos utiles , mes preferences ...etc.... Au niveau memoire vive (audio) pour le stream mp3 , je me sert de la memoire du PIC , c'est pour ca , que j'ai choisi ce pic , je ne travaille pas avec des "vraies" memoires car la gestion du multiplexage et de l'adressage, c'est pas mon fort.
Apres une premiere version avec des modules (SIMM ou DIMM je ne sais plus , ce qu'il y avait dans les vieux 286) sans succés , j'ai changé de methode....


et Non , mon Pic n'a aucune interface USB , c'est trés c** , mais bon , si j'arrive a travailler l'USB par programme , c bon , c pas gagné , mais bon....

Je ne connais pas le Mode HID , si tu peut me renseigner. en fait moi , il faudrai le mode maitre , pas slave, c'est lui qui acceuilerai la clef pour la lire.

Mais bon la , je pense que tout ca n'a rien plus rien a voir dans ce forum, on peut en discuter par mail , pour ne pas gener ce code source.
admin@rogerstudio.com

@+
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
31 mars 2006 à 13:04
Aurais-tu l'intention de créer un lecteur MP3 ?
Je ne connais pas le 18F8722, pour l'USB j'utilise un 18F4550 mais uniquement en mode slave et en mode HID (Pas besoin de driver).
Le 18F8722 integre t-il le mode master USB ?
J'ai aussi travaillé un peu sur le protocole ATA/ATAPI toujours par le biais du port parallèle et 2x PPI8255 ... ainsi qu'avec un 16F877.

Je trouve que d'emuler tel ou tel protocole par une interface windows (VB..ou autre) facilite grandement la compréhension et le développement fini les programmations hard a la chaîne...

Si tu as des infos sur l'émulation du bus USB en mode maître ça m'interresse aussi mais je redoute la complexité d'un tel emulateur (beaucoup de contraintes !!)... merci.

A+
ryl...
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
31 mars 2006 à 11:51
et par pur hazard , quelqu'un connai le protocol de lecture d'une clef USB ? j'aimerai lire une clef depuis un PIC (18F8722) pour ecrire les donnée sur un disque dur (evidement sans PC)

Clef -> PIC -> Disque dur ?
sans driver sans rien , que avec des signaux numeriques ....

Merci.
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
31 mars 2006 à 11:47
Ok , je vais tester , sur une 24LC512 , je vais peut etre modifier un peu la source pour ecrire en mode page.

et je vais tester sur un STA013 (decodeur MP3 - phase de config) car avec un pic j'arrive pas a le configurer , si ca marche bien je te redis ca.
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
31 mars 2006 à 02:00
Bonjour Hackademius et merci !

Bonne remarque, et bonne conclusion ! effectivement il n'y a pas de tempo l'utilisation de la DLL pour la communication avec le port parallèle génère celle-ci(durée routines internes)...
Si vous rencontrez des problèmes a ce niveau il est bien sur très facile d'en insérer une.

Pour la mémoire je n'ai pas non plus mis de tempo pour la durée d'écriture pour les mêmes raisons...

PS: Je n'ai pas testé tous les types de CIs I2C a vous de me dire si a l'usage ... merci.

@+ ryl...
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
31 mars 2006 à 00:11
trés bonne source , mais je vois qu'il n'y a pas de tempos (pour l'I2c) , les transferts se font en rapport avec la vitesse du PC , ce n'est peut etre pas top ca ? , il me semble que certaines memoires i2c ou d'autres circuits i2c (STA par ex.) ne doivent pas depasser une certaine vitesse (ca doit etre 40Khz je crois, je ne sais plus exactement)

A moins que le port parallele soit d'origine bridé a une certaine frequence ?
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
29 mars 2006 à 02:43
Merci Nix pour cette précision, et bravo votre travail.

ryl...
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
29 mars 2006 à 00:29
ryl, désolé un admin a du désactiver la source pensant que c'était un doublon avec l'autre que tu as posté. Il arrive des fois qu'un post soit posté 2 fois en même temps.
Bref désolé, ta source est la bienvenue ;)
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
28 mars 2006 à 22:43
Merci de cet accueil !

ryl...
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
28 mars 2006 à 10:32
Un petit peu d'electronique, sympa.
Rejoignez-nous