Forum: Mikrocontroller und Digitale Elektronik Latenzzeit FTDI COM-USB


von Alexander H. (ill_son)


Lesenswert?

Hallo,

ich habe eine Elektronik, auf der ein FTDI USB-Seriell Wandler verbaut 
ist. Um mal eine Abschätzung für dessen Latenzzeit zu erhalten, setze 
ich ein Port-Pin, sende ich ein paar Zeichen, sende bei Empfang dieser 
Zeichen sofort etwas zurück und lösche das Port-Pin bei Empfang in der 
Elektronik. Auf dem Rechner läuft ein kleines Programm, dass ich in .NET 
geschrieben habe. Die Daten lese ich per Event aus. Mal davon abgesehen, 
dass die ermittelten Zeiten um den Faktor 5-6 streuen (2,5ms bis etwa 
15ms), möchte ich gern wissen, ob ich das Ergebnis auch auf andere 
(ähnliche?) Rechner übertragen kann oder ob die Bedienung des Ports von 
der Performance der Hardware und irgendwelchen 
Betriebssystemeinstellungen äbhängt. Ich habe gerade keinen anderen 
Rechner zur Hand. Windows XP oder neuer würde ich mal als Betriebssystem 
voraussetzen.

Grüße, Alex

von Clemens L. (c_l)


Lesenswert?

Alexander H. schrieb:
> ob die Bedienung des Ports von der Performance der Hardware und
> irgendwelchen Betriebssystemeinstellungen äbhängt.

Da gibt es zum Beispiel SerialPort.ReadTimeout (und entsprechende 
Einstellungen bei allen anderen Sprachen, Treibern, und 
Betriebssystemen).

Wenn dein Rechner gerade nichts zu tun hat, schläft die CPU; das 
Aufwecken würde aber nicht mehrere Millisekunden dauern.

Das Problem ist nicht so sehr die Geschwindigkeit des Rechners, sondern 
wie schnell er dazu kommt, dein Programm auszuführen. Du könntest 
probieren, Process.PriorityClass hochzudrehen.

von Wolfgang R. (portside)


Lesenswert?

Nachschauen FTDI beschreibt es für die eigenen Produkte
Zeitscheiben, Polling  und alles andere was USB langsam macht

www.ftdichip.com/Documents/AppNotes/AN232-04.pdf

von Alexander H. (ill_son)


Lesenswert?

Hallo Clemens,

vielen Dank für die Antwort. Ich möchte die Zeit gar nicht verbessern. 
Grundsätzlich benötige ich eine Abschätzung für die Zeit vom Verlassen 
des UART der Elektronik bis die Daten in der PC-Software angekommen 
sind. Das ist sozusagen meine Unschärfe, mit der ich leben muss. Da ich 
das nicht messen kann, habe ich den oben beschriebenen Weg gewählt und 
Daten hin und her gesendet. Dabei habe ich nun festgestellt, dass die 
Zeit ziemlich stark variiert und mich nun gefragt, ob das bei anderer 
Systemkonfiguration des Rechners noch schlechter/besser wird. Momentan 
bin ich bei einem zehntel dessen, was ich verschmerzen kann, hin und 
zurück wohlegemerkt. Soweit ist ers mal alles gut.

Grüße, Alex

von Alexander H. (ill_son)


Lesenswert?

Hallo Wolfgang,

vielen Dank.

von Clemens L. (c_l)


Lesenswert?

Alexander H. schrieb:
> Dabei habe ich nun festgestellt, dass die
> Zeit ziemlich stark variiert und mich nun gefragt, ob das bei anderer
> Systemkonfiguration des Rechners noch schlechter/besser wird.

Wenn dein Programm lange nichts gemacht hat und gerade ein Backup oder 
Virenscanner läuft, dann ist es möglich, dass dein Programm auf die 
Platte ausgelagert wurde. Wegen der anderen Plattenzugriffe könnte es 
dann vielleicht erst nach mehreren Sekunden wieder ausgeführt werden.

von Alexander H. (ill_son)


Lesenswert?

Solche "Extremsituationen würde ich mal ausschließen". Die eigentliche 
Software wird in der Regel nur gestartet, wenn auch damit gearbeitet 
wird. Das Dokument von Wolfang ist aber bezüglich der Problematik recht 
aufschlussreich.

Grüße, Alex

von Pandur S. (jetztnicht)


Lesenswert?

Du kannst dem PC kein spezifisches Zeitverhalten zusagen. Weshalb ist 
die Zeit wesentlich, und was soll das Ganze?

Allenfalls muss man der externen Hardware erweiterte Funktionalitaet 
zuschreiben.

Wenn meine (selbstgebaute) externe Hardware mit dem PC kommuniziert, so 
gehe ich von gar keinem Timing aus. Die Hardware muss ihre 
Funktionalitaet von selbst erfuellen, der PC dient nur dem Interface 
zwischen Mensch und Maschine. Falls es eine Sicherheitfunktion 
erfordert, zB dass eine Heizung nicht immer laeuft, so hat die Hardware 
eine Timeoutfunktion. Wenn sich der PC nicht innerhalb meldet wird 
abgeschalten. Der PC kann ja auch keine Zeit haben, am Booten sein, oder 
sonstwas.

von Alexander H. (ill_son)


Lesenswert?

So richtig prall finde ich das auch nicht, ist aber Kundenwunsch. In der 
Hardware läuft im uC ein Timer, der durch eine recht präzise RTC extern 
getaktet wird. Wunsch ist, dass beim Reset des Timers per UART ein 
Kommando an den Rechner gesendet wird, damit "Synchronität" besteht. Man 
könne mit 200ms Versatz leben. Deshalb die Frage nach der Latenzzeit des 
FTDI. Mit dem Dokument von Wolfgang und dem, was ich probiert habe, kann 
ich zumindest auf die Umstände hinweisen.

Grüße, Alex

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.