Juhu!

Ich habe eine Ausgabe! Der "Fehler" war die Slave-Adresse:
The device address is "0x52" ("0xA4" in 8-bit addressing).
(aus dem oben erwähnten wiili-wiki)
Code:
'Const Nunchuck_write = &H52                                 ' Slaveadresse
'Const Nunchuck_read = &H53
Const Nunchuck_write = &HA4                                 ' Slaveadresse
Const Nunchuck_read = &HA5
Nachdem ich nun die 8bit-Adresse eingetragen habe (k.A. was das bedeutet) erhalte ich Werte.

Das Nunchuck_init habe ich aus der Schleife genommen, denn sonst würde doch send_zero am Schleifenende überschrieben werden:
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
Const Nunchuck_write = &HA4                                 ' Slaveadresse
Const Nunchuck_read = &HA5

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

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

Gosub Nunchuck_init
Gosub Send_zero

Do
    Buffer(1) = 0

    I2creceive Nunchuck_read , Buffer(1) , 0 , 6
    'Print Err

    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 "------"
    Print

    Waitms 500
Loop

End

Nunchuck_init:
    I2cstart
    I2cwbyte Nunchuck_write
    'Print "Fehler beim Init: " ; Err
    I2cwbyte &H40                                           ' sends memory address
    I2cwbyte &H00                                           ' sends sent a zero.
    I2cstop

Return

Send_zero:

    I2cstart
    I2cwbyte Nunchuck_write
    'Print "Fehler beim null senden: " ; Err
    I2cwbyte &H00                                           ' sends one byte
    I2cstop

Return
Hier die Ausgabe:
I2C-TWI Demo mit Wii Nunchuck

1: BC 2: BC 3: BC 4: BC 5: BC 6: BC
1: 88 2: 95 3: 91 4: 94 5: E8 6: 0A
1: 8A 2: 95 3: 87 4: 90 5: EA 6: F6
1: 8A 2: 95 3: 96 4: 91 5: E7 6: C2
1: 8A 2: 95 3: 87 4: 91 5: E7 6: BA
1: 6F 2: 94 3: 87 4: 92 5: F6 6: CE
1: 2A 2: 96 3: 87 4: 92 5: F6 6: 02
1: 2A 2: 96 3: 88 4: 93 5: E7 6: 6E
1: 2A 2: 96 3: 88 4: 93 5: F6 6: 2E
1: 31 2: 96 3: 88 4: 93 5: F6 6: 32
1: 4F 2: 93 3: 88 4: 93 5: E7 6: BA
1: 8B 2: 94 3: 87 4: 94 5: E7 6: 42
1: 96 2: 95 3: 88 4: 94 5: E7 6: E2
1: B1 2: 88 3: 87 4: 94 5: E7 6: AA
1: BD 2: 87 3: 87 4: 94 5: E7 6: 46
1: F6 2: 88 3: 87 4: 94 5: F6 6: 46
1: F6 2: 88 3: 96 4: 95 5: E7 6: F2
1: B3 2: 8A 3: 96 4: 95 5: E7 6: E2
1: 89 2: 95 3: 88 4: 94 5: F6 6: 6A
1: 8B 2: 94 3: 87 4: 95 5: F6 6: 6E
1: 94 2: 6E 3: 87 4: 95 5: E7 6: F2
1: 94 2: 53 3: 88 4: 95 5: F6 6: 9A
1: 95 2: 30 3: 88 4: 96 5: E7 6: CE
1: 95 2: 36 3: 88 4: 96 5: F6 6: 1A
1: 95 2: 36 3: 88 4: 96 5: E7 6: 6A
1: 93 2: 54 3: 88 4: 96 5: E7 6: F6
1: 92 2: 6C 3: 87 4: 87 5: E7 6: EE
1: 90 2: 95 3: 88 4: 87 5: E7 6: 16
1: A9 2: 97 3: 87 4: 88 5: E7 6: 32
1: B3 2: C4 3: 87 4: 88 5: E7 6: 6A
1: A9 2: EE 3: 87 4: 88 5: E7 6: 8A
1: 86 2: E9 3: 87 4: 88 5: E7 6: 5E
1: 86 2: E9 3: 87 4: 89 5: E7 6: 56
1: 79 2: C9 3: 87 4: 89 5: E7 6: 4E
1: 7A 2: A9 3: 87 4: 88 5: E7 6: 3A
1: 89 2: 94 3: 87 4: 88 5: E8 6: 8A
1: 89 2: 94 3: 87 4: 96 5: F6 6: 14
1: 89 2: 94 3: 87 4: 87 5: E7 6: C0
1: 8A 2: 94 3: 87 4: 88 5: E8 6: F0
1: 8A 2: 94 3: 87 4: 88 5: E8 6: AE
1: 8A 2: 94 3: 87 4: 87 5: E7 6: 42
1: 8A 2: 94 3: 87 4: 88 5: E7 6: 62
1: 8A 2: 94 3: 88 4: 88 5: E7 6: 47
1: 8A 2: 94 3: 87 4: 89 5: E7 6: 63
1: 8A 2: 94 3: 88 4: 89 5: E7 6: 07
1: 8B 2: 94 3: 88 4: 89 5: E7 6: A6
1: 8B 2: 94 3: 87 4: 88 5: E7 6: D2
1: 8B 2: 94 3: 96 4: 88 5: E8 6: 7E
1: 8B 2: 94 3: 89 4: 88 5: E8 6: BA
1: 8B 2: 94 3: 87 4: 87 5: E8 6: BE
1: 8B 2: 94 3: 96 4: 94 5: E7 6: 12

[RP6BOOT]

[READY]
Das erste Byte links/rechts Analogstick, Byte 2 ist Vor und Zurück. Am Ende werden noch die Tasten gedrückt. Das sieht doch vielversprechend aus. Ich denke, ich kann mich ans dekodieren ranmachen :)

Gruß

mic