Forum: Mikrocontroller und Digitale Elektronik TWI atmel, Verständisfrage zu SLA_R/W


von Harald18 (Gast)


Lesenswert?

hallo,

zur zeit beschäftige ich mich mit der kommunikation zwischen 2 ICs bzw. 
Atmel-Controllern atMegax8.

ich habe mir auch schon dazu die Bibliothek ic2master von Peter Fleury 
runtergeladen.

Nun zu meinem Verständisproblem:

Man kann ja jedem Slave eine beliebige Adresse vergeben. Diese wird ja 
dann ins TWDR geschrieben mit der entsp. Operation (lesen oder 
schreiben).

// aus dem Quellcode von P.F
i2c_start_wait(Dev24C02+I2C_WRITE);     // set device address and write 
mode

// aus i2c_start(address)
// send device address
  TWDR = address;

wenn ich nun z.b einem Slave die Adresse 11 verpasse, so ist doch Bit 0 
immer 1. So wäre das doch dann immer im Lese-Modus!?

Ich habe da leider noch nix genaueres gefunden, wo das genauer 
beschrieben ist, mit dem SLA_R bzw. SLA_W.

Also meinen Verständis nach müsste man doch die Adresse um 1 nach links 
schieben und dann Bit 0 mit TW_READ oder TW_WRITE verodern. Dann wäre 
man doch von der gewählten Adresse unabhängig..
oder sehe ich irgendwie was falsch?

mfg

von Thomas O. (tarzanwiejane)


Lesenswert?

Hi Harald18,
die I2C Addresse ist eine 7 Bit Addresse. Fuer die Uebertragung haengt 
man je nach Lesen oder Schreiben noch ne 0 oder ne 1 hinten dran. So 
werden daraus dann 8 Bit. Nu macht man so leider die Verwirrung perfekt 
da viele einfach die 7 Bit Addresse gleich Links-Orientiert als 8Bit 
Wert als Addresse angeben und bei Bedarf das Schreibbit addieren. Da 
kannste nur wuerfeln/ausprobieren was mit einer dir zugeworfenen 
Addresse gemeint ist. Bei 0x11 ist eigentlich klar das es ne 7 Bit 
Addresse ist da das niederwertigste Bit schon gesetzt ist.

cu Tarzanwiejane

von Harald18 (Gast)


Lesenswert?

hallo,

aja..danke für deine antwort.
also das find ich nicht grad den besten programmierstil! ist zwar ok, 
wenn man´s weiß, aber ansonsten aufm ersten blick eher schwer zu 
erkennen.

danke,
mfg

von Thomas O. (tarzanwiejane)


Lesenswert?

das ist keine Frage des Programmierstils... Das ist einfach eine nicht 
beantwortete Definitionsfrage. 8-)

cu Tarzanwiejane

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.