Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général en BASIC et PASCAL !

Modérateur : Gérard

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#11 Message par Serge » mar. 18 sept. 2018 09:13

Jérémy,
tu dis:
Quand on créer un nouveau post , un champ est créer pour accueillir le lien de votre DS . Il se trouve sous le titre du sujet.
- En rouge il vous faudra rentrer votre lien dans le bon format ( en copiant/collant).
- En vert le Bouton vous permettant de trouver facilement votre DS.
Image

J'avais bien compris cette demande pour mettre le DS "quelquepart", mais je n'ai pas trouvé de fenêtre particulière sous le titre du post...
et c'est la raison qui me fait le mettre dans la com...

Je ne comprends pas vite les choses, mais quand j'ai compris, j'ai compris !
Juste un peu de patience....

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#12 Message par Serge » mar. 18 sept. 2018 11:24

Bonjour PSPIC.

Merci d'avoir répondu.

Pour des raisons de sécurité de commande, je préfère la solution câblée dans un premier temps.
Mais si je n'aboutis pas, je pense que j'essayerai cette solution.

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#13 Message par Serge » mar. 18 sept. 2018 14:11

Bonjour Gérard,

Merci pour ta réponse.
Au début je ne programmais qu'en assembleur, mais très vite j'ai été dépassé par le temps, et surtout par le débogage qui est difficile à synthétiser quand le programme est trop compliqué... je perdais la vue d'ensemble logique....
Du coup je me suis mis au Basic, mais, je n'arrive toujours pas à faire fonctionner l'insitu avec Microcode Studio.
Un jour viendra.....peut-être.
Pour l'instant j'essaye de déboguer avec mes neurones, mais j'en ai plus beaucoup....C'est long....

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#14 Message par Serge » lun. 24 sept. 2018 14:24

Bonjour.

Ce qui me manque pour l'instant comme information, c'est comment envoyer le bit W/R derrière l'adresse.
Doit-on envoyer par exemple $20 et ensuite $0 ou envoyer $40 pour un Write ?
est-ce que quelqu'un sait comment on adresse SSPADD sur 7 bits ou 8 bits incluant le W/R ?
Je ne trouve pas cette information.

Communication entre deux PICs en I²C
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#15 Message par satinas » mer. 26 sept. 2018 22:55

Bonjour Serge,

Avec l'i2c, on a des adresses de slave paires, ce qui permet d'envoyer dans un même octet, l'adresse du slave et la commande read(1) ou write(0). Donc si ton adresse de slave est $66, le master envoie la commande $66 pour envoyer des données au slave, ou $67 pour recevoir des données du slave.

Pour transmettre 2 octets au slave d'adresse $66, le master fait :
Start
Write $66 (si le slave reconnaît son adresse, il met le 9ème bit à 0 pour signaler sa présence)
-> s'il y eu aquittement le master continue, sinon il relâche le bus par Stop
Write octet1 (le slave acquitte par 0 en 9ème bit)
Write octet2 (le slave acquitte par 0 en 9ème bit)
Stop

Pour recevoir 2 octets du slave d'adresse $66, le master fait :
Start
Write $67 (si le slave reconnaît son adresse, il met le 9ème bit à 0 pour signaler sa présence)
-> s'il y eu aquittement le master continue, sinon il relâche le bus par Stop
Read octet1 (le master acquitte par 0 en 9ème bit)
Read octet2 (le master acquitte par 0 ou 1 en 9ème bit)
Stop

Dans le SSPADD du slave, il faut mettre $66 dans le cas de l'exemple précédent.
J'avais déjà fait des essais de trandfert i2c, mais en mode bit banging, ce qui n'est pas forcément plus difficile que d'utiliser le module I2c du pic, assez difficile à maîtriser à mon avis.

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#16 Message par Serge » jeu. 27 sept. 2018 11:11

Bonjour Satinas.
Et merci pour ta réponse.

En fait, je crois comprendre que l'adresse ne s'écrit pas sur les poids forts, mais sur les poids faibles de l'Octet ?
Car si j'écris sur 7 bits l'adresse $20 cela donne "0100000"
si j'ajoute le bit W/R, cela donne "01000000", cela donne $40 !
Hors, tu me dis que le bit W/R n'incrémente que de "1" la valeur de l'adresse. Donc si je comprend bien, le huitième bit ne décale pas les 7 bits d'adresse.?
Effectivement, il s'agit bien d'une valeur paire ou impaire de l'adresse.
Merci pour cette explication, je vais donc poursuivre mes essais et donner mes résultats.

Un grand merci.

Communication entre deux PICs en I²C
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#17 Message par Gérard » jeu. 27 sept. 2018 11:39

Bonjour,
Le 1er octet est toujours sur 8 bit avec l'adresse du composant sélectionné sur 7 bit et le bit de poids faible dit s'il y a lecture ou écriture.
Regarde ici en page 9 la figure 5-1, c'est l'adresse d'une EEPROM : 1010 puis 3 bit d'adresse hard (ça permet d'avoir 8 composants identiques sur le bus) puis le bit R/W

EDIT : rectification, c'est le bit de poids faible qui est le bit R/W. C'est corrigé ci-dessus. :oops:
Merci Satinas d'avoir relevé l'erreur.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Communication entre deux PICs en I²C
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#18 Message par satinas » jeu. 27 sept. 2018 11:59

Bonjour
Gérard, le bit W/R est le bit de poids faible (8ème bit envoyé).

Serge, ton adresse slave effective est sur 7 bits '.0100000' ($20)
En i2c on la décale d'un bit à gauche pour ajouter la commande W/R dans le bit de poids faible ainsi libéré.
On envoie donc un premier octet :
soit '01000000' ($40) pour écrire le slave
soit '01000001' ($41) pour lire le slave
Le slave a son SSPADD = $40

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#19 Message par Serge » jeu. 27 sept. 2018 13:11

Si je ne me trompe donc:
Pour une adresse d'un composant comme $20 (ex: afficheur i2c courant) je dois adresser l'Octet $40 pour un Write ou 41 pour un Read ?
l'adresse réelle étant décalée sur le poid fort de SSPADD (8 bits) devient $40 ?

Communication entre deux PICs en I²C
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#20 Message par Serge » jeu. 27 sept. 2018 13:19

Mais l'adresse réelle du Slave, elle, elle est bien à $20 dans le pic SSPADD ?


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 invités