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