Forum: Mikrocontroller und Digitale Elektronik XMega-TWI-Adress-System


von Peder (Gast)


Lesenswert?

Hallo,

vor längerer Zeit habe ich hier über ein TWI/I2C-Problem berichtet, als 
ich ein Display mit einem XMega ansteuern wollte, was allerdings 
ungelöst blieb. Im Moment habe ich wieder Zeit, weiter daran zu 
arbeiten, also versuche mich gerade am TWI-Protokoll und habe dazu zwei 
XMega256 zusammengeschalten. Einer arbeitet als Master, der andere als 
Slave. Das Adress-System verstehe ich aber anscheinend schon nicht bzw. 
es widerspricht sich das, was ich lese mit dem, was ich als Resultat 
sehe.

Ich gebe dem Slave z.B. die Adresse 0x66 = 0b0110 0110.
Nach allem, was im Datenblatt und im Internet steht, müsste der Master 
ein Adresspaket senden, was die 7Bit-Adresse enthält mit einem achten 
Bit für Read/Write, also folgendermaßen:
7Bit Adresse und ein 1Bit R/W = 0b1100 1100 für Write.
Dann aber erkennt der Slave die Adresse nicht als die seine und macht 
nichts. Was für meinen gesunden Menschenverstand vollkommen logisch 
erscheint, weil sich 0b1100 1100 krass von 0b0110 0110 unterscheidet.

Nur, wenn der Master eine 0x66 oder eine 0x67 sendet, reagiert der 
Slave. Ich verstehe hier nicht, welches System nun das "richtige" ist: 
Steht im Adressregister des Slaves die Adresse des Slaves oder ist die 
Adresse dort schon "kodiert" einzutragen, etwa als (Adresse << 1) und 
das unterstes Bit ist dann unwichtig?


Danke und Grüße

Peter

von spess53 (Gast)


Lesenswert?

Hi

>Ich verstehe hier nicht, welches System nun das "richtige" ist:
>Steht im Adressregister des Slaves die Adresse des Slaves oder ist die
>Adresse dort schon "kodiert" einzutragen, etwa als (Adresse << 1) und
>das unterstes Bit ist dann unwichtig?

Steht doch eindeutig im Manual:

ADDR – Address register

Bit 7:1 – ADDR[7:1]: TWI Slave Address
Bit 0 – ADDR: General Call Recognition Enable

MfG Spess

von Oliver R. (orb)


Lesenswert?

Die Adresse Deine Slaves ist eigendlich 0x33, 0b0110011.
Das Byte auf dem Bus enthält die Adresse in Bit 1-7, Bit 0 ist das 
RW-Bit.
Da ist die Adresse des Slaves also 0b0110011x, sprich 0x66 und 0x67 in 
8Bit.
Das ist aber kein XMega sondern ein generellen I2C-'Problem'.

: Bearbeitet durch User
von Peder (Gast)


Lesenswert?

Okay, Asche auf mein Haupt. Ich weiß nicht mal, wie ich das 
rechtfertigen soll. Ich danke einfach. :)

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.