www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik i2c multiplexing


Autor: krach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier ein Problem, vielleicht kann mir jemand dabei helfen.
Ich habe 4 i2c Sensoren, die ich nacheinander auslesen will. Alle 4 
besitzen die gleiche HW Adresse. Die Leitungslänge beträgt ca 2m.

Die direkte Kommunikation (mit einem Sensor) funktioniert. Um nun alle 4 
anzusprechen verwende ich einen Multiplexer (4052BE). Allerdings bekomme 
ich keine Daten mehr von den Sensoren, sobald der Mux dazwischen hängt.

In den Sensoren sind 10k Pullups verbaut. Die SDA und SCL Leitungen habe 
ich schon versucht mit jeweils 10k vor dem µC hoch zu ziehen. Mit dem 
gleichen Erfolg. Ich habe leider kein Oszi, um mir die Leitung 
anzugucken.

Hat vielleicht jemand noch eine Idee?

Danke!

Autor: lassativ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum stellst du die Adressen nicht ein ?...fertig !

Autor: krach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die können nicht eingestellt werden. Sind fest.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutz lieber einen speziellen I2C Multiplexer wie PCA9548 oder PCA9547. 
Den 9548 gibt's bei Reichelt und funktioniert bei mir problemlos.

Autor: krach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

weisst du, ob es den als DIP gibt? Oder kriegt man den 9548 einigermaßen 
gelötet?

Danke!
Alex

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist in SO-24 Gehäuse, das sollte man schaffen :)
Für max. 4 Kanäle kannst du auch den 9546 nehmen (SO-16 Gehäuse).

Autor: krach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, dann werde ich den mal testen.

Vielen Dank!

Autor: lassativ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ein weitsichtiger Sensorhersteller !

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat vielleicht jemand noch eine Idee?

Also theorethisch sollte das was du da machst funktionieren. Es ist nur 
wichtig das es nie zu undefinierten Pegeln an den nicht aktivierten 
Devices kommt!
Jetzt sagst du aber da in deinen Devices 10k Pullupseingebaut sind. Bist 
du dir da sicher? Das ist naemlich eigentlich Murks da man dann ja nicht 
viele Devices an einem Bus verwenden kann. Ein Hersteller der etwas 
standardconformes baut der wird immer OpenDrain Ausgaenge verwenden.

Wenn du die interne I2C Hardware deines Controllers verwendest dann 
musst du natuerlich sehr sicher sein erst umzuschalten wenn die 
Uebertragrung beendet ist. Es koennte sein das dich die Statemaschine 
beluegt, also bereits sagt sie sei fertig wenn sie noch das letzte Byte 
oder Bit uebertraegt. Mach da mal Testweise eine Wartezeit hin?

> Ich habe leider kein Oszi, um mir die Leitung
> anzugucken.

Und? Das ist doch I2C und kein 1Wire Abfall. Mach die Uebertragung 
einfach so langsam das du es mit deinem Multimeter oder zwei 
Leuchtdioden verfolgenkannst. Oder lass es mit 1kHz laufen und schau es 
dir mit deiner Soundkarte an.


Ansonsten koenntest du I2c auch noch in Software machen. In deinem Falle 
waere sogar eine Routine moeglich die alle drei ICs ohne Aufwand 
gleichzeitig einliesst.

Olaf

Autor: krach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Olaf,

ja bzgl der 10k bin ich mir sicher. Es steht im Datenblatt.
Man kann eigentlich den Fehler beim Umschalten ausschliessen - denn mit 
dem MUX kann ich nicht mal einen Sensor ansprechen.

Viele Grüße
Alex

Autor: Plan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Hier gibts einen Schaltplan mit Multiplexer, der Funktioniert.
Beitrag "Re: Heizungssteurung im Eigenbau"

Weil so viele Sensoren dran hängen muss gemultiplext werden.

Autor: eklige Tunke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
krach schrieb:
> Ich habe 4 i2c Sensoren
Ist der Sensor ein Geheimnis? Wie heisst der denn?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> denn mit
> dem MUX kann ich nicht mal einen Sensor ansprechen.

Dann machst du wohl was falsch.
Wie hast du denn die DREI Betriebsspannungsanschluesse angeschlossen?

Olaf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.