XMega-TWI-Adress-System

Gast #3665458
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
Gast #3665478
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
#3665483
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'.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 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.