Eine Antwort ist schwer ohne Deine Platine zu sehen. Ich habe auch gerade einen Level-Shifter für I2C aufgebaut, vielleicht hilft das (Schaltplan, Platine) weiter: http://lookmanowire.blogspot.de/2012...pberry-pi.html
Hi,
ich habe zwei Platinen, welche mit unterschiedlichen Versorgungsspannungen (3V3 & 5V) arbeiten. Da diese über I2C kommunizieren sollen, hab ich einen I2C-Levelshifter aufgebaut, nach der Application Note AN97055 von Phillips. Als Mosfets verwende ich zwei BSS138, als Pullups auf jeder Seite 3k3.
Sobald ich jedoch die Kabel einstecke, geht die 5V-Seite (SDA & SCL) auf 0V. http://playground.arduino.cc/Main/I2...alLevelShifter
Wenn ich die Kabel rausziehe, arbeiten beide Seiten korrekt!
Hat jemand einen Hinweis, was falsch sein könnte?
Vielen Dank & Gruß
Chris
EDIT:
Achja, das noch: Immer, wenn der Master (ATXMega32A4 @ 3V3) etwas an den Slave sendet, resettet sich dieser...
Geändert von Che Guevara (13.01.2013 um 17:11 Uhr)
Eine Antwort ist schwer ohne Deine Platine zu sehen. Ich habe auch gerade einen Level-Shifter für I2C aufgebaut, vielleicht hilft das (Schaltplan, Platine) weiter: http://lookmanowire.blogspot.de/2012...pberry-pi.html
XBee, Arduino, RaspberryPi und Elektronik-Blog
http://lookmanowire.blogspot.de/
Hi,
danke für deine Antwort!
Meine Schaltung des Levelshifters entspricht 1:1 der in deinem Link, bis auf die Pullups, ich verwende 3k3 anstatt 10k.
Vom Rest habe ich keinen Schaltplan, könnte ihn aber notfalls erstellen.
Gruß
Chris
Wenn die Platine tatsächlich 1:1 ist (was ohne diese zu sehen schwer zu beurteilen ist), bleibt ja nur noch die Software. Wie sieht denn der Programmcode des ATXMega aus? Welcher IC ist als Slave angeschlossen? Funktioniert das ganze mit einem simplen Level-Shifter aus Widerständen (Beispiel im Beitrag am Ende).
XBee, Arduino, RaspberryPi und Elektronik-Blog
http://lookmanowire.blogspot.de/
Hi,
ich meine nicht die Platine ansich, sondern den Schaltplan des Levelshifters
Dass es ein Softwareproblem ist, glaube ich nicht, weil der Fehler auch auftritt, wenn der I2C-Bus überhaupt nicht im Programm verwendet wird.
Der ATXMega ist der Master, an ihm hängen ein MPU6000 als I2C-Slave und der ATMega328p als Slave.
Mit Wiederständen hab ich es noch nicht ausprobiert.
Gruß
Chris
EDIT:
Ok, ich habs nochmal probiert, es scheint wohl doch ein Softwareproblem zu sein..... Sobald ich im Slave die "Config TWISlave = ..." auskommentiere, funktioniert der Levelshifter... Aber das werde ich dann in meinem anderen Thread zu diesem Thema schreiben
Geändert von Che Guevara (13.01.2013 um 18:38 Uhr)
Lesezeichen