Forum: Mikrocontroller und Digitale Elektronik ATmega88 mit Nunchuk WII - Rückgabewert immer 0xFF


von Bjoern B. (minkfeld)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe jetzt schon ein paar nette Projekte mit nem Nunchuk + 
Controller gesehen und hab mich gestern mal dran gemacht meinen 
umzubauen.

Hardware: STK500 + ATMega88 + JTAGICEmkII + 8MHz Quarz
Betriebsspannung: 3,3V
Verbindungen: SDA(PC4) an Grüne Leitung Nunchuk mit 2,2kOhm Pullup
              SCL(PC5) an Gelbe Leitung Nunchuk mit 2,2kOhm Pullup


Software im Anhang:


Prinzipiell scheint die TWI Kommunikation zu funktionieren. Jedoch 
bekomm ich bei allen 6 Bytes immer nur 0xff als Wert zurück. Hab gelesen 
dass dieses Problem schon mehrere Leute hatten, jedoch ne genaue Ursache 
konnte keiner nennen.

Hat einer ne Idee was der Fehler sein könnte?


Gruß,
Mink

von Sebastian M. (sebastian_m)


Lesenswert?

ist zwar schon etwas älter, aber ich bin auch über das 0xff problem 
gestolpert.

geholfen hat mir diese seite hier:

http://123a321.wordpress.com/2010/02/07/using-nunchuck-over-i2c/

>Using Nunchuck over I2C
>The reading of the Nunchuck is similar to read of the motionplus.
>The biggest Problems are the timining errors. Since i used a 16MHz
>Oscillator my microcontroller an 400khz as my I2C speed, the
>communication was often to fast when reading the data. When this happens
>the nunchuck hangs and does nothing more.

>Motion Plus

>I2C Adress: 0xa4

>I2C Enable Register 0xf0 (Value 0×55)

>I2C Extension ID: 0xFA to 0xFF (0000 A420 0000)

>I2C Motion Read Register: 0×00 (6 bytes)

>The Nunchuck is first initialized writing 0×55 to Register 0xF0.
>After This step it might be needed to wait some cycles. The six bytes
>are aquisitioned by reading beginning at the register 0×00.
>the data can be deciffred by using the following code:

>nunchuck.stick_x = data[0]; //8bit value
>nunchuck.stick_y = data[1];
>nunchuck.acc_x = (data[2] <> 2) & 0x03); //10bit value
>nunchuck.acc_y = (data[3] <> 4) & 0x03);
>nunchuck.acc_z = (data[4] <> 6) & 0x03);
>nunchuck.button1 = data[5] & 0x01; //boolean
>nunchuck.button2 = data[5] & 0x02;

also hier scheint man nix weiter dekodieren zu müssen, mein nunchuk gabs 
für nen 5er in der bucht

grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.