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
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.
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
@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. ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.