hspecht74
25.02.2009, 10:57
Hallo,
ich habe scheinbar ein Problem mit der I2C Geschwindigkeit über RS232 mit dem RN-PC->I2C Interface.
Der Aufbau für meinen Roboter sieht so aus:
Steuer-PC --> TCPConnection --> OnBoard-PC (derzeit zum Testen ein Notebook) --> PC->I2C Interface --> RNMotor
Am Steuer-PC habe ich einen Joystick angeschlossen, über den die Motoren am RN-Motor gesteuert werden sollen.
Kommt ein Befehl vom Steuer-PC am Notebook an, wird dieser dort ausgewertet und an die I2C-Library weitergeleitet. Ausserdem wird er im Konsolenfenster angezeigt. Das Problem ist, dass die Ausführung der I2C Befehle elendig lange dauert. Ich habe noch nicht genau gemessen, aber einmal mit dem Joystick "Gas geben" und sofort wieder loslassen erzeugt bei dem eingestellten Abfrageintervall des Joysticks ca. 6-8 zu übertragende Befehle. Die Ausführung auf dem Notebook inkl. I2C-Senden dauert für diese Befehle > 1 Sek., d.h. wenn ich den Joystick losgelassen habe kommt erst mit merklicher Verzögerung der Stop-Befehl am Motor an, auch die Ausgabe im Konsolenfenster dauert dementsprechend lange. Kommentiere ich in der SW auf dem Notebook die I2C-Send-Befehle aus, lässt sich dagegen keine Verzögerung mehr feststellen.
Die I2C-Library ist eine 1:1 Portierung nach C# aus dem Beispielprogramm, das mit dem PC->I2C Interface mitgeliefert wird. Die Delays habe ich dabei schon entfernt. Die Kommunikation klappt fehlerfrei, nur eben grottenlangsam.
Hat jemand diesen Effekt auch schonmal beobachtet und weiß vielleicht wie man da Abhilfe schafft? So wie es im Moment läuft brauche ich da ja gar nicht weitermachen...wenn später Sensordaten in kurzen Intervallen gesendet werden sollen etc. wirds ja nich besser.
Ich hoffe jemand hat eine Idee.
Hinrich
ich habe scheinbar ein Problem mit der I2C Geschwindigkeit über RS232 mit dem RN-PC->I2C Interface.
Der Aufbau für meinen Roboter sieht so aus:
Steuer-PC --> TCPConnection --> OnBoard-PC (derzeit zum Testen ein Notebook) --> PC->I2C Interface --> RNMotor
Am Steuer-PC habe ich einen Joystick angeschlossen, über den die Motoren am RN-Motor gesteuert werden sollen.
Kommt ein Befehl vom Steuer-PC am Notebook an, wird dieser dort ausgewertet und an die I2C-Library weitergeleitet. Ausserdem wird er im Konsolenfenster angezeigt. Das Problem ist, dass die Ausführung der I2C Befehle elendig lange dauert. Ich habe noch nicht genau gemessen, aber einmal mit dem Joystick "Gas geben" und sofort wieder loslassen erzeugt bei dem eingestellten Abfrageintervall des Joysticks ca. 6-8 zu übertragende Befehle. Die Ausführung auf dem Notebook inkl. I2C-Senden dauert für diese Befehle > 1 Sek., d.h. wenn ich den Joystick losgelassen habe kommt erst mit merklicher Verzögerung der Stop-Befehl am Motor an, auch die Ausgabe im Konsolenfenster dauert dementsprechend lange. Kommentiere ich in der SW auf dem Notebook die I2C-Send-Befehle aus, lässt sich dagegen keine Verzögerung mehr feststellen.
Die I2C-Library ist eine 1:1 Portierung nach C# aus dem Beispielprogramm, das mit dem PC->I2C Interface mitgeliefert wird. Die Delays habe ich dabei schon entfernt. Die Kommunikation klappt fehlerfrei, nur eben grottenlangsam.
Hat jemand diesen Effekt auch schonmal beobachtet und weiß vielleicht wie man da Abhilfe schafft? So wie es im Moment läuft brauche ich da ja gar nicht weitermachen...wenn später Sensordaten in kurzen Intervallen gesendet werden sollen etc. wirds ja nich besser.
Ich hoffe jemand hat eine Idee.
Hinrich