Zitat Zitat von Moppi Beitrag anzeigen
Normal werden da offene Kollektoren verwendet, deswegen der Widerstand gegen eine positive Spannung.
Der Open-Collector bzw. Open-Drain Ausgang gehört zum Konzept des I2C Busses. Sowohl SCL als auch SDA können von jedem Gerät am Bus angesteuert werden und das ist über OC Treiber gelöst. Die I2C Leitungen sind immer OC. Damit eine Leitung High werden kann, muß an jeder Leitung ein Pullup sein.
Zitat Zitat von Moppi Beitrag anzeigen
Dafür gibt es dieses Bild für die Beschaltung:
[/COLOR]Klicke auf die Grafik für eine größere Ansicht

Name:	82715min.jpg
Hits:	6
Größe:	35,3 KB
ID:	34554
Da brauchst Du die beiden Pull-UPs an den Treiber-Ausgängen.
Dieses Bild ist missverständlich. Natürlich müssen sowohl links als auch rechts an SDA/SCL ebenfalls Pullups sein. Diese müssen nicht unbedingt sichtbar sein, es können auch interne Pullups z.B. in einem µC sein. Verhalten sich die verschiedenen Atmegas da gleich?

Zitat Zitat von Moppi Beitrag anzeigen
Der 100k-Pull-UP ist also offenbar nur zuschaltbar, wenn ein Port des MCP23017 als Input konfiguriert wird. Je nach Leitung (-länge) können 100k aber zu viel sein. So dass Du einen extra Pull-UP an der Leitung benötigst.
Diese Pullups sind an den Portpins des MCP, nicht an den Datenleitungen. Wie soll es auch möglich sein, bei einem Slave Pullups am Bus einzuschalten, wenn der Bus wegen fehlender Pullups gar nicht geht.

Die Größe der Pullups ist unkritisch.

Zitat Zitat von modtronic Beitrag anzeigen
Ich habe die Pullups erst auf 20K erhöht, was dann bei den direkten MCP am Bus den gleichen Fehler zur Folge hat wie an den Dezentralen.
Dann habe ich die Pullups auf 1,5K verringert und sie da....es läuft
Das darf so nicht sein, du hasst dort ein anderes Problem.

Zitat Zitat von modtronic Beitrag anzeigen
ich habe dann nochmal meine Oskar angeschlossen und das was sie ändert ist die Differenz zwischen Low und High.
zwar unlogisch weil eigentlich keine Pullups nötig sind auf der Senderseite.
Vielleicht ist es dieses Problem: selbstverständlich sind auf allen drei Segmenten des Busses Pullups nötig. Wenn es auf der µC Seite bisher ohne sichtbare Pullups lief, hast du möglicherweise in deinem Treiber interne Pullups eingeschaltet und das funktioniert beim 128 etwas anders.

MfG Klebwax