Hi,
also ich habe das oben beschriebene Szenario.
Der Master ist ein AT91SAM9G45, der laut Datenblatt an den Inputs
maximal 3.3V verträgt.
Meine Dimmerplatinen laufen alle mit 5V und brauchen diese auch.
Beides soll mit I2C verbunden werden. Nun ist es ja eigentlich so, dass
bei I2C der Master die Spannung liefert und den pull-up macht, und die
slaves die Datenleitungen eigentlich nur auf GND ziehen, also nicht ihre
eigene Betriebsspannung auf die Leitung legen sollten.
Es müsste doch daher eigentlich ohne Pegelwandlung funktionieren, oder?
Jetzt ist es komischerweise so, dass das kleine USI I2C library dass ich
benutze
(http://www.jtronics.de/elektronik-avr/lib-i2ctwi-mit-usi-interface.html)
die Datenleitungen zeitweise auch als Outputs setzt und zwar mit
High-pegel... Wieso? Reicht es nicht mit den beiden folgenden States zu
arbeiten (für SCL und SDA)?:
1 | DDRbit = 0 //also input
|
2 | PORTbit = 0 //kein pullup, weil global
|
1 | DDRbit = 1 //output
|
2 | PORTbit= 0 //zieht datenleitung auf GND runter
|
Philipp