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.
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?
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.
Das darf so nicht sein, du hasst dort ein anderes Problem.
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
Lesezeichen