Hallo Freunde (Hellmut)

Dieses Thread ist nun schon eine Weile still, hier meine Aufgabenstellung. Meine RN-Mega8 soll die Impulslaengen an den Servosteckplaetzen eines 8-Kanal-Empfaengers meiner F14 Fernsteuerung von robbe messen, die gemessene Laenge einer von 256 moeglichen Laengen zuordnen und dann wenn er feststellt das sich die Impulslaenge veraendert hat diese Aenderung an die RN-Control ueber I2C melden.

Ich teile die Impulslaengen zwischen 1ms und 2ms in 256 Schritte und trage in einer Tabelle fuer alle 8 Steckplaetze den aktuellen Wert ein, falls dieser sich geaendert hat. Da der Empfaenger die Impulse an die Servos 1 bis 8 sequentiell und direkt nach einander anlegt, muss ich im laengsten Fall mit 8x 2ms = 16ms plus einem Puffer fuer Variationen einer speziellen Hardware fuer die Impulslaenge reservieren. Das heisst ich habe in diesem Fall nur gute 3ms fuer sonstiges wie den I2C-Verkehr zur Verfuegung.

Wenn ich diesen Thread richtig lese, so muesste die RN-mega8 als I2C slave den I2C-Clock alle 20ms solange auf low halten um so sicherzustellen das die I2C Kommunikation steht bis die RN-mega8 Zeit hat? Ausserdem muesste der I2C Master durch diesen Vorgang nicht eingefroren werden.

Das macht fuer mein System keinen Sinn, da dadurch mein verteiltes System vermutlich lahm gelegt wird. Ich plane eine RN-Control und 3 der Fahrtregler von stupsi plus 2 mega8 Minimalsysteme zur Impulslaengenmessung plus 1x I2C zur Displaysteuereinheit alle ueber einen I2C Bus verbunden! Ich muss aber sicherstellen, dass alle 20ms Aenderungen an den Servosteckplaetzen im System weitervermittelt werden. Das Antwortverhalten des Systems auf Steuerbefehle des Benutzers an der Fernsteuerung muss verzoegerungsfrei wirken.

Habt ihr eine Idee? Ist vielleicht I2C nicht der beste Bus um die Impulslaengen an die RN-Control zu senden? Der Datensatz der Impulslaengenuebermittlung je Kanal wird wohl 3 Byte lang sein, 2 Byte (jedes Bit einem Kanal zugewiesen) 1 Byte um die Impulslaengeninfo zu kodieren. (Ich verwende einen 8-fach Multiprop der aus einem Proportionalkanal 8 proportionale Kanaele macht, daher 16 Bit fuer (8+8-1)

Hellmut aus dem Ausland