Also das mit der Ansteuerung der Servos läuft wie folgt:
Alle Servo-Signalleitungen werden auf 1 gesetzt. 18 zähler werden laufend erhöht, sobald ein Vergleichswert aus dem Speicher erreicht ist, wird der entsprechende Ausgang auf 0 gesetzt. Die 18 Vergleichswerte(die Pulsdauer) wird in der zwischenzeit (die folgenden 18ms) berechnet. Ich habe ein paar komplexe mathematische formeln mit denen ich die 3D koordinaten jedes Beines auf die Winkel der drei Servos zurückführen kann. Da diese jedoch zu aufwendig zu berechnen sind, denn ein Winkel muss in einer ms berechnet werden, habe ich diese mit ein paar mathematischen Methoden für meinen Zahlenbereich angenähert. (+-4%) ich muss das nurnoch als programm schreiben und selbst erst einmal sehen, wie er zeitlich zurecht kommt. Die Koordinaten werden ihm später über I²C von einem anderen µController, der später auch die Auswertung der kommenden Sensoren und die Verhaltensberechnung vornimmt.

Dieser wird also nur über I²C mit Koordinaten gefütter, er rechnet diese um in Winkel, macht ein paar Kalibrierungsanpassungen für jeden Servo und erzeugt simultan alle Pulse. Er hat noch 7ADC kanäle, an denen ich vlt noch ein paar Sensoren hänge und die Daten über I²C bereit stelle.
Sollte die Umrechnung von Koordinate in Winkel zu viel Leistung ziehen, werden diese vlt. auch von dem anderen Master µController ausgeführt.

mfg Sirvivor