Wire senden und empfangen

Hallo,

ich versuche den Verkehr von SDA über einen bus driver (74HC245) zu steuern.
Dafür muss ich wissen, wann genau I²C sendet und wann empfängt.
Ich habe versucht die Wire-Bibliothek (Datei: twi.c) dahingehend zu verändern. Also wenn ich Daten vom Sensor erwarte, der Bus driver auf "empfangen" steht und ansonsten immer auf "senden".
Ich verstehe aber nicht genau, wo überall Daten Empfangen werden. Könnt ihr mir sagen, wo das der Fall ist?

Im Anhang die betreffende Datei twi.c

/edit: Falls das relevant sein sollte, ich benutze das Arduino UNO
/edit2: Es soll angepasst werden mit "digitalWrite(DIR, LOW);" (siehe bsp in twi.c)

twi.c (13.5 KB)

hallo gast1234 (übrigens netter Username :wink: :wink: :wink: )

Mir entzieht sich der Sinn Deines Ansinnens.

I2C ist ein Bus-Schnittstelle wo Du bis zu 127 Bauteile anschließen kannst. Sollte da nicht reichen gibt es Bausteine für Untersysteme mit eigenen Adressraum und Treiber für Verlängerung max Kabellänge des Busses.

Grüße Uwe

Danke für die Antwort Uwe. Ja der Sinn geht aus dem Post nicht hervor, weide aber auch den Rahmen sprengen. kurz gesagt, er dient dem Schutz des Mikrocontrollers.

Kannst du mir sagen, an welchen stellen genau empfangen wird?
Zum auslesen bin ich so vorgegangen:
http://www.ladyada.net/learn/sensors/bmp085.html

Ich finde Deine Befürchtung einfach sinnlos und Du machst Dir nutzlose Probleme.
Indem Du einen Bustreiben dazwischenschaltest, der nicht für I2C geeignet ist, bekommst Du nur Probleme, daß der Bus nicht oder nicht mehr stabil läuft.
Die I2C Schnittstelle ist Hartware implementiert. Darum kannst Du nicht softwaremäßig bestimmen wann umschalten.
Grüße Uwe