Wii Motion Plus per I2C auslesen (Atmega128)

OP #1530385
Lesenswert?
• ▲
▼
Hallo!
Ich möchte das Wii Motion Plus mit einem Atmega128 auslesen aber leider 
funktionniert schon die Initialisierung nicht. Nach [1] hat das WMP 
anfangs die Adresse 0x53. Man muss 0x04 ins Register 0xfe schreiben, 
damit es aktiviert wird und danach ändert sich die Adresse auf 0x52. 
Danach kann man nach einem bestimmten Ablauf die Daten auslesen. Leider 
bekomme ich schon beim Startbefehl fürs Schreiben nach 0x53 kein ACK 
zurück (per Oszi  überprüft). Habs mit 100 kHz und 400 kHz probiert, 
geht beides nicht. Code ist im Anhang. Als I2C Lib wird die von Peter 
Fleury verwendet, UART Lib ist selbst geschrieben. Liegt aber nicht an 
denen, denn wenn ich auf meinen I2C Kompass umstecke kann ich den mit 
der benötigten Routine problemlos auslesen. WMP ist auch richtig 
verkabelt, schon 10x durchgepiepst. Funktionnieren tuts auch noch, mit 
Wii getestet.
Leider finde ich ausser [1] keine wirklich brauchbaren Informationen um 
das WMP auszulesen. Bei [2] steht auch eine Menge aber da gehts primär 
darum, wie man die Extensions ausliest, wenn sie an die Wiimote 
angesteckt sind. Apropos, was hat die Schreibweise 0x(4)a600f0 bei [2] 
zu bedeuten ("The extension is initialised by writing 0x55 to 
0x(4)a600f0.")? Geht mir hierbei um das (4). Kapier nicht, was das 
bedeuten soll.

Hoffe ihr könnt mir helfen.

LG


[1] 
http://randomhacksofboredom.blogspot.com/2009/06/wii-motion-plus-arduino-love.html
[2] 
http://www.wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
Angehängte Dateien:
OP #1530905
Lesenswert?
• ▲
▼
Grrr
0x53 ist die Adresse (Initialisiert dann 0x52) aber natürlich ohne das 
R/W Bit. Also so gehts:
1
// Zum Initialisieren
2
i2c_start_wait(0xA6 + I2C_WRITE); // 0xA6 = 0x53 << 1
3
...
4

5
// Nach Initialisierung
6
i2c_start_wait(0xA4 + I2C_WRITE); // bzw + I2C_READ; 0xA4 = 0x52 << 1

Frohe Weihnachten!
OP #1531154
Lesenswert?
• ▲
▼
Ist derzeit nur eine Spielerei. Wie ich gelesen hab, dass das ganze Wii 
Zubehör einfach per I2C kommuniziert wollt ich das einfach mal testen.
Wird schon irgendwann irgendwo verwendet werden :)
Wenn mir gleich aufgefallen wäre, dass 0x53 eine irrsinnige I2C Adresse 
für die PF Lib Funktionen ist, da ungerade und demnach nicht um 1 
geshiftet, dann wäre das Demoprogramm in lediglich 30 Min erfolgreich 
getestet gewesen.

Das Nunchuck [1] würde ist übrigens auch nicht schlecht.
1x Joystick
2x Button
1x Accelerometer
Gibt diverse günstige Nachbauten im Netz. Wiimote Extension 
Verlängerungskabel gibts auch auf eBay, da hat man dann beide Seiten vom 
komischen Stecker die man auf eine Pfostenbuchse löten kann (so hab ichs 
gemacht), sonst kann man mit einem PCB oder, mit etwas Geschick, mit
Heißklebepistole und Stiftleisten einen Adapter bauen.
Wers kabellos will / braucht und ein paar Buttons und Funktionen mehr 
will kann gleich zur Wiimote greifen und die per Bluetooth auslesen. Hab 
ich auch schon gemacht, geht ganz einfach.


[1] 
http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Hardware_.28Nunchuk.29

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.