Nur die Schleife rausgenommen? Ich vermute mal (Glaskugel) das ist ein Stück Code aus dem i2c-Slave der Base.
Du nimmst aber nicht nur die Schleife raus .. du nimmst dem System auch die benötigte Zeit um die Daten aufzuarbeiten.
Die I2C Datenverarbeitung ist zeitkritisch. Wie so vieles andere an den RP6 Libs auch.
Mach doch einfach mal:
und probiere mit Werten für x von 0 bis ... keine Ahnung.. 100 .. was die Funktion macht wenn du x bei sendender Bake erhöhst.Code:void read_Register_30(void) { I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30... I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 1); // and read one register mSleep(x); IR_wert[0] = RP6data[30]; }
Eigentlich sollte sich experimentell ein Wert ermitteln lassen, ab wieviel x die bake gefunden bzw diese 004 übertragen wird.
Es würde mich auch nicht wundern, wenn Du bald die Erkenntnis hast, das sich die Motorsteuerung und die I2C slave lib jeweils als Zeitkritische Module sich im Prinzip gegenseitig in den Füßen stehen - weshalb es nicht ganz ist, das Base Slave Programm softwaremässig noch zu erweitern.
Gruß







Zitieren

Lesezeichen