Für ein Projekt habe ich folgende Bauteile zu verbinden:
1x Uno oder Nano als Master
-Mehrere Nano/Attiny am Master über I2C als Slave
1 Nextion Display zur Anzeige und visuelle Steuerung der einzelnen Slave über den Master. Anschluß über RX/TX am Master (Alternativ D2/D3 über SoftwareSerial)
Er funktioniert soweit die Kommunikation Master zu Nextion. Jedoch sobald ich die Widerstände (1MOhm) der SDA und SDL am Master auf Masse gezogen habe. Hängt sich der Master auf. Ohne Widerstände geht alles.
Weil Widerstände für eine stabile I2C Verbindung empfohlen wird. Gerade, wenn ich viele Slaves an den Master hänge. Zumindest habe ich das in vielen Beispielen gesehen....
Die Widerstände sind direkt an der Versorgungsspannung (-) an den SCL und SDA. Bisher kam ich mit dem 1M gut zu Recht. (1 Master+1 Slave zum Testen) Aktuell hängt kein Slave dran, weil ich erstmal Stabil die Kommunikation Master/Nextion sicherstellen wollte.
Allerdings gebe ich dir Recht. Ich habe auch 4M und 10M bereit liegen falls das bei der Summe an Slave nicht reicht.
Ein schönes Bild wie die Pullups an die I2C-Leitungen angeschlossen werden, habe ich hier gefunden.
Auch bei Adafruit findet sich ein Bild und die Erklärung dazu.
Wenn schon dann auf + (VCC, 5V)und nicht auf GND, Und als Pull UP sind 4M auch zu viell 4K sollen reichen wen die Dinger nicht weiter als 20cm Ligen, I²C ist ein "Kurzstrecken " Bus, nur als Info damit du nicht versuchst lange Strecken bauen.
Ich habe dir (bzw. @Kai-R) nicht widersprochen, dass 1M zu viel ist.
Ich möchte jetzt und hier auch weder ausprobieren noch wetten, ob man in einem praktischen Test tatsächlich überhaupt keinen Unterschied zwischen 1M und gar kein Pullup merkt.
Erstmal ist es "hier" ein Pulldown und kein Pullup.
Aber davon mal abgesehen....
Bei einem Mega wird/kann ein I2C Bus mit 1M externem Pullup sogar funktionieren, bzw. wird der R weder stören, noch groß helfen.
Aber bei einem Nano und vielen weiteren, ist er nicht ausreichend klein genug.