1. Du liegst mit deiner Annahme richtig (Led soll gedimmt werden über PWM, usw...)

2. Danke für deinen Denkansatz - komme schön langsam dahinter wie's geht und habe deshalb mal versucht ein ganz einfaches Programm zu schreiben, welches den I2C Bus verwendet - im Grunde genommen ist ja eh nix dabei... verstehen muss man's nur einmal

3. Also, der Master-Code sieht so aus:

Code:
#include "RP6ControlLib.h"

#include "RP6I2CmasterTWI.h"

void I2C_transmissionError(uint8_t errorState)
{
	writeString_P("\nI2C ERROR - TWI STATE: 0x");
	writeInteger(errorState, HEX);
	writeChar('\n');
}

/*****************************************************************************/
/*****************************************************************************/

int main(void)
{
	initRP6Control(); 

	initLCD();

	I2CTWI_initMaster(100);

	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);

    uint8_t adresse = 10;
	uint8_t data1_master = 0;
	uint8_t data2_master = 50;
	uint8_t data3_master = 80;

	while(true) 
	{
		uint8_t key = checkReleasedKeyEvent(); 
		
		if(key)
		{
			switch(key)
			{
				case 1:
				  I2CTWI_transmit3Bytes(adresse, data1_master, data2_master, data3_master);
				break;
			}
		}
	}
	return 0;
}
Der Slave-Code so:

Code:
#include "RP6RobotBaseLib.h"
#include "RP6I2CslaveTWI.h"

int main(void)
{
  initRobotBase();
  I2CTWI_initSlave(10);
  powerON();
  
  uint8_t data1_slave;
  uint8_t data2_slave;
  uint8_t data3_slave;
  
  
  while(true)
  {
    if(I2CTWI_writeRegisters[0] && !I2CTWI_writeBusy)
    {
      data1_slave = I2CTWI_writeRegisters[0];
	  data2_slave = I2CTWI_writeRegisters[1];
	  data3_slave = I2CTWI_writeRegisters[2];
  
      writeString_P("data1_slave: ");writeInteger(data1_slave, DEC);writeChar('\n');
	  writeString_P("data2_slave: ");writeInteger(data2_slave, DEC);writeChar('\n');
	  writeString_P("data3_slave: ");writeInteger(data3_slave, DEC);writeChar('\n');
      writeChar('\n');
	  
      I2CTWI_writeRegisters[0] = 0;
  
    }
  }

return 0;
}
Frage A) Eigentlich funzt alles. Nur verstehe ich nicht, warum wenn ich für data1_master=0, für data2_master=50 und für data3_master 80 verwende, dass der Slave dann aber in der Ausgabe (Terminal)

data1_slave: 50
data2_slave: 80
data3_slave: 0

ausgibt!?

Sollte doch eigentlich

data1_slave: 0
data2_slave: 50
data3_slave: 80

ausgeben, oder?

Frage B) Und warum muss der Wert "data1_master" unbedingt 0 (Null) sein? Ansonsten funztt mein Beispielprogramm nämlich nicht!?

Aber ich denke, ich komme der Sache schön langsam näher..