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 : Jérémy
Configuration liaison I2C entre deux PICs !
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
J'ouvre un nouveau pour dissocier les différents sujets traités. en règle général j'ai l'habitude communiquer en I2C avec des composants qui possèdent déjà une adresse bien définie par le constructeur ( enfin pour moi). Mais alors, comment faire une liaison entre deux PICs ?
D'après mes lectures, le maitre n'a pas besoin d’être configuré car lui seul doit connaitre les adresses des esclaves . Les esclaves n'ont pas besoin de savoir son adresse. En effet soit le maitre va chercher les infos qui l'intéresse ( mis à la disposition par l'esclave), soit il envoie des infos aux esclaves .
La tache compliquée est donc de donner une adresse I2C à un PIC esclave . Y'a pas tant de sujet que ca, qui traite de cela sur la toile.
J'ai donc épluché la DS de mon PIC ( que vous trouverez aussi en haut de chaque posts ), il s'agit du PIC18F46K22 qui se trouve sur ma carte EasypicV7 qui jouera le rôle de l'esclave, et celui de mon écran un PIC18FJ qui jouera celui du maitre .
Sur le PICécran j'utilise le I2C2 pin RD5 et RD6 qui vous trouverez ici en page 37
Et sur le PICeasy ce sera l'I2C1 en broche RC3 et RC4 .
Les masses sont communes.
Je regarde donc du coté de la DS du PICeasy pour lui affecté uen adresse I2C . PIOUUUUUU !!!! chaud les marrons pour comprendre .
Pouvez vous infirmez ou confirmer ma reflexion .
Rendez-vous en page 260 de la DS
Je dois donc déclaré une adresse sur 7 bit ( pourquoi 7 plutot que 10 je sais pas), pour déclarer une adresse je dois lui dire qu'elle genre d'adresse il attend pour faire la comparaison :
Donc dans le SSP1CON1: je dois mettre les bit 3-0 à 0110 pour I2C slave mode 7 bit
Ensuite rendez-vous en page 265:
Je dois désigné l'adresse avec le registre : SSP1ADD oui je place les bit 7-1 à ma convenance ? le bit 0 est inutilisé .
Pensez vous qu'avec ca , je peux créer ma liaison ?
J'ouvre un nouveau pour dissocier les différents sujets traités. en règle général j'ai l'habitude communiquer en I2C avec des composants qui possèdent déjà une adresse bien définie par le constructeur ( enfin pour moi). Mais alors, comment faire une liaison entre deux PICs ?
D'après mes lectures, le maitre n'a pas besoin d’être configuré car lui seul doit connaitre les adresses des esclaves . Les esclaves n'ont pas besoin de savoir son adresse. En effet soit le maitre va chercher les infos qui l'intéresse ( mis à la disposition par l'esclave), soit il envoie des infos aux esclaves .
La tache compliquée est donc de donner une adresse I2C à un PIC esclave . Y'a pas tant de sujet que ca, qui traite de cela sur la toile.
J'ai donc épluché la DS de mon PIC ( que vous trouverez aussi en haut de chaque posts ), il s'agit du PIC18F46K22 qui se trouve sur ma carte EasypicV7 qui jouera le rôle de l'esclave, et celui de mon écran un PIC18FJ qui jouera celui du maitre .
Sur le PICécran j'utilise le I2C2 pin RD5 et RD6 qui vous trouverez ici en page 37
Et sur le PICeasy ce sera l'I2C1 en broche RC3 et RC4 .
Les masses sont communes.
Je regarde donc du coté de la DS du PICeasy pour lui affecté uen adresse I2C . PIOUUUUUU !!!! chaud les marrons pour comprendre .
Pouvez vous infirmez ou confirmer ma reflexion .
Rendez-vous en page 260 de la DS
Je dois donc déclaré une adresse sur 7 bit ( pourquoi 7 plutot que 10 je sais pas), pour déclarer une adresse je dois lui dire qu'elle genre d'adresse il attend pour faire la comparaison :
Donc dans le SSP1CON1: je dois mettre les bit 3-0 à 0110 pour I2C slave mode 7 bit
Ensuite rendez-vous en page 265:
Je dois désigné l'adresse avec le registre : SSP1ADD oui je place les bit 7-1 à ma convenance ? le bit 0 est inutilisé .
Pensez vous qu'avec ca , je peux créer ma liaison ?
Configuration liaison I2C entre deux PICs !
C'est toujours le maître qui parle le premier, dans ton cas c'est l'Easypic qui doit être le maître, puisqu'il est censé envoyer des ordres à la carte lcd.
Les adresses sont sur 7 bit, cela fait 128 esclaves max. Cela permet au maître d'envoyer en un seul octet (0baaaaaaac) une adresse d'esclave et une commande, c = 1 pour lire l'esclave, c = 0 pour lui envoyer des données.
Y aurait pas une librairie MikroC dans un coin qui fait tout le boulot i2c ?
Les adresses sont sur 7 bit, cela fait 128 esclaves max. Cela permet au maître d'envoyer en un seul octet (0baaaaaaac) une adresse d'esclave et une commande, c = 1 pour lire l'esclave, c = 0 pour lui envoyer des données.
Y aurait pas une librairie MikroC dans un coin qui fait tout le boulot i2c ?
Configuration liaison I2C entre deux PICs !
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
C'est toujours le maître qui parle le premier, dans ton cas c'est l'Easypic qui doit être le maître, puisqu'il est censé envoyer des ordres à la carte lcd.
Dans la réalité, je ne sais pas encore qui sera le maitre ou non . Pour l'entrainement et pour des raisons de simplicité j'ai opté pour mettre celui ci en esclave et l'écran en maitre, car c'est en appuyant sur l’écran que l'on envoie une info .
Ok pour les 7 bits. Merci.
Oui il existe une librairie MikroC toute faite , mais c'est dans la plupart du temps dialoger avec un accessoire. Y'a pas grand chose a s'occuper dans ce cas ; l'adresse d'envoi et la donnée . Mais la ca se corse, car je dois envoyer une valeur, puis la recevoir la stcokée et l'affcihée .
Je pense que je dois faire un peu comme la liasion serie en UART non ?
A savoir detecté par INT un envoi et stockée la valeur recue dans un tableau .
Configuration liaison I2C entre deux PICs !
Si la librairie MikroC ne prévoie pas le mode slave, il faut le gérer en bas niveau, et je trouve toujours que c'est plus compliqué que l'UART. L'i2c, c'est fait pour piloter des périphériques, pourquoi tu veux compliquer les choses.
Les modules bluetooth, esp8266, ... utilisent l'UART/RS232 (50 ans d'existence) car c'est le plus pratique pour communiquer à la fois en host to host, ou host to device, et surtout full duplex.
Les modules bluetooth, esp8266, ... utilisent l'UART/RS232 (50 ans d'existence) car c'est le plus pratique pour communiquer à la fois en host to host, ou host to device, et surtout full duplex.
Configuration liaison I2C entre deux PICs !
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
pourquoi tu veux compliquer les choses.
Je ne sais pas trop regarde mon Organigramme , je ne sais pas quoi faire comme liaison ?
Il se peut qu'il y ai d'autre équipements a raccordés, avec l'I2C c'est plus pratique non ? mais je suis ouvert a toutes propositions ( concernant la comm hein ??!! ).
Configuration liaison I2C entre deux PICs !
Ton pic a 2 ports série I2C et 2 ports série SPI. 1 seul port I2C et un seul port SPI sont utilisables car ils partagent leurs pins.
Ton pic a 2 ports série UART, les 2 sont utilisables, et ils ne figurent pas clairement dans ton schéma, alors ...
fallait bien lire
Ton pic a 2 ports série UART, les 2 sont utilisables, et ils ne figurent pas clairement dans ton schéma, alors ...
Tu as tout de même 2 ports série sur ton pic qui glandouillent, C6/C7 et G1/G2. Un port série ça peut allez très vite si les 2 horloges sont précises.
Attention de pas relier 2 pins configurées en output, griller un pic c'est pas trop grave, une carte à 100$ c'est plus embêtant.
fallait bien lire
Configuration liaison I2C entre deux PICs !
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bon ca veut pas !!!
Voici la partie émission . je vous passe les détails, qui je pense ne sont pas nécessaire . j'ai créer un Bouton sur mon écran . Quand j'appuie dessus , cette fonction est lancée .
Sur l'écran je me suis connecté aux broches RD6 et RD7 correspondant a l'I2C N°2.
J'arrive sur les broches RC3 et RC4 de mon PIC18F46K22 qui correspondent a l'I2C N°1 . j'ai la présence des pull up à Vcc sur les lignes.
Mon text témoin s'affiche bien, me démontrant que ma fonction est bien lancée . et il s'efface également , je sais ainsi que ma fonction à bien été exécutée .
Voici la partie émission . je vous passe les détails, qui je pense ne sont pas nécessaire . j'ai créer un Bouton sur mon écran . Quand j'appuie dessus , cette fonction est lancée .
Sur l'écran je me suis connecté aux broches RD6 et RD7 correspondant a l'I2C N°2.
J'arrive sur les broches RC3 et RC4 de mon PIC18F46K22 qui correspondent a l'I2C N°1 . j'ai la présence des pull up à Vcc sur les lignes.
Code : Tout sélectionner
void Tx_I2C_OnClick() {
TFT_Set_Font(TFT_defaultFont, CL_YELLOW, FO_HORIZONTAL);
TFT_Write_Text("TX_I2C", 130, 45); // On ecrit un mot sur l'écran pour verifier l'execution de la fonction
I2C2_Init(100000);
delay_ms(100);
I2C2_Start(); // départ de l'I2C
I2C2_Wr(0x78); // adresse de l'esclave
I2C2_Wr('A'); // Donnée à écrire
I2C2_Wr(0x0D);
I2C2_Stop(); // Arret de l'I2C
delay_ms(500);
TFT_Set_Brush(1, CL_BLACK, 0, LEFT_TO_RIGHT, CL_BLACK, CL_WHITE); // On efface le texte par un rectangle noir
TFT_Rectangle(130,48, 200,60);
}
Mon text témoin s'affiche bien, me démontrant que ma fonction est bien lancée . et il s'efface également , je sais ainsi que ma fonction à bien été exécutée .
Configuration liaison I2C entre deux PICs !
Configuration liaison I2C entre deux PICs !
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour,
Oui le second PIC se trouve au même endroit a savoir sur la télécommande . Je précise que j'ai déjà fabriquer un drône de ce type mais avec des picaxes ( je salue les personnes du forum au passage).
Le pic 18FJ ne s'occupe que des données peu importantes, je souhaite avoir un PIC dédié a la transmission de données, pour etre le )lus rapide possible et gérer au mieux .
J'avais rencontrés des problèmes d’interruption et de détection de perte de communication. La priorité N°1 c'est d'envoyer les infos du pilotage ( notamment l’arrêt du moteur).
Oui le second PIC se trouve au même endroit a savoir sur la télécommande . Je précise que j'ai déjà fabriquer un drône de ce type mais avec des picaxes ( je salue les personnes du forum au passage).
Le pic 18FJ ne s'occupe que des données peu importantes, je souhaite avoir un PIC dédié a la transmission de données, pour etre le )lus rapide possible et gérer au mieux .
J'avais rencontrés des problèmes d’interruption et de détection de perte de communication. La priorité N°1 c'est d'envoyer les infos du pilotage ( notamment l’arrêt du moteur).
Configuration liaison I2C entre deux PICs !
Qui est en ligne
Utilisateurs parcourant ce forum : paulfjujo et 96 invités