Das master/slave bezieht sich nur auf das I2C Protokoll... es steht nirgends, das ein (i2c)Slave strohdumm sein muss oder der Master alles erledigt. Natürlich kann (und soll) der Slave um funktionen erweitert werden die der Master z.B. nur "anstubst" oder die beiden sich sonst wie koordinieren.
Das is wie beim Menschen... das Großhirn ist auch nicht für Puls, Refelxe und körperinterne Abläufe zuständig. Das macht das Kleinhirn und noch kleinteiliger das Rückenmark. Aber es gibt auch da definierte Aufgaben und Protokolle dazwischen, welche den Ablauf steuern. In beide Richtungen und je nach Situation auch autark. Wenn Du mit dem Dicken Zeh wacklen willst, musst du dich nicht damit beschäftigen welche Muskeln dafür notwendig sind.. du wackelst einfach..den Rest macht dein Rückenmark. Und dein Gehirn bestimmt auch nicht den Neigungswinkel des Zehs wenn du gegen den Bettpfosten läufst... es tut einfach nur weh! Das sind alles einfache Signale welche dezentralisiert verarbeitet werden. Das kannst du auch mit der Base und einem m32 nachstellen. Wichtig dabei ist nur, das du auf beiden CPUs die Multitaskineigenschaften nicht blockierst. Auch da ein Beispiel: Wenn du einen im Tee hast, läufst du auch nicht mehr gradeaus
Deswegen muss man aber halt auch Laufzeitprobleme beachten, denn wenn der Slave nur wie blöde den I2C Bus oder ein Sensor bewacht und man selbst noch eigene Funktionen einbaut die nicht Task-konform sind, kann er kaum noch andere Aufgaben umzusetzen. Ich weis jetzt nicht im Detail wo das bei Dir der Fall sein könnte aber wenn der Bot irgendwo in einer Schleife hängt, werden Fahrbefehle zeitlich falsch abgearbeitet. Das sind eben keine Programmierfehler in dem Sinn, sondern eher logische oder konzeptionelle Fehler. Meiner Erfahrung nach am ehesten die Quelle für so Probleme wie "der bot macht nicht mehr was er soll obwohl ich an der Stelle nichts verändert habe."
Aber das mit dem verzetteln kenn ich auch zu gut.. ich drück mal weiter Däumchen für dein Projekt.
Gruß
Lesezeichen