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..
Lesezeichen