Hallo,
Das Ding geht per I2C,
dazu könnte man von hier die Init-Routine verwenden:
https://www.roboternetz.de/wissen/in...r#Hardware_TWI
So, schnell zusammengetippt wie ich das verstanden hätte (nur mit Debugausgaben der Werte), deshalb ungetestet, auch weil ich keine Wii-Teile habe:
schaut aber interessant aus das TeilCode:$regfile = "M8def.dat" ' the used chip $crystal = 16000000 ' frequency used $baud = 9600 $lib "i2c_twi.lbx" ' Für Hardware TWI Config Scl = Portc.5 ' Ports fuer IIC-Bus Config Sda = Portc.4 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 = &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 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) Xor &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
Edit:
EOR/XOR Bug entfernt !
I2C-Adresse richtig








Zitieren

Lesezeichen