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:
Die Ausgabe dazu in meinem Terminal: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
Egal ob der Nunchuk eingesteckt ist oder nicht, die Werte sind immer gleichI2C-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]
Vielleicht könnten die TWI-Profis mal drüberschaun. Ich versuche es nun erstmal in C mit der TWI-Libray des RP6...
Gruß
mic







Zitieren

Lesezeichen