Hallo,

in letzter Zeit habe ich mich etwas in die Aktivierung des Passthrough-Modes des WMP (und Nunchuk) eingelesen. Gestern Abend hab ich dann mal beide Teile auf je eine eigene Platine mit LM317 gelötet. Jedes einzelne Modul funktioniert auch bestens, nur sobald ich in den Passthrough Modus will, bekomme ich einen Fehler bei der I2C Kommunikation. Habe mir schon versch. Programme im Arduino-Forum (z.b. von DogP) angesehen, welche scheinbar alle funktionieren! Habs dann mal in Bascom versucht, aber leider gehts nicht. Die ersten gesendeten Befehle zur Initialisierung funktionieren noch (Error = 0), aber das auslesen der 6 Bytes macht mir irgendwie Probleme (Error = 1). Ich kann mir mittlerweile nicht mehr erklären, wo der Fehler liegen könnte, zumal die Module seperat ja funktionieren....
Hier mal mein Code:
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$framesize = 80
$hwstack = 80
$swstack = 80


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Config Lcdbus = 4
Initlcd
Cls
Cursor Off Noblink

Locate 1 , 1
Lcd "WMP + NUNCHUK"


$lib "I2C_TWI.LBX"
Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 100000
I2cinit



Dim Tmp As Byte
Dim Pos_x As Byte
Dim Pos_y As Byte
Dim Acc_x As Byte
Dim Acc_y As Byte
Dim Acc_z As Byte
Dim Buttons As Byte
Dim Buffer(6) As Byte
Dim Xid As Byte

Buffer(1) = 0
Buffer(2) = 0
Buffer(3) = 0
Buffer(4) = 0
Buffer(5) = 0
Buffer(6) = 0



Waitms 200



'##############
'INITIALISIEREN
'##############


I2csend &H53 ; &HFE ; &H05

Locate 2 , 1
Lcd "ERROR: " ; Err

Waitms 100

I2csend &H53 ; &HF0 ; &H55

Locate 2 , 1
Lcd "ERROR: " ; Err

Waitms 100

I2csend &H52 ; &HFA

Locate 2 , 1
Lcd "ERROR: " ; Err

Waitms 100


'Wire.requestFrom (0x52,6);
'Outbuf[0] = Wire.receive() ; Serial.print(outbuf[0] , Hex) ; Serial.print( " ");
'Outbuf[1] = Wire.receive() ; Serial.print(outbuf[1] , Hex) ; Serial.print( " ");
'Outbuf[2] = Wire.receive() ; Serial.print(outbuf[2] , Hex) ; Serial.print( " ");
'Outbuf[3] = Wire.receive() ; Serial.print(outbuf[3] , Hex) ; Serial.print( " ");
'Outbuf[4] = Wire.receive() ; Serial.print(outbuf[4] , Hex) ; Serial.print( " ");
'Outbuf[5] = Wire.receive() ; Serial.print(outbuf[5] , Hex) ; Serial.print( " ");

I2creceive &H52 , Buffer(1) , 0 , 6                         'Ab hier geht nichts mehr!!!

Locate 2 , 1
Lcd "ERROR: " ; Err


Xid = Buffer(1) + Buffer(2)
Xid = Xid + Buffer(3)
Xid = Xid + Buffer(4)
Xid = Xid + Buffer(5)
Xid = Xid + Buffer(6)

Locate 2 , 10
Lcd "ID: " ; Xid

Wait 1



Waitms 100

I2csend &H52 ; &H08

Locate 2 , 1
Lcd "ERROR: " ; Err

Waitms 500

Gosub Send_zero

Waitms 500


Cls



Do


'Send_zero() ; / / Send The Request For Next Bytes
'Delay(100);
'Wire.requestfrom(0x52 , 6);
'Outbuf[0] = Wire.receive();
'Outbuf[1] = Wire.receive();
'Outbuf[2] = Wire.receive();
'Outbuf[3] = Wire.receive();
'Outbuf[4] = Wire.receive();
'Outbuf[5] = Wire.receive();

Gosub Send_zero
Waitms 1
I2creceive &H52 , Buffer(1) , 0 , 6
'I2cstart
'I2cwbyte &H52
'I2crbyte Buffer(1) , Ack
'I2crbyte Buffer(2) , Ack
'I2crbyte Buffer(3) , Ack
'I2crbyte Buffer(4) , Ack
'I2crbyte Buffer(5) , Ack
'I2crbyte Buffer(6) , Nack
'I2cstop

Locate 1 , 1
Lcd Buffer(1) ; ":" ; Buffer(2) ; ":" ; Buffer(3) ; "  "
Locate 2 , 1
Lcd Buffer(4) ; ":" ; Buffer(5) ; ":" ; Buffer(6) ; "  "



Loop


Send_zero:
  I2csend &H52 ; &H00
Return

End
Hat jemand evtl. schonmal was mit dem Passthrough Modus gemacht und könnte mir evtl. ein bisschen unter die Arme greifen? Ich weiß momentan nicht mehr weiter, da ich schon so ziemlich alles ausprobiert habe. Natürlich habe ich die WMP gemäß http://radio-commande.com/wp-content...NK_wiring1.jpg angeschlossen.

Vielen Dank & Gruß
Chris