i2C mit 2 Modulen

Gegeben sind: - Arduino Mega 2560 - Uhr (tinyRTC V1.1) - MPU 6050

Ich möchte beide gleichzeitig betreiben. Lass ich den I2Cscan laufen und habe nur die Uhr angeschlossen, werden mir die Adressen 0x50 und 0x68 angezeigt.

Habe ich nur den MPU 6050 angeschlossen wird mir die Adresse 0x68 angezeigt. Die Adresse am MPU 6050 kann ich jedoch durch anlegen von 3,3 V auf ADO auf die Adresse 0x69 switchen. Also switche ich.

Schließe ich dann beide an, erhalten ich 0x50 und 0x68 angezeigt. 0x69 wird aber nicht angezeigt!

Frage ich Daten dann Bus ab, halte ich Daten des MPU 6050.

Was mache ich falsch?

Die zweite Aderesse auf der RTC ist ein EEPROM (Zweites 8-poliges IC)

Wenn Du die Adresse des MPU6050 auf 0x69 gestellt hast, müßte es funktionieren. Wie lange sind die Kabel zwiscen den Modulen und Arduino bzw hast Du von Arduino Kabel zu beiden gezogen oder sind die beiden Module hintereinender geschaltet?

Welche Werte haben die Pullupwiderstände auf den SCL bzw SDA Leitungen des I2C? Versuch mal jeweils einen 2,2KOhm Widerstand dazuzuschalten.

Grüße Uwe

Das der RTC noch eine zweite Adresse hat, hatte ich schon mitbekommen :-)

Ich habe die Adresse des MPU 6050 auf 0x69 gestellt, aber es funzt nicht. Der I2C-Scanner müsste jetzt doch 3 Adressen anzeigen. 0x50, 0x68 und 0x69. Er zeigt nur 2 Adressen 0x50 und 0x69 an.

Vom MEGA gehe ich mit 2 kurzen Kabeln (ca. 5 cm) aufs Board. Dort mit 2 weiteren Kabeln (ca. 5cm) an den RTC bzw. mit 2 ca. 15 cm langen Kabeln an den MPU. Die Module sind somit paralell geschaltet.

Externe PullUps habe ich nicht verwendet. :o Wie soll ich die Widerstände dazuschalten ?

Ich nehme 4.7k an +5V. I2C ist ein Bus, der aktiv auf GND schaltet. Die +5V kommen von den PullUp-Widerständen. Ohne geht es daher nicht, irgendwo müssen welche sein.

agmue: Ich nehme 4.7k an +5V. I2C ist ein Bus, der aktiv auf GND schaltet. Die +5V kommen von den PullUp-Widerständen. Ohne geht es daher nicht, irgendwo müssen welche sein.

Die sind schon irgendwo; Die internen Pullup-Widerstände werden als Pullups für I2C verwendet. Da diese zwischen 20 und 50 kOhm betragen sind sie etwas hoch. Für 1 I2C Device an kurzen Kabel kann es funktionieren.

Grüße Uwe

Ich habe einen UNO, der braucht die 4,7k. Jetzt wird mir bewußt, wir reden hier aber von einem Mega 2560, der 10 k als PullUp auf der Platine verlötet hat (Uwe: im Schaltplan Mitte oben). Wenn 2.2k oder 4,7k zusätzlich auf dem Steckbrett gegen 5V nicht helfen, liegt es woanders dran.

agmue: Ich habe einen UNO, der braucht die 4,7k. Jetzt wird mir bewußt, wir reden hier aber von einem Mega 2560, der 10 k als PullUp auf der Platine verlötet hat (Uwe: im Schaltplan Mitte oben). Wenn 2.2k oder 4,7k zusätzlich auf dem Steckbrett gegen 5V nicht helfen, liegt es woanders dran.

Du hast Recht, der Arduino MEGA 2560 hat bereits 10kOhm Pullupwiderstände an SDA und SCL. Aber 2 zusätzliche Widerstände schaden nicht. Wenn zusätzliche nicht helfen, dann hast Du recht, ist es etwas anderes.

Grüße Uwe

Perfekt !!! Danke :) Zwei 2.2k Widerstände haben es gebracht.

Danke für die Rückmeldung. Nun weiß ich, daß ich bei meinem Mega, der sich noch auf dem Postweg befindet, gleich zwei zusätzliche Widerstände vorsehe. Ich werde Uhr und SD-Karte anschließen.

Ein 10 µF Kondensator auf dem Steckbrett zur Spannungsstabilisierung gehört für mich auch noch dazu.