@Fabian:
Ich fände es schon um einiges besser, wenn die Base ihre sachen macht (Motoren, BatÜberwachung, RC5, ACS, Bumper, Lichtsensoren und ab nächster Woche auch noch Abstandserkennung hinten via ADC0&1).
Dazu soll sie noch alle daten auf den I2C schreiben (damit der M32 darauf reagieren kann) und gegebenenfalls, wenn ein Interrupt (?) von der M32 kommt, darauf reagieren.
Da müssen wir mal die Programmideen sortieren:

RP6Base (I2C-Slave Programm):
-> Die Motoren
Die Motoren werden geschwindigkeits-geregelt und können vollständig über I2C gesteuert werden. Was du willst (?) wäre eine Doppelfunktion: Fremdsteuerung bei Bedarf (über I2C von der M32) UND eine Eigensteuerung durch die Base. Teil 1 (Fremdsteuerung) funktioniert schon, die Eigensteuerung müßtest du selbst schreiben. Dazu gehört, dass du dir überlegst, auf WAS die (Motoren der) Base selbst reagieren soll(en) (ACS, Helligkeit, Bumper, ...) und in welchen Fällen die Steuerung von der M32 dazwischenfunken darf.

-> BatÜberwachung
Funktioniert jetzt schon und kann über I2C von der M32 gelesen werden. Was du willst (?) wäre eine Doppelfunktion: Lesen über I2C durch die M32 UND eigene Reaktion der Base auf die Ubat. Du müßtest jetzt überlegen, WIE die Base reagieren soll: Stoppen bei niedriger Ubat, Blinken der LEDs, Warnung über UART und müßtest das dann programmieren.

-> RC5
RC5 Empfang erfolgt schon durch das I2C-Slave-Programm und kann über I2C von der M32 gelesen werden. Was du willst (?) wäre auch eine eigene Reaktion der Base auf RC5. Du müßtest also überlegen, wie die Base auf die TV-Fernbedienung reagieren soll und das dann programmieren. Dazu must du festlegen, unter welchen Bedingungen evtl. die M32 sich einklinken soll und die Base nicht direkt auf RC5 agieren darf.

-> ACS, Bumper
Das ACS und die Bumper werden ausgewertet und können über I2C von der M32 gelesen werden. Du willst (?), dass die Base auch selbst auf das ACS und die Bumper reagieren kann. Das geht auch, aber du must ihr beibringen, wie sie auf das ACS, Bumper reagieren soll.

-> Lichtsensoren
Auch die können schon über I2C von der M32 ausgelesen werden. Wenn die Base selbst darauf reagieren soll, must du überlegen, was sie damit machen soll (zum Licht fahren oder in die Dunkelheit oder ...)

-> ADC0/1
Auch die ADC-Kanäle können schon von der M32 ausgelesen werden (I2C-Register 23..26). Wenn die Base selbst darauf reagieren soll, müßtest du programmieren, wie diese Reaktion aussehen soll.

-> Soll auf einen Interrupt von der M32 reagieren
Das muss sie gar nicht. Als Slave muss sie sowieso auf den Master hören und auf Nachrichten vom Master reagieren. Dazu gehört, dass man sich einen "Vokabelschatz" überlegt, den beide (Master und Slave kennen), d.h. der Slave muss wissen, wie er auf Kommandos vom Master reagieren soll. Dazu muss er auch noch die von dir gewünschte (?) Eigenintelligenz zurückstellen, wenn er Befehle vom Master annimmt. Das geht auch, muss aber genau überlegt und dann im Slave und Master programmiert werden.


Control M32 (Master - eigenes Programm):
-> Soll auf Daten von der Base reagieren
Naja, sicher müßte die M32 auch reagieren, aber eigentlich fordert sie ja selbst die Daten an und weiß dann ja, was sie damit machen will. Man müßte überlegen, wo die "Hauptintelligenz" sitzt. D.h. wer bestimmt, was gemacht werden soll: M32 oder Base oder abwechselnd? Wenn abwechselnd: Was sind die Regeln dafür?

-> Soll einen Interrupt an die Base schicken (die reagiert dann darauf)
Die M32 ist ja Master und braucht den Interrupt nicht. Sie kann einfach über I2C einen Befehl senden.


@Fabian:
Warum der lange und merkwürdige Text?
Als Anregung: Überleg dir evtl. noch einmal, was dein RP6 (mit M32 drauf) genau leisten soll. Dann ergibt sich die Aufgabenverteilung quasi automatisch.

Gruß Dirk