Hallo,

wenn mal irgendwo keine Kommentare da sind, dann sind es meist "sprechende" Namen für die Variablen und Funktionen die sich von selbst erklären.
Aber wenn Du fragen zu einem bestimmten Teil hast - dann kannst Du das hier natürlich gerne posten!


> Hmm wie isn das, wenn ich den RP6 über den M32
> steuern will, was brauch ich denn da alles?

Du musst dich eigentlich gar nicht großartig mit dem I2C Bus befassen wenn Du das nicht willst - nimm halt die fertige
RP6Control_I2CMasterLib.h und .c aus dem Example10_Move2.

Dann kannst Du den Roboter mal abgesehen von ein zwei kleinen Unterschieden die aber in den Kommentaren stehen fast so steuern als wäre der I2C Bus gar nicht da.
Also move, rotate, moveAtSpeed, changeDirection usw. alles wie gehabt.
setLEDs und setRP6LEDs ist ein kleiner Unterschied.
updateStatusLEDs funktioniert genau wie beim Mainboard auch.

Die Funktionen heissen also *fast* alle genauso wie in der BaseLib und funktionieren auch genauso. Einfach in der Hauptschleife immer diese beiden:
task_checkINT0();
task_I2CTWI();

Funktionen aufrufen, dann wird alles automatisch gemacht.

OK - nur die größeren Sensordaten (alles was nicht einfach nur 0 oder 1 wie ACS und Bumper ist) muss man bei Bedarf abgleichen.
s. getAllSensors() und getLightSensors() als Beispiele wie man das macht.
Die Variablen heissen dann auch genauso wie in der BaseLib.
Also adcBat, adcMotorCurrentLeft,... usw. alles identisch.


Du musst natürlich das I2CSlave Programm in den Controller auf dem Mainboard laden damit das alles funktioniert.

Btw. da ist mir gerade noch aufgefallen das im Example10_Move2 Beispiel die setRP6LEDs noch "inline" deklariert ist. Das klappt mit der neuesten WinAVR Version ja leider nicht mehr. Einfach das inline in beiden Dateien (.c und .h) löschen dann geht es. Wird demnächst behoben.
Mit den 2007er Versionen von WinAVR sollte es auch so funktionieren.

MfG,
SlyD