Hast Du die Pullups mal auf 1K gesetzt. Ich benutze generell 1K bei 400 KHz.
Hast Du die Pullups mal auf 1K gesetzt. Ich benutze generell 1K bei 400 KHz.
das ist aber sehr weit außerhalb vom Standard, zumal der Due schon eingebaute Pullups hat (nur mit denen allein geht es aber auch nicht). Aber ich kann 2k2 mal am Due probieren - Momentchen...
- - - Aktualisiert - - -
update:
auch kein Unterschied
Ich denke, das einzige was hilft ist, wenn hier jemand , der selber die Hardware hat, es bei sich selber testet.
Geändert von HaWe (08.04.2019 um 16:37 Uhr)
Ich sehe grad, Klebwax erwähnte schon:
Das war auch meine Vermutung gewesen."Wenn ich mich recht erinnere, ist der Nunchuk pingelig, wenn das letzte Byte nicht mit NAK quittiert wird. Er bleibt dann hängen und blockiert den Bus."
Wie das bei deinem Code genau abläuft lässt sich schlecht nachvollziehen, das kommt ja aus einer Bibliothek.
Bleibt wohl wirklich nur jemand übrig, der es schon lauffähig geschaft hat.
Ein Versuch war es wert.
Siro
ja klar, danke, die 2 Widerstände zu wechseln war ja kein Aufwand
Mit I2C Steuer-Code kenne ich mich allerdings überhaupt nicht aus.
Ich hab hier auch noch etwas gefunden.
https://oscarliang.com/wii-nunchuck-arduino-tutorial/
Nach jedem kompletten Empfang ruft er anscheinend diese Funktion auf,
sonst funktioniert die Synchronisation wohl nicht.
Das spricht irgendwie dafür, dass der nunchuck sich "verheddert"Code:void NunC_SendNextByteRequest() { // I don't know why, but it only works correct when doing this exactly 3 times // otherwise only each 3rd call reads data from the controller (cnt will be 0 the other times) for(byte i = 0; i < 3; i++) { Wire.beginTransmission (WII_NUNCHUCK_TWI_ADR); // transmit to device 0x52 Wire.send (0x00); // sends one byte Wire.endTransmission (); // stop transmitting } }
Siro
Geändert von Siro (08.04.2019 um 17:32 Uhr)
was soll ich davon wann und wo aufrufen, bzw. wie sieht dann mein neuer Komplett-Code aus?
der Autor bezieht sich allerdings auch auf AVRs, und mit AVRs klappt es ja bei mir mit dem obigen Code von uxomm - nur nicht mit ARMs...![]()
Ich muss mich wohl entschuldigen HaWe,
ich hatte das Problem nicht (eigentlich garicht) richtig verstanden (schäm)
Es tritt nur auf, wenn dein DUE mit dem nunchuk verbunden wird.
Die anderen I2C Chips am DUE laufen einwandfrei.
Der nunchunk am AVR hingegen läuft auch wiederum einwandfrei.
Der Scanner zwischen DUE und nunchuk laufen auch richtig.
ABER: jedoch sieht das nur so aus weil x01...x07 nicht sein dürfte.
Ich grüble schon ne Weile woran das liegen kann.
Um den I2C BUS zu scannen gibt es 2 Möglichkeiten,
mit Read oder mit Write, das könnte ein Problem werden.
Eventuell scannt die AVR Lib anders als die DUE Lib
Kannst Du mal das Scannen ausklammern, vielleicht passiert dabei irgendeine Schweinerei.
Vielleicht haben die sich bei Nintendo da irgendwas implementiert, man weis es ja nicht.
Ich weis nicht ob Du das beim Starten generell machst.
Oder nächster Versuch, gibt das Scannen am AVR auch die 0x1..0x7 raus ?
Siro
Geändert von Siro (08.04.2019 um 19:49 Uhr)
Lesezeichen