(Résolu) Pb Bus I2C sur Arduino Due

Bonjour, je rencontre des difficultés à faire cohabiter sur ma carte DUE, plusieurs périphériques i2c ensemble:

  • 1 module RTC DS3231 (add: 0x68)
  • 1 Eeprom at24c32 (du module RTC ) (add: 0x57)
  • 1 Attiny 85 (1Mhz) (add: 0x33)

J'utilise la librairie <DS3231.h> pour le module RTC

Communication entre DUE et le module RTC seul (avec EEprom) : Ok ça fonctionne

Communication entre DUE et l'Attiny 85 (1Mhz) : Ok ça fonctionne

Lorsque je branche l'ensemble le module RTC et l'eeprom communique mais aucune réponse de l'attiny 85, et ma carte DUE plante au bout de 30 secondes ( parfois - ... )

Je précise que tout fonctionné convenablement avant sur une carte Arduino MEGA 2560....

L'ensemble est alimenté en 3,3 V et branché sur le bus SDA SCL aux broches 20-21 de la carte DUE

Le rapport de MultiSpeedI2CScanner.ino (effectué sur la carte DUE):
TIME DEC HEX 50 100 200 250 400 500 800 [KHz]

6921 0 0x00 V V V V . . .
6989 51 0x33 V V V V . . .
7022 87 0x57 V V V V V V V
7035 104 0x68 V V V V V V V

4 devices found in 134 milliseconds.

Arduino I2C Scanner - 0.1.06

J'en déduit donc un pb de timing...

j'ai donc ajouté dans mon code :
dans les déclarations:

#define TWI_FREQ 100000L

et après wire.begin:
Wire.setClock(100000);

Mais toujours le même résultat... :confused:

problème résolu, c'est la librairie <DS3231.h> en cause! :frowning:

J'ai retiré la librairie et fait à l'ancienne:

void getDS3231(){
  Wire.beginTransmission(DS3231_ADDRESS);
  Wire.write((byte)0x00); 
  Wire.endTransmission();
  
  Wire.requestFrom(DS3231_ADDRESS, 8);
   seconde = bcd2bin(Wire.read());
   minute = bcd2bin(Wire.read());
   
  uint8_t hrreg = Wire.read();
  heure = bcd2bin((hrreg & ~0b11000000)); //Ignore 24 Hour bit

  jour_semaine wd =  Wire.read();
  jour = bcd2bin(Wire.read());
  mois = bcd2bin(Wire.read());
  annee= bcd2bin(Wire.read()) + 2000;
}

Et j'ai également dégage :

#define TWI_FREQ 100000L et Wire.setClock(100000);

Et là miracle ça fonctionne !!! :smiley:

Cette libraire que j'ai trouvé sur http://www.rinkydinkelectronics.com est déclarè compatible avec DUE .... mais dans quelles conditions??? :smiling_imp:

Ça dégoute de passé toute une aprem et soirée pour une connerie pareille !!!

Bonsoir,

Si cela peut te rassurer, je travaille aussi sur DUE et j'ai modifier plusieurs LIB pour que ça fonctionne (ou pas).
Que ce soit sur I2C ou SPI.
Par exemple faire cohabiter en SPI, la lib 'FatLib'pour SD, la RTC DS3234 et Ethernet.
Mais il ne faut être trop exigeant, créer des librairies qui fonctionne parfaitement et sur toutes les plateformes, c'est pas facile. De plus ça nous fait progresser et puis c'est gratuit.

Bonne continuation.

Roger.