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 ---
- 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 ---
Modérateur : Gérard
Communication entre deux PICs en I²C
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....
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
Communication entre deux PICs en I²C
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....
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
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.
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
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.
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
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.
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
Expert- Messages : 1725
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
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.
Merci Satinas d'avoir relevé l'erreur.
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.
Merci Satinas d'avoir relevé l'erreur.
Communication entre deux PICs en I²C
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
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
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités