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:
Der Slave-Code so: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; }
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)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; }
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..







Zitieren

Lesezeichen