Hallo, ich habe ein wenig mit dem COM Port meines Rechner herum gespielt. Ich schalte per C# nur den RTS Port high low. Ohne irgendwelche Waits oder Timer. Ich denke kürzer geht es nicht und es müßte doch die maximale Frequenz dabei heraus kommen. private void button1_Click(object sender, EventArgs e) { serialPort1.Open(); while (true) { serialPort1.RtsEnable = true; serialPort1.RtsEnable = false; } wenn ich nun den eingebauten RS232 Port meines Rechners benutze, schaltet RTS etwa mit 10kHz. Benutze ich nun einen FT232 (FTDI) komme ich gerade auf 70Hz!! und das mit dem gleich Code auf dem gleichen Rechner. Wie kommt das? Kann ich das beschleunigen auf die wenigsten 10kHz der RS232. Eigentlich brauche ich 20kHz. Danke Andreas
>Benutze ich nun einen FT232 (FTDI) komme >ich gerade auf 70Hz!! Wie kommt das? Kann ich das beschleunigen auf die >wenigsten 10kHz der RS232. Nein, das kriegst du bei USB nicht hin.
Schade, würd mich mal interessieren warum? Trotzdem, Danke für Deine Antwort. Gruß Andreas
Der Grund ist einfach. Beim physikalischen RS232-Port kannst du mit einem Portzugriff direkt an einem Pin wackeln. Hierzu muss lediglich ein Byte an eine bestimmte Adresse geschrieben werden. Um ein Pin über USB zu setzen muss immer ein komplettes Datenpacket verschickt werden. Das dauert halt seine Zeit. Aus genau diesem Grund sind einfache Parallelport-ISP-Adapter nicht an einem USB-Port möglich (oder nur bedingt einsetzbar).
Andreas schrieb: > Schade, würd mich mal interessieren warum? Die Übertragung von Daten findet bei USB blockweise im 1ms-Zeitraster statt. -> die theoretisch maximale Frequenz wenn nur ein USB-Teilnehmer am gleichen Controller sitzt wäre 500 Hz. http://www.ftdichip.com/Support/Documents/AppNotes/AN232-04.pdf im Bit-Bang Mode des FTDI sollten unter gleichen Voraussetzungen (kein weiterer Busteilnehmer optimiertes Zusammenspiel von Betriebssystemtick 16ms? zu USB-ticks 1ms sowie optimierte Transferbuffergrößen) ca 30kHz drin sein. (1 ms * (64-2) Bytes). http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf Gruß Anja
ist ja interessant. Bei mir hängt mittlerweile einiges am USB Port. Danke für eure Antworten und die Links. Da werd ich noch ein bischen lesen. Gruß Andreas
Anja schrieb: > http://www.ftdichip.com/Support/Documents/AppNotes/AN232-04.pdf > > im Bit-Bang Mode des FTDI sollten unter gleichen Voraussetzungen (kein > weiterer Busteilnehmer optimiertes Zusammenspiel von Betriebssystemtick > 16ms? zu USB-ticks 1ms sowie optimierte Transferbuffergrößen) ca 30kHz > drin sein. (1 ms * (64-2) Bytes). > > http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf > > Gruß Anja Also ich hab jetzt schon etliche Projekte mit diesen Bausteinen realisiert (aktuell bin ich auch wieder an einem dran) und muss das zumindest anzweifeln. Ein USB-Paket braucht auf meiner Kiste mind. etwa 80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar unter guten Voraussetzungen. Ausserdem ist es sinnlos, sich auf so etwas verlassen zu wollen, selbst wenn es auf der eigenen Kiste funktioniert. Man weiss nie, unter welchen Bedingungen der Endbenutzer das Geraet einsetzen will, vielleicht hinter zwei Hubs mit ein dutzend anderer Geraete. Man sollte also immer vom Schlechtfall ausgehen wenn man was zuverlaessiges machen will. Greets, Michael P.S. Diese ganzen FTDI-Chips sind ne ziemliche Magie, zuverlaessig is auch was anderes ;)
Michael G. schrieb: > Ein USB-Paket braucht auf meiner Kiste mind. etwa > 80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar > unter guten Voraussetzungen. Da machst Du irgendwas falsch das wären ja noch nicht mal 9600 Baud. Du darfst die Bytes nicht einzeln auf die Reise schicken sondern in vielfachen von 64*62 = 3968 Bytes bei korrekt eingestellter Transferbuffergröße im D2XX Treiber-Mode. Siehe auch: http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-03_D2XXDataThroughput.pdf http://www.ftdichip.com/Support/Documents/AppNotes/AN232B-04_DataLatencyFlow.pdf Gruß Anja
Anja schrieb: > Michael G. schrieb: >> Ein USB-Paket braucht auf meiner Kiste mind. etwa >> 80ms (hab es irgendwann mal gemessen) um zu uebertragen werden und zwar >> unter guten Voraussetzungen. > > Da machst Du irgendwas falsch das wären ja noch nicht mal 9600 Baud. > Du darfst die Bytes nicht einzeln auf die Reise schicken sondern in > vielfachen von 64*62 = 3968 Bytes bei korrekt eingestellter > Transferbuffergröße im D2XX Treiber-Mode. Haha... Du bist mir ne echte Heldin :P Das bringt's Dir beim Bitbanging bzw. bei der Flusskontrolle natuerlich voll. Mit meiner letzten Methode hab ich den FT232 sogar schon bei 1MBaud zuverlaessig zum Laufen gebracht. Wer ueberbietet mich? P.S. Den D2XX-Treiber verwende ich nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.