Zitat Zitat von Pali64 Beitrag anzeigen
Ist nur richtig bei Asynchronem Betrieb.

Werden die Servos in Synchronbetrieb geschaltet, Verwenden sie den Stabilen I²C Clock...
Erst mal etwas zu den Begriffen, in der Datenkommunikation wird eine Übertragung als synchron bezeichnet, wenn sie sowohl Daten als auch Takt überträgt. Nach diese Kriterien ist ein UART asynchron, SPI und I2C sind synchron. Der Begriff "Asynchronem Betrieb" bei I2C ist verwirrend.

Bei einer synchronen Übertragung gibt es eigentlich keine wirkliche Übertragungsfrequenz, jedes Bit hat sein eigenes Timing. Das einzige, was man angeben kann, ist eine maximale Bitrate indem man die minimale Low-Zeit und die minimale High-Zeit der Spezifikation aufaddiert. Das Timing der Bits bei I2C funktioniert so: Der Master setzt SCL auf Low und wartet die minimale Low-Zeit ab. Dann läßt er das Signal los (open Collector) und wartet, das das Signal High wird. Wie lange es dauert, bis das Signal High wird, hängt zum Mindesten mal davon ab, wie groß die Lastkapazität des Busses im Verhältnis zu den Pullups ist. Ab dann wartet er auf jeden Fall die minimale High-Zeit ab, bevor er wieder ein Low ausgibt. Aus dieser Beschreibung ist ersichtlich, daß es eigentlich keine feste Frequenz bei I2C gibt. Das kann man auch leicht nachvollziehen: man betreibt I2C mal mit einem kurzen Kabel und mal mit einem längeren Kabel, und damit einer größeren Kapazität. Die Frequenz, eigentlich die Datenrate, die man dabei messen kann, unterscheidet sich.

(Das heißt der I²C Clock muss während der Fahrt Aktiv bleiben, bis der Servo seine Endposition Quittiert) Dies ist bei Verwendung von Mehreren Servo's, grad in einem Roboterarm wichtig, den nur so kann der Arm auch beim zeichnen z.B. eines Kreises, 100% immer exakt die gleiche "Fahrt" Garantieren (auch Ohne teurem und Platz fressendem Quarz im Servo)
Du willst also aus dem I2C Takt eine Königswelle machen. Nun sieht aber die I2C Spec nicht vor, daß der Takt anliegt, wenn keine Daten übertragen werden. Und selbst wenn man mehrere Frames hintereinander startet, garantiert niemand, daß das Timing von Start und Stop Conditions sich nahtlos in das Timing der anderen Bits einfügt. Die I2C Hardware in den Prozessoren, die ich so kenne, bieten da keine Unterstützung.

Den I2C Takt als Königswelle zu nutzen, halte ich für entweder nicht machbar oder es kommt etwas heraus, das man nicht I2C nennen sollte. Mindestens um die Anwender, die I2C kennen und die Spec gelesen haben, nicht zu verwirren.
Im Asynchronem Betrieb ..
Nochmal: aus Sicht der Datenübertragung ist I2C ein synchroner Bus.

MfG Klebwax