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:
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.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
Vielen Dank & Gruß
Chris







Zitieren

Lesezeichen