Hallo,
wir versuchen grade einen Nunchuck der Wii an einem ATmega32 auszulesen.
Leider bekommen wir immer nur 16 bei allen Bytes zurück.
Wir haben folgenden Code verwendet um es zu testen:
Code:'$regfile = "M8def.dat" ' the used chip '$crystal = 16000000 ' frequency used '$baud = 9600 $regfile = "M32def.dat" ' RP6 mit Mega32 $crystal = 16000000 ' 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
Lesezeichen