Fragen zu I²C

Gast #127169
Hallo!

Ich will in meinem Partykeller 16 Lampen per Relais in bestimmten
Mustern blinken lassen. Nun hab ich mir gedacht dass ich die Muster von
einer CHIP-Karten (die ja nichts anderes als I²C-EEPROMS sind) lese und
dann in die Tat umsetze.
Mir ist da was nicht so klar. Da am I²C-Bus mehrere Slaves
angeschlossen werden können, hat jeder seine eigene Addresse. Woher
weiß ich die aber? Und wie ist dann der Einsatz von mehreren Karten
möglich? Muss ich dann jede Adresse ausprobieren?
Und was passierz eigendlich, wenn zwei Slaves zufällig die selbe
Adresse haben?

mFg
Gast #127170
Hallo,

grundsätzlich hat es im normalen I2C-Modus ja nur 7-Bit Adressen, wobei
Adressen mit 0000xxx und 1111xxx reserviert sind, d.h. es blieben noch
112 Möglichkeiten übrig, die man per Software durchprobieren kann. Das
sollte eigentlich kein Problem sein, denn wenn kein Gerät mit der
getesteten Adresse da ist, gibt's auch kein Acknowledge. Unterstützt
der I2C-Slave General Call, dann geht's noch einfacher. Mit der
General Call Address (0000000 --> eine der bereits erwähnten
Reservierten) wird einfach alles am I2C-Bus angesprochen. Damit lässt
sich dann z.B. auch die I2C-Adresse eines Slaves per Software neu
vergeben.

Wenn zwei Slaves die gleiche Adresse haben, dann antworten sie auch
gleichzeitig. Grundsätzlich arbeitet der I2C-Bus nach dem
Wired-And-Prinzip, d.h. eine 1 wird von einer 0 überschrieben. Wenn
zwei Master gleichzeitig senden, dann prüfen sie jeweils, ob das was
sie schreiben auch auf dem Bus ankommt und wenn nicht, dann hören sie
auf zu schreiben. Im Klartext heisst das, daß sich einer der beiden
durchsetzt. Bei den Slaves gibt es also zwei Möglichkeiten: Entweder
das tut genauso und es antwortet eben nur einer von beiden oder es
antworten beide und es gibt Datenmüll...

Grundsätzlich sollte die I2C-Beschreibung weiterhelfen:

http://www.semiconductors.philips.com/acrobat_download/literature/9398/39340011.pdf

Gruss Florian.
Gast #127171
Einfach mal in ein Datenblatt einer I²C-Chipkarte schauen (z.b. bei
Reichelt), da steht auch drin unter welcher Adresse man die ansprechen
kann. Bei Chipkarten dürfte das immer die selbe sein. Wird wohl auch
nicht in der Spezifikation vorgesehen sein mehrere I²C-Karten an einem
Bus gleichzeitig zu betreiben....

Gruß
Peter
Gast #127172
@Hans



Bei den meisten Speicherkarten ist die Adresse 0xA0 vergeben.
(Telefon,Krankenkarte usw.)



Und "NEIN" einen Adress-Pin gibt es bei Chipkarten nicht.

Entweder du läst imeer nur eine Karte laufen oder du mußt 2 I2C-busse
betreiben.

Eine Billige Alternative ist einfach den Bus umzuschalten.

Entweder per Relais,Transen oder komfortabel mit nem kleinen
Busextender der selber über I2C gesteuert wird.


Such dir was aus. ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.