I2C Konflikt mit MPU-6050 und RTC DS1307

Fraser-Island:
Danke HotSystems für deine Hilfe.
Leider besteht das Problem weiterhin :frowning:

Hast du die I2C-Adressen überprüft bzw. geändert?

Ändere doch mal die Adresse vom MPU.
Da wird hier:

void loop(){
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  
  Wire.endTransmission(false);

eine falsche Adresse eingesetzt.
Wenn ich das richtig versteh, wird der MPU mit einem Adressbereich angesprochen, der auch von der RTC genutzt wird.

Wenn ich das richtig versteh, wird der MPU mit einem Adressbereich angesprochen, der auch von der RTC genutzt wird.

RTC 0x68
MPU 0x69 (A0 verbunden)
Sollte also OK sein.

Beachte, dass Wire.endTransmission(XXX); seinen Erfolg meldet.
Wenn der Wire.endTransmission(false); fehlschlägt, muss man keinen Wire.requestFrom(MPU,14,true); mehr hinterher schieben.

Das LCD wurde bisher verschwiegen.....
Taucht einfach mal so im Code auf.....
Naja...

Vermutung:
Vielleicht sind da jetzt 4 mal die Pullups montiert.
Das gilt es zu prüfen!

Nur was passiert hier:

Wire.beginTransmission(MPU);
  Wire.write(0x3B);  
  Wire.endTransmission(false);
 
  Wire.requestFrom(MPU,14,true);  
{
  AcX=Wire.read()<<8|Wire.read();  //0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  //0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  //0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  //0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  //0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  //0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  //0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

Da nutzt er doch einen anderenI2C-Bereich, oder liege ich da total falsch. Ich kenne den MPU nicht.

Aber dass mit den Pullups ist auch eine gute Idee, dass sollte auch geprüft werden.

Wire.beginTransmission(MPU);

Da wird Adresse 0x69 genutzt!

Wire.requestFrom(MPU,14,true);

Und hier auch.

Fraser-Island:
Ja mein Programm kann die RTC lesen, aber nach Verlust der Spannungsversorgung nur noch die RTC und das Gyroskop nichtmehr.

Liebe Experten, ich habe von alledem keine Ahnung, bin aber über den zitierten Satz gestolpert. Für mich ergibt sich folgendes Bild: Bis zum Verlust der Spannungsversorgung funktioniert der Sketch, ist also grundsätzlich funktionabel. Was passiert nun beim Verlust der Spannungsversorgung? Die RTC hat eine Batterie, der Prozessor bekommt ein Reset. Wie verhalten sich die anderen Bauteile? Fehlt möglicherweise ein gemeinsamer Reset?

Nehmt es bitte als Denkanstoß :slight_smile: