www.mikrocontroller.net

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


Autor: Bjoern B. (minkfeld)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian M. (sebastian_m)
Datum:

Bewertung
0 lesenswert
nicht 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-nunc...

>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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.