Hallo

Nur um es gleich klarzumachen: Ich habe keine Ahnung von I2C/TWI, dies sind meine ersten Versuche.

Ich habe mir einen kleinen Adapter gebastelt:
Bild hier  
Und das Programm von linux_80 (danke) an den RP6 angepasst:
Code:
'$regfile = "M8def.dat"                                      ' the used chip
'$crystal = 16000000                                         ' frequency used
'$baud = 9600

$regfile = "M32def.dat"                                     ' RP6 mit Mega32
$crystal = 8000000                                          ' taktet mit 8MHz
$baud = 38400                                               ' Loader-Baud

$lib "i2c_twi.lbx"                                          ' Für Hardware TWI

'Config Scl = Portc.5                                        ' Ports fuer IIC-Bus
'Config Sda = Portc.4

Config Scl = Portc.0                                        ' Ports fuer IIC-Bus
Config Sda = Portc.1

Config Twi = 400000                                         ' Init TWBR und TWSR

' TWI gleich einschalten, das macht Bascom ansonsten erst beim I2CStart !
Twcr = &B00000100                                           ' nur TWEN setzen

Const Nunchuck_write = &H52                                 ' Slaveadresse
Const Nunchuck_read = &H53

Dim Buffer(6) As Byte
Dim B As Byte
Dim Tmp As Byte

' Startausgabe
Print
Print "I2C-TWI Demo mit Wii Nunchuck"
Print

Do

    Gosub Nunchuck_init

    Buffer(1) = 0

    I2creceive Nunchuck_read , Buffer(1) , 0 , 6

    For B = 1 To 6

        ' Hier soll noch etwas rumcodiert werden:
        Tmp = Buffer(b) Eor &H17
        Tmp = Tmp + &H17

        Print B ; ": " ; Hex(tmp )

        Buffer(b) = 0                                       ' löschen

    Next B

    Gosub Send_zero

    Print "------"

    Waitms 1000
Loop

End

Nunchuck_init:
    I2cstart
    I2cwbyte Nunchuck_write
    I2cwbyte &H40                                           ' sends memory address
    I2cwbyte &H00                                           ' sends sent a zero.
    I2cstop

Return

Send_zero:

    I2cstart
    I2cwbyte Nunchuck_write
    I2cwbyte &H00                                           ' sends one byte
    I2cstop

Return
Die Ausgabe dazu in meinem Terminal:
I2C-TWI Demo mit Wii Nunchuck

1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------
1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------
1: 6A
2: 6A
3: 6A
4: 6A
5: 6A
6: 6A
------

[RP6BOOT]

[READY]
Egal ob der Nunchuk eingesteckt ist oder nicht, die Werte sind immer gleich
Vielleicht könnten die TWI-Profis mal drüberschaun. Ich versuche es nun erstmal in C mit der TWI-Libray des RP6...

Gruß

mic