mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Doppelt vorhandene Slave Adresse bei I2C


Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss mehrere uC vernetzen. Dabei gibt es 1 Master und viele Slaves. 
Als Schnittstelle dachte ich an I2C. Die Adresse von den Slaves ist über 
Jumper einstellbar. Soweit alles kein Problem.
Wie kann der Master aber erkennen, dass es mehrere Slaves mit gleicher 
Adresse gibt ?
Da in allen Slaves die gleiche Software läuft, verhalten sich alle 
gleich, daher fällt diese doppelte Belegung eigentlich nur bei 
unterschiedlichen Daten auf. Aber dann werden eigentlich die Daten auch 
nur verfälscht, erkennen kann man das also eigentlich nur wenn der 
empfangene Wert schon bekannt ist.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn am Bus zwei Slaves mit geicher Adresse hängen, werden sie erstmal 
beide mit Ack antworten. Es ist nicht erkennbar, ob nur einer oder beide 
Slaves antworten. Es entfällt also erstmal eine wichtige 
Funktionskontrolle.
Wenn dann beide Slaves Daten liefern sollen, werden sie gleichzeitig auf 
den Bus brabbeln.

Ein Ausweg könnte es sein, in beiden Slaves verschiedene 
Sekundäradressen einzurichten, sodass nur der Slave mit der richtigen 
Slave-Adresse weiter aktiv bleibt. Aber das müsste natürlich individuell 
in die Slaves einprogrammiert werden.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Schreibfehler:  ... mit der richtigen Sekundäradresse...

Autor: KlaRa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Benedikt,
schau mal hier: http://cctools.hs-control.de/home.php

I2C-MUX7 I²C-Bus-Multiplexer für Printmontage.
Mit Hilfe dieses I²C-Multiplexers ist es möglich zwischen
mehreren Sub-Bussen umzuschalten.
Dies ist z.B. sinnvoll, wenn mehr Bausteine an verschiedenen
Adressen benötigt werden, als zur Verfügung stehen...

Gruss KLaus.



Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt K.

>Wie kann der Master aber erkennen, dass es mehrere Slaves mit gleicher
>Adresse gibt ?

Die Slaves müssen auf ein spezielles Kommando hin mit einer zufälligen 
Antwortzeit antworten. Wenn nun zwei Slaves zeitversetzt antworten gibt 
es zwei mögliche Fälle

a) die Antworten überlagern sich nicht zeitlich -> zwei Antworten
b) die Antworten überlagen sich -> Antwort im Eimer

MFG
Falk

Autor: Gugge 73 (gugge73)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie willst du erkennen, ob eine Überlagerung stattfindet oder ob 
diese Überlagerung nicht die Antwort eines einzelnen Slaves ist?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gugge 73

>Und wie willst du erkennen, ob eine Überlagerung stattfindet oder ob
>diese Überlagerung nicht die Antwort eines einzelnen Slaves ist?

über die Auswertung des Clock stretching oder eine geschickte Prüfsumme.

MfG
Falk


Autor: Gugge 73 (gugge73)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei, stimmt, wenn die Antwort bekannt ist, könnte das gehen.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, das mit der Checksumme ist eine gute Idee. Bleibt halt nur, dass 
eine Zufallszahl gebraucht wird, und daher das Verfahren wieder etwas 
unsicher ist.
Ich denke ohne Zufallszahlen oder eindeutige Seriennummer in jedem uC 
wird es wohl nicht gehen. Irgendwie müssen sich die uC ja unterscheiden.

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.