-         

Ergebnis 1 bis 7 von 7

Thema: Nunchuck über i2c Ausleseprobleme (wohl Nunchukseitig)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2008
    Beiträge
    20

    Nunchuck über i2c Ausleseprobleme (wohl Nunchukseitig)

    Anzeige

    Hallo,

    ich bin am versuchen, einen Nindento Wii Nunchuck Controller an einem ATmega32 zu betreiben, leider scheint es nicht ganz richtig zu laufen...

    Ich bekomme die Daten wie auf http://www.wiili.org/index.php/Wiimo...ollers/Nunchuk ab 04a40040 (decrypted)

    Code:
    Wii-Nunchuck Test app...
    let's go!!!
         0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
       0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       1 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       2 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       3 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       4 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       5 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       6 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       7 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       8 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
       9 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      10 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      11 aa  0  0  0  0  0  0  0  0  0  0  0 a4 20  0  0
      12  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      13  0  0  0  0 ff ff ff ff ff ff ff ff ff ff  0  0
      14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      15  0  0  0  0  0  0  0  0  0  0  0  0  0  0 ff ff
      16 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      17 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      18 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      19 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      21 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      22 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      23 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      24 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      25 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      26 ff ff ff ff ff ff ff ff ff ff ff ff ff ff aa  0
      27  0  0  0  0  0  0  0  0  0  0 a4 20  0  0  0  0
      28  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      29  0  0 ff ff ff ff ff ff ff ff ff ff  0  0  0  0
      30  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      31  0  0  0  0  0  0  0  0  0  0  0  0 ff ff ff ff
      32 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      33 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      34 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      35 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      36 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      37 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      38 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      39 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      40 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      41 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      42 ff ff ff ff ff ff ff ff ff ff ff ff aa  0  0  0
      43  0  0  0  0  0  0  0  0 a4 20  0  0  0  0  0  0
      44  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      45 ff ff ff ff ff ff ff ff ff ff ff  0  0  0  0  0
      46  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
      47  0  0  0  0  0  0  0  0  0  0  0 ff ff ff ff ff
      48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      49 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      50 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      51 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      52 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      53 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      54 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      55 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      56 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      57 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      58 ff ff ff ff ff ff ff ff ff ff ff aa  0  0  0  0
      59  0  0  0  0  0  0  0 a4 20  0  0  0  0  0  0  0

    Das "aa 0 0 0 0 0 0 0 0 0 0 0 a4 20 0 0" scheint wohl eine TypeID zu sein oder so, also scheint die reine TWI-Implementation zu funktionieren.

    Ich glaube eher, dass ich irgendwas beim Wiimote Erweiterungsslot-Protokoll nicht verstanden habe:
    so wie ich das verstanden hab, muss folgendes geschen

    1. sende an 0x52 die 2 bytes 0x40 und 0x00
    loop{
    2. sende an 0x52 ein byte 0x00
    3. lese 6 bytes von 0x52
    }


    leider bekomme ich so immer nur 0xff zurück, und nun meine theorie: ich starte ab 04a40040 (0x40, 0x00) und bekomme dann immer 6 bytes, die natürlich 0xff sind...

    Hat jemand einen Tipp für mich?

    Dieser Thread http://www.roboternetz.de/phpBB2/zei...chuck&start=22 konnte mir leider auch nicht helfen

    Grüße Uli

    PS: Die oben genannten Ausgaben bekomme ich nur, wenn ich auf das 0x00 senden vorm lesen der 6 bytes verzichte...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    hast Du auch den Pegelwandler von 5-auf 3,3V dazwischen?
    Als ich den nicht drin hatte, bekam ich auch alle möglichen Werte zurück, erst mit der Pegelanpassung klappte es.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2008
    Beiträge
    20
    Hallo,
    ich betreibe den AVR bereits mit 3v3, also kann es daran nicht liegen...
    Ich hab's sogar mal halbreproduzierbar geschafft, die werte auszulesen, aber es ändert sich lediglich bei den Tasten was an den Werten!
    Grüße Uli
    Ps:auf welchem AVR hast du das damals implementiert?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Da es mit meinem RP6 (8MHz ATMega32) auch mit 5V recht gut funktioniert hatte scheint es nicht am Prozessor oder der Spannung zu liegen. Die TWI-Schreib/Leseadresse war bei meinen Versuchen unterschiedlich und 8bitig:
    'Const Nunchuck_write = &H52 ' Slaveadresse
    'Const Nunchuck_read = &H53
    Const Nunchuck_write = &HA4 ' Slaveadresse
    Const Nunchuck_read = &HA5
    Mit 0xA4/0xA5 hat's bei mir letztlich funktioniert, dass hängt aber wohl von der verwendeten TWI-Lib ab?
    Code:
          I2CTWI_transmitByte(0xa4, 0);                // Datenlesemodus starten 
          I2CTWI_readBytes(0xa5, &nunchuk_data[0], 6); // sechs Bytes lesen
    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2008
    Beiträge
    20
    Hallo,
    danke für eure Antworten, ich habe das Problem gefunden und beseitigt:
    ich hab bemerkt, dass ich nur müll (ff) bekomme, wenn ich zu schnell bin nach dem 0x00 senden.. also hab ich ein bisschen mit delay rumgespielt...
    effektiv mache ich jetzt folgendes:
    1. sende an 0x52 die 2 bytes 0x40 und 0x00
    loop{
    . 2. sende an 0x52 ein byte 0x00
    . 3. warte 200 µs (evtl auch weniger möglich, mit 100 gings netmehr)
    . 4. lese 6 bytes von 0x52
    . 5. auswerten und in variablen schreiben
    }
    Grüße Uli

    PS: das mit 0x52 vs 0x53 ist meiner Meinung nach einfach nur die Modus-Angabe (lesen oder schreiben), also ist 0x52 die ID, beim schreiben muss das letzte Bit auf 0 sein, zu lesen auf 1

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Prima, hast du schon eine Anwendung in Planung?

    btw:
    Das Initialisieren funktioniert jetzt, wichtig scheint zudem eine kurze Pause zwischen dem Senden der "0" und der Abfrage der Bytes zu sein.
    (aus http://www.roboternetz.de/phpBB2/zei...=389391#389391 :)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2008
    Beiträge
    20
    Hi Radbruch,

    schöner subtiler Hinweis von dir Ich hab das irgendwie überall überlesen... weiß auch net, wie mir das passiern konnte... nuja.. jetzt seh ich das quasi überall stehn :>

    Meine Anwendung ist erstmal recht spielerisch: ich werd es wohl mit einem BTM-222 irgenwie verheiraten.. bin nur noch am zweifeln, ob ich meinen Plan, den Nunchuck ganz zu lassen übern haufen werfen soll und versuchen soll, in das Gehäuse selber ne platine mit nem atmega48, dem btm und ner lion-zelle zu quetschen... aber ich glaub, das würde wohl zu knapp werden...

    Es könnte also z.b. für erste Tests mit dem Acclererometer mal meine PSX-Fernbedienung ersetztn oder so...

    Grüße Uli

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •