Ich würde gern die wii motion plus (WMP) an meinen ATmega8 anschließen und die Daten auslesen, programmiert in Bascom.
Links:

Für das Arduino wurde bereits ein Programm geschrieben, welches die Daten der WMP ausliest.
Analog zu dem Bascom-Programm für das Nunchuk, habe ich versucht ein Programm in Bascom zu schreiben.

Die Nunchuk-Initialiserung ist auskommentiert, da ich erstmal nur die WMP anschließen möchte.

Code:
$regfile = "m8def.dat"                ' Mega8
$crystal = 14745600                   ' takt mit 14.745600 MHz

$lib "i2c.lbx"
Config Scl = Portb.5                  ' Ports fuer I2C-Bus
Config Sda = Portb.4
Config Twi = 400000
I2cinit
Twcr = &B00000100                     ' I2C-Einstellung

Enable Interrupts

Dim Buffer(6) As Byte
Dim Send1 As Byte
Dim Send2 As Byte

 Gosub Wmp_init
 'Gosub Nunchuk_init                                     

Waitms 1000

Do
  Gosub Read_data
Loop

Wmp_init:
    I2cstart
    I2cwbyte &HA6
    I2cwbyte &HFE                     ' sends memory address
    I2cwbyte &H04                     ' sends sent a zero.
    I2cstop
    Gosub Send_zero
Return

Nunchuk_init:
    I2cstart
    I2cwbyte &HA4
    I2cwbyte &H40                     ' sends memory address
    I2cwbyte &H00                     ' sends sent a zero.
    I2cstop
    Gosub Send_zero
Return

Send_zero:
   I2cstart
   I2cwbyte &HA4
   I2cwbyte &H00                      ' sends one byte
   I2cstop
   Waitms 1
Return

Read_data:
   Buffer(1) = 0
   I2creceive &HA4 , Buffer(1) , 0 , 6  ' empfängt 6 Bytes
   Send1 = Buffer(2)                  ' wird später gesendet
   Send2 = Buffer(3)                  ' wird später gesendet
   Gosub Send_zero
Return
Wie das Arduino Programm soll mit WMP_init die WMP initialisiert werden, indem es 0x04 an 0xA600FE sendet und dann wird bevor Daten gelesen werden, immer eine 0 an 0xA4 gesendet (wie beim Nunchuk) und dann 6 Bytes mit I2CReceive aus 0xA4 ausgelesen.

Die Platine ist ein Eigenbau, angeschlossen sind sowohl WMP als auch das Nunchuk (direkt an der WMP) und an beiden Erweiterungen liegen 5V an. Der Code funktioniert für das Nunchuk, wenn nunchuk_init ausgeführt wird und wmp_init nicht. Wenn beide Initialisierungen ausgeführt werden, funktioniert auch das Nunchuk nicht. Bei wiibrew.org steht, dass sich die Slaveadresse von 0xA6 zu 0xA4 ändert, sobald die wmp initialisert wird, das könnte der Grund für das ausfallen des Nunchuk sein, da beide dann dieselbe Adresse haben.

Ich habe noch keine Daten von der WMP erhalten können. Weiß jemand, woran das liegen kann?

Hat das schon mal jemand versucht?