Wofür brauchst du denn das Nunchuk?
Also wenn du nur den Joystick brauchst ist hier ein Link:
http://www.conrad.de/ce/de/FastSearc...e&initial=true
Vieleicht kannst du damit ja etwas anfangen.
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
Wofür brauchst du denn das Nunchuk?
Also wenn du nur den Joystick brauchst ist hier ein Link:
http://www.conrad.de/ce/de/FastSearc...e&initial=true
Vieleicht kannst du damit ja etwas anfangen.
Geh mal mit der TWI-Frequenz von 400 runter auf 100kHz.
Die 400 haben bei mir auch nicht funktioniert, mit 100 läufts perfekt.
#ifndef MfG
#define MfG
Hmm ne das hat es leider nicht gebracht. Wenn ich mal diese Fehlerausgabe aktiviere dann kommt: "Fehler bei Init: 0" "Fehler beim null senden: 1" .Zitat von Jaecko
Die 1 lässt mich aufhorchen aber woran es da dann genau liegen soll kann ich mir nicht erklären aufgrund von mangelender TWI erfahrung
Clock und Data waren vertauscht aber wir empfangen weiterhin nur 16 und das bei allen 6 Bytes. Fehler bei Init und beim Null senden angebelich "0"
Könnte es sein, dass die Kabelfarben nicht stimmen aber wenn ja müsste durch ein einfaches vertauschen doch die Sach erledigt sein oder nicht?
Wir haben schon viel versucht aber wissen grade nicht wirklich weiter.
Könnte es sein, dass die Kabelfarben nicht stimmen aber wenn ja müsste durch ein einfaches vertauschen doch die Sach erledigt sein oder nicht?
Wir haben schon viel versucht aber wissen grade nicht wirklich weiter.
Hallo
Hier das Pinout meiner Nunchuck-Versuche:
rot - VDD (RP6 Pin1, XBUS 3/5)
weis - GND (RP6 Pin2, XBUS 1/2/14)
grün - SDA (RP6 Pin3, XBUS 12)
gelb - SCL (RP6 Pin4, XBUS 10)
(Angaben natürlich ohne Gewähr)
(Aus: https://www.roboternetz.de/phpBB2/ze...=464955#464955)
Aber das hast du vermutlich auch schon gefunden.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Jap, in der Tat habe ich den Nunchuck so beschaltet. Hmm so langsam mach ich mir über die Funktionsfähigkeit meines Gerätes gedanken. Leider habe ich auch momentan keinen zweiten da und den an einer Wii anschließen ist auch erschwert worden Hab halt gedacht knipse mal das Kabel ab. Denn wenn ihr alle sagt, dass es soweit richtig sein muss und laufen muss dann kommt ein Defekt schon in Frage denke ich.Zitat von radbruch
Geändert von oderlachs (24.02.2012 um 20:35 Uhr)
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Lesezeichen