Forum: Mikrocontroller und Digitale Elektronik Arduino I2C Wire.h - Adressproblem / Scanner


von Philip D. (phlpjo)


Lesenswert?

Hallo zusammen,

ich arbeite gerade an einem Projekt, bei dem der Kunde am fertigen Gerät 
weitere Module einzeln hinzufügen können soll.
Die Module werden standardmäßig mit der i2c Adresse 0x00 ausgeliefert 
und einzeln hinzugefügt. Der Master erkennt beim Hinzufügen einen 
Teilnehmer auf factory Adresse 0x00 und weißt ihm automatisch die nächst 
freie Adresse zu. Der Slave speichert seine neue Adresse im EEPROM und 
startet neu.

Soweit so gut und es funktioniert auch einwandfrei.
Abgesehen von der Adresse 0x01. (Meine erste Adresse im 
Zuweisungssystem)
Soll auch gerne so bleiben, da es aus programmier- und 
übersichtlichkeitsgründen so am einfachsten ist.

Sobald ein Teilnehmer mit der Adresse 0x01 auf dem BUS vorhanden ist, 
verlangsamt sich der i2c Scanner im Master auf 1 s pro gescannter 
Adresse und findet keine Teilnehmer mehr.
Alle weiteren Adressen (0x02, 0x03 usw.) kann ich problemlos belegen, 
ohne dass es zu einem Problem führt.

BUS läuft sauber, ist Oszilliert und SDA/SCL per pull-up-poti 
eingereglt.
Es ist auch keine Adressendopplung vorhanden.

Jemand eine Idee, was es hiermit auf sich haben könnte?

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Solltest vielleicht mal vorher die I2C-Spec lesen. Adresse 0x00 ist die 
"Anrufadresse" für alle Devices. Ob es da noch andere reservierte gibt, 
weiss ich auf die Schnelle nicht. Und ist die 0x01 im 7- oder 
8-Bit-Format?

von Helmut -. (dc3yc)


Lesenswert?

Schau mal hier https://www.pololu.com/file/0J435/UM10204.pdf. Im Kapitel 
3.1.12 stehen die reservierten Adressen. Und deine sind voll dabei!

: Bearbeitet durch User
von Philip D. (phlpjo)


Lesenswert?

Helmut -. schrieb:
> Schau mal hier https://www.pololu.com/file/0J435/UM10204.pdf. Im
> Kapitel
> 3.1.12 stehen die reservierten Adressen. Und deine sind voll dabei!

Oh.. So einfach. Nach sowas habe ich gesucht. Dann werde ich den 
Adressbereich um 10 nach oben schieben. Danke!

von Wolfgang (Gast)


Lesenswert?

Philip D. schrieb:
> Sobald ein Teilnehmer mit der Adresse 0x01 auf dem BUS vorhanden ist,
> verlangsamt sich der i2c Scanner im Master auf 1 s pro gescannter
> Adresse und findet keine Teilnehmer mehr.

Dann antwortet der Teilnehmer wahrscheinlich darauf. Das ist nicht 
zulässig.

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
Noch kein Account? Hier anmelden.