Ok das klingt super! Wieviel Bytes kann ich maximal übertragen? Und wie kann ich die Bytes dann wieder auslesen?
Als Beispiel:
Übertragen vom Master:
// Übertrage
i2c_start_wait(Motor_1 + I2C_WRITE); // set device address and write mode
i2c_write(Byte_1); // Übertragen des ersten Datenbytes
i2c_write(Byte_2); // Übertragen des zweiten Datenbytes
i2c_stop(); // set stop conditon = release bus
Empfangen vom Slave:
//Daten empfangen
case TW_SR_DATA_ACK: /*TW_SR_DATA_ACK = data received, ACK returned.
Vom Master gesendete Daten wurden empfangen
und es wurde mit Acknowledge geantwortet*/
Byte_1 = TWDR; /*Übertragen der Daten*/
Byte_2 = TWDR; /*Übertragen der Daten*/
TWCR |= (1<<TWINT); /*Löschen des für die TWI Übertragung nötigen
Interruptflags.*/
i2c_timeout = 0; /*Variable "i2c_timeout" wird auf "0" gesetzt.
Also zurückgesetzt.*/
return; //Interrupt verlassen
Könnte das so funktionieren?
Gruß Andi
Lesezeichen