Hab mir deinen Code angesehen und auch was versucht, hab auch noch weng im Netz gelesen aber auch erfolglos. Ich glaube mein Problem liegt darin das mein Slave die Werte nur im durch den TWI verursachten Interrupt lesen kann. Mein Slave ist ein Brushless Controller. Hier mal der Codepart in dem ich lese:

ISR (TWI_vect) //Wird ausgelöst wenn der Master etwas senden will.
//################################################## ##########################
{
switch (TWSR & 0xF //TW_STATUS
{
//Adresse empfangen
case TW_SR_SLA_ACK: /*TW_SR_SLA_ACK = SLA+W received, ACK returned.
Also "MT-Kommando SLA+W" wurde empfangen und
es wurde mit Acknowledge geantwortet*/
TWCR |= (1<<TWINT); /*Löschen des für die TWI Übertragung nötigen
Interruptflags.*/
return; //Interrupt verlassen

//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*/

Motor_Speed = 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

}

Vielleicht hat das so in der art ja schon mal jemand gemacht. Ich versteh nicht ganz ob der Master am Slave für jedes Byte nen Interrupt auslöst.
Bin für jede Hilfe dankbar.