Hallo
ich habe nun das ganze Forum durchgesucht aber nichts richtiges gefunden.
Ich will als Master einen Mega128 verwenden und als Slave einen Mega8.
Als Bus verwende ich TWI.
Für den Master verwende ich die Lib von Fleury.
Der Interrupt kommt beim Slave aber ich kann die Daten nicht empfangen.

Mit dem Master sende ich ein Byte zum Slave
Code:
#include <avr/io.h>
#include "i2cmaster.h"


#define Motor1  0x50      // device address of Motor1


int main(void)
{


     i2c_init();                             // initialize I2C library

     i2c_start_wait(Motor1+I2C_WRITE);     // set device address and write mode
    // i2c_write(0x10);                        // write address = 10
     i2c_write(0xFF);                        // write value 0x75 to Motor1
     i2c_stop();                             // set stop conditon = release bus
}
im Slave warte ich bis TWSR auf 0x80 gesetzt ist.
Code:
#include <avr/io.h>
#include <avr/signal.h> 
#include <avr/interrupt.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "util/twi.h"

#ifndef F_CPU
#define F_CPU 16000000UL
#endif


ISR( TWI_vect )       
{
//Statusregister abfragen

switch(TWSR)
{
case TW_SR_DATA_ACK:

	OCR1A = TWDR; //PWM-Signal

	return;

}


TWCR |= (1 << TWINT);
}

void main (void)
{
 
TWAR |= 0x50;                 // Slave Adresse
TWCR |= (1<<TWEN)|(1<<TWEA)|(1<<TWIE) ;       //TWEN das TWI Modul aktivieren TWEA das Senden des Bestätigungsbits (ACK) zulassen              

sei();
		

	DDRB =  0xff;
	PORTB = 0x02;
	DDRD =  0xff;
	PORTD = 0x44;


TCCR1A = (1<<WGM10)|(1<<COM1A1); // PWM, phase correct, 8 bit.
TCCR1B =  (1<<CS11) |(1<<CS10); // set clock/prescaler 1/64 -> enable counter

OCR1A = 30; //PWM-Signal


}
was habe ich da falsch gemacht?