Gast
#873651
Hallo Zusammen, ich versuche mich gerade in I2C einzuarbeiten, da habe ich den Kode von Peter Fluery entdeckt. Habe Atmega32 und PCF8574. (Schaltung funktioniert) 1. /* write 0x75 to eeprom address 0x05 (Byte Write) */ ret = i2c_start(Dev24C02+I2C_WRITE); // set device address and write Warum muss man zum Adresse noch den I2C_WRITE angeben? Da es Addiert wird und I2C_WRITE = 0 ist hat es ja keine Wirkung. Müsste ich nicht die Adresse um 1 ShiftLeft und + I2C_WRITE machen? Vor allem wird ja im Header garnicht der I2C_WRITE behandelt. Das gleiche beim Read. 2. was passiert wenn ich eine Adresse habe wo LSB 1 ist? wird sie durch diese schreibweise nicht verfälscht? 3. Warum schreibt Peter 2x write? i2c_write(0x05); // write address = 5 i2c_write(0x75); // ret=0 -> Ok, ret=1 -> no ACK i2c_stop(); // set stop conditon = release bus Ist das so weil es mit EEProm komunizieren soll? 4. Besteht die verbindung so lange bis ich i2c_stop() mache? d.h. kann ich soviele daten schicken wie ich will so lange ich den bus mit der entsprechenden Baustein aufrecht erhalte? Ich hoffe dass sind nicht sehr viele fragen.... Grüße Khan