Nach langer Zeit habe ich nun endlich wieder Zeit gefunden meinen RP6 auszugraben und daran weiter zu machen ^^.
der Kompass ist nur auf der M32 Platine angeschlossen und dass auslesen funktioniert fast ohne probleme ;D.

Mein Problem ist, dass beim auslesen immer folgender Error kommt:
I2C ERROR - TWI STATE: 0x20

dieser wird durch folgenden Code verursacht:

Code:
void read_data_raw(vector *a, vector *m)
{
    
        // read accelerometer values
        I2CTWI_transmitByte(0x30, 0x30);
        I2CTWI_transmitByte(0x30, OUT_X_L_A);
        
        unsigned char axl = I2CTWI_readByte(0x31);

        I2CTWI_transmitByte(0x30, OUT_X_H_A);
        unsigned char axh = I2CTWI_readByte(0x31);
        
        I2CTWI_transmitByte(0x30, OUT_Y_L_A);
        unsigned char ayl = I2CTWI_readByte(0x31);
        
        I2CTWI_transmitByte(0x30, OUT_Y_H_A);
        unsigned char ayh = I2CTWI_readByte(0x31);
        
        I2CTWI_transmitByte(0x30, OUT_Z_L_A);
        unsigned char azl = I2CTWI_readByte(0x31);
        
        I2CTWI_transmitByte(0x30, OUT_Z_H_A);
        unsigned char azh = I2CTWI_readByte(0x31);

        // read magnetometer values
        
        I2CTWI_transmitByte(MAG_ADDRESS, 0x3C);
        I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_H_M);
        
        unsigned char mxh = I2CTWI_readByte(0x3D);
        
        
        //I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_L_M);
        unsigned char mxl = I2CTWI_readByte(0x3D);
        
        //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_H_M);
        unsigned char myh = I2CTWI_readByte(0x3D);
        
        //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_L_M);
        unsigned char myl = I2CTWI_readByte(0x3D);
        
        //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_H_M);
        unsigned char mzh = I2CTWI_readByte(0x3D);
        
        //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_L_M);
        unsigned char mzl = I2CTWI_readByte(0x3D);
        

        a->x = axh << 8 | axl;
        a->y = ayh << 8 | ayl;
        a->z = azh << 8 | azl;
        m->x = mxh << 8 | mxl;
        m->y = myh << 8 | myl;
        m->z = mzh << 8 | mzl;
    
}

//... 
// in der main ist noch folgendes:
    I2CTWI_initMaster(100);  // muss ich diese zahl evtl höher machen?
    I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
    I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);

    DDRC = 0;
    PORTC = (1 << PC1) | (1 << PC0); // enable pull-ups on SDA and SCL, respectively
Danke schonmal im vorraus =)