Hallo,
wie der Titel schon sagt versuche ich eine Verbindung zwischen einem xmega und einer Wiimotionplus herzustellen.
In Bascom ist es mir gelungen! Doch wird es Zeit auf C umzusteigen, allein schon weil es keinen Code in Bascom für ein RFM70 Funkmodul gab .
Nun ja, ihr seht meine ersten Versuche. Der Ablauf des Programms ist so wie zu sehen von oben nach unten.

Die Variable WMP gebe ich mir auf einem LCD aus. Leider ist sie bisher immer leer. Ich weiß weder ob die Initialisation richtig verläuft oder ob nur das Auslesen Fehler birgt.
In Bascom sah das Auslesen folgendermaßen aus:

I2cstart #2
I2cwbyte &HA4 , #2 'sends memory address
I2cwbyte &H00 , #2 'sends zero before receiving
I2cstop #2
I2creceive &HA4 , Buffer(1) , 0 , 6 , #2 'receive 6 bytes

Hab ich eventuell was mit den Adressen falsch gemacht? Denn dort ist die Adresse immer A4...A4 fürs schreiben? Und beim Auslesen ändert sie sich doch auf A5?

Aller Anfang mit C ist schwer....leider im Moment zu schwer . Ich danke allen Antwortenden


C-Code:
void TWI_MasterInit()
{
TWIC.CTRL = 0x00; //Normal TWI mode
TWIC.MASTER.BAUD = 0x9B;//100 KHz at 32MHz clock
TWIC_MASTER_CTRLA = TWI_MASTER_ENABLE_bm;
TWIC.MASTER.CTRLB = TWI_MASTER_TIMEOUT_DISABLED_gc; //Timeout disabled
TWI_MASTER_INTLVL_HI_gc;
TWI_MASTER_RIEN_bm;
TWI_MASTER_WIEN_bm;
TWIC_MASTER_STATUS = TWI_MASTER_BUSSTATE_IDLE_gc;
}


void WMP_INIT()
{
TWIC_MASTER_ADDR = 0xA6; //bisherige I2C Schreibadresse
TWIC_MASTER_DATA = 0xFE; //Registeradresse
TWIC_MASTER_DATA = 0x04; //i2c Schreibadresse in 0xA4 geändert
TWIC_MASTER_CTRLC = TWI_MASTER_CMD_STOP_gc;
}


void WMP_LESEN()
{
TWIC_MASTER_ADDR = 0xA4; //i2c Schreibadresse
TWIC_MASTER_DATA = 0x00; //schreibe nullen
TWIC_MASTER_CTRLC = TWI_MASTER_CMD_STOP_gc;

//TWIC.MASTER.CTRLC = TWI_MASTER_CMD_REPSTART_gc;
TWIC_MASTER_ADDR = 0xA5; //i2c Leseadresse
WMP = TWIC_MASTER_DATA;
TWIC_MASTER_CTRLC = TWI_MASTER_CMD_STOP_gc;
}