Go Down

Topic: Probléme fonctionnement I2C avec deux modules (Read 2610 times) previous topic - next topic

Arioch

Bonjour à vous, j'ai quelques petit soucis pour faire marcher deux modules I2c sur les broches SDA et SCL de l'arduino UNO.
Le premier module est le SD player d'ELM-CHAN convertie par ELO-WEB pour marcher en I2C.
Le seconde est le LCD 1602 i2C.

J'ai l'adresse des deux modules, et les deux modules fonctionnent parfaitement séparement, cependant en les branchant tous les deux en méme temps, en ayant branché un résistance entre la broche SDA et le 5 V et fait de méme pour le SCL, la lecture du son sur le SD player ne dure que 1 seconde puis se coupe....

Voila le bout de code que j'utilise:
Code: [Select]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADD 0x55 // adresse du SD player
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
 Wire.begin();
 
 lcd.init();                      // initialize the lcd
 // Print a message to the LCD.
 lcd.backlight();
 //lcd.setCursor(0, 1);
 lcd.print("Hello, world!");
}

void loop()
{

 Wire.beginTransmission(I2C_ADD);
 Wire.send(1);// envoit au SD player la commande la lecture du morceau 1
 Wire.endTransmission();
}


J'ai essayé pas mal de modification sans succés, et je suis tombé sur un poste qui parlait d'un convertisseur de niveaux logique pour les modules I2C alimenté en 3V, ce qui est le cas pour le SD player, mais qui n'est pas le cas pour le LCD 1602 qui lui demande une tension de 5V.

Donc faut t'il que je passe par ce type de circuit pour que les deux module I2C alimenté avec une tension différente cohabite sans se perturber, ou c'est mon code qui n'est pas bon et qui ne définit pas les bon maitre et esclave?

Vous remerciant par avance de vos réponses.



Artouste

#1
Dec 28, 2011, 05:11 pm Last Edit: Dec 28, 2011, 05:19 pm by Artouste Reason: 1

Bonjour à vous, j'ai quelques petit soucis pour faire marcher deux modules I2c sur les broches SDA et SCL de l'arduino UNO.
Le premier module est le SD player d'ELM-CHAN convertie par ELO-WEB pour marcher en I2C.
Le seconde est le LCD 1602 i2C.

J'ai l'adresse des deux modules, et les deux modules fonctionnent parfaitement séparement, cependant en les branchant tous les deux en méme temps, en ayant branché un résistance entre la broche SDA et le 5 V et fait de méme pour le SCL, la lecture du son sur le SD player ne dure que 1 seconde puis se coupe....



bonjour
a chaud
je ne connais pas ces modules, mais peut être embarquent t'ils (ou l'un d'eux) dejà des R de pull-up ?
l'addition des R de pull up en // est peut être là la cause
tester la R des modules deconnectés entre SDA SCL et +
tenter les 2 modules sans les pull-up rajoutées .

voir peut etre aussi  comment se fait la libération du bus I2c

Arioch

Salut Artouste, pas de pull up pour le LCD 1602, et il n'y a pas non plus de pull up pour le SD player.

Pour la libération du bus I2C je pense que la librairie LiquidCrystal_I2C doit bien gérer la libération du bus I2C, donc ça doit provenir du SD player et sa libération du bus I2C.....
Donc faut que je potasse le code du SD player, et trouver comment se fait la libération du bus I2C.

La réponse setrouve quelquepart la dedans  :smiley-sad-blue: Boarf ça va étre tendu du string tout ça ^^

Donc question comment je fais pour savoir comment est faite la libération du bus I2C dans le code donné en lien ci-dessus prévu pour un ATtiny85?


skywodd

Bonjour,


J'ai l'adresse des deux modules, et les deux modules fonctionnent parfaitement séparement, cependant en les branchant tous les deux en méme temps, en ayant branché un résistance entre la broche SDA et le 5 V et fait de méme pour le SCL, la lecture du son sur le SD player ne dure que 1 seconde puis se coupe....

Petit rappel, le ELM-Player utilise les même broches pour le bus i2c et spi, donc avec les résistances de pull-up l'i2c fonctionne mais dés que l'attiny utilise ces deux même broches pour communiquer avec la carte sd en spi ça fait tous planté (tirage à 5v en plus -> c'est trés mauvaise pour la carte SD !!).

Seul solution : SoftI2CMaster (http://todbot.com/blog/2010/09/25/softi2cmaster-add-i2c-to-any-arduino-pins/) pour utiliser deux broche digital comme un pseudo bus i2c (sur lequel ne se trouvera pas de résistance de pull-up) et Wire.h pour le lcd.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

schizophrene


Petit rappel, le ELM-Player utilise les même broches pour le bus i2c et spi


Petite question: tu parles des broches analogiques 4 et 5? Parce que je cherche une solution pour faire fonctionner mes TLC5940 (SPI) avec la BlackWidow 1.0 (module WIFI SPI)...

skywodd


Petite question: tu parles des broches analogiques 4 et 5? Parce que je cherche une solution pour faire fonctionner mes TLC5940 (SPI) avec la BlackWidow 1.0 (module WIFI SPI)...

Le "ELM-Player" utilise un ATtiny85, donc rien à voir avec arduino ;)
T'as regardé shiftOut() ? Si c'est du vrai SPI ça devrait marcher.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Arioch

Salut Skywood, et merci pour le rappel du balancement du SD player de l'I2C vers le SPI, j'vais pas pensé que c'était peut étre ça qui bloqué...


Petit rappel, le ELM-Player utilise les même broches pour le bus i2c et spi, donc avec les résistances de pull-up l'i2c fonctionne mais dés que l'attiny utilise ces deux même broches pour communiquer avec la carte sd en spi ça fait tous planté(tirage à 5v en plus -> c'est trés mauvaise pour la carte SD !!).


Et ça doit pas étre que mauvais pour la SD, car en ayant mis le petit bout de code au début d'une loop pour gérer un menu avec un pad NES et un LCD 20x4; ça bloque complétement la loop, l'arduino doit pas aimer le passage de l'I2C vers le SPI.

Je te remercie pour la lib SoftI2CMaster, je m'y met de suite :) , il me reste pile deux pin de libre.

skywodd


Et ça doit pas étre que mauvais pour la SD, car en ayant mis le petit bout de code au début d'une loop pour gérer un menu avec un pad NES et un LCD 20x4; ça bloque complétement la loop, l'arduino doit pas aimer le passage de l'I2C vers le SPI.

L'arduino encore lui matériellement il peut résister, mais les carte sd sont (souvent) alimenté en 3v3 donc elle par contre elles aiment pas trop le 5v.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Arioch

Re, bon ben ça marche pas, le SD player ne réagit pas du tout à la librairie SoftI2Cmaster, peut étre que je la manipule mal...je sais pas.

Quoi qu'il en soit je commande un convertisseur de signaux logique pour voir si ça résout le soucis, pour le moment je passe à autre chose en attendant le fameux convertisseur.

Je reviendrais vers vous pour vous dire si ça fonctionne mieux avec.

A+

Go Up