Hallo Inka,

hast Du schon die RP6-M32 Beispielprogramme bis zuende angeschaut?
Da wird ziemlich genau das in ein paar Schritten zusammengebastelt.
Im Beispiel example_10_move2 hat man dann eine nahezu vollständige Abbildung der RP6Base Funktionen auf dem M32 Erweiterungsmodul. Die Funktionen heissen dann auch fast genau so - move, rotate, moveAtSpeed, ...

Und ja, die Kommandos die über den I2C Bus übertragen werden, werden auf dem Prozessor auf der RP6Base ausgeführt (Bewegungsbefehle...) und die Sensorik wird auch dort ausgewertet (ACS, Bumper usw. ) und bei Änderungen die M32 Erweiterung informiert.

In dem genannten Beispiel sind die Avoid und Escape Verhaltensmuster aus den normalen RP6Base Examples auf die M32 portiert worden.


> eine Funktion, meinetwegen „void master-slave(void)„ auszulagern

Die Funktion heisst zwar nicht maste-slave
aber die beiden hier
task_checkINT0();
task_I2CTWI();

zusammen machen denke ich in etwa das was Du meinst.
Wobei die allerdings indirekt einiges anderes auslösen was dann in anderen Funktionen abgearbeitet wird, z.B. in checkRP6Status...

MfG,
SlyD

PS:
Falls Du gemeint hast wie Du die oben genannten I2C_... Funktionen aus deinem eigenen Programm "raus" bekommst wegen Übersichtlichkeit - kannst die natürlich auch einfach mit in die RP6Control_I2CMasterLib.c mit reinpacken.
Die Watchdog Funktion ist allerdings Programmspezifisch weil die Ausgaben auf dem LCD macht also sollte die nicht in die Lib mit rein...