mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT245R Datenrate zum PC zu langsam


Autor: Reinhard D. (yum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mein System:
Pc mit c# programm <-> ft245r <-> cpld

ich verwende den ftd2xx treiber und betreibe den ft245r im normalen
fifo-mode, also nicht bit-bang.

das cpld macht nichts anderes, als immer, wenn txe# vom ft245r low ist,
das wr signal kurz H zu pulsen, um den internen buffer des ft245r zu
beschreiben. alle timings sind eingehalten.
soweit so gut, nur wenn ich mit meinem c# programm den buffer des
treibers zyklisch abfrage, sind dort immer nur ca. 2kbyte daten pro
sekunde drinnen. also ist mein bottleneck der transfer vom ft245r zum
pc.
schaue ich mir wr und txe# mit dem logic-analyser an, so werden nach dem
start rasch ca. 250 byte in den ft245r reingeschrieben, aber dann nur so
ca. 2 byte pro 1 ms (usb - time-slot???) - und txe# ist meistens H, was 
ja bedeutet, dass die übertragung vom internen buffer des ft245r zum pc 
hin ein bottleneck ist.

Komischerweise habe ich in die andere richtung (pc --> ft245r --> cpld) 
keine probleme und erreiche, bei entsprechender einstellung des 
driver-buffers bis zu 1Mbyte/s.


Wer hat eine Idee?

Autor: Gerry L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne den relevanten Code Ausschnitt wird dir keiner helfen können.
Normalerweise sendet der FT245 sofort an den PC weiter wenn WR high ist.

PS: USB hat von Hause aus Latenz Zeiten von ich glaub 30 ms.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Normalerweise sendet der FT245 sofort an den PC weiter wenn WR high ist.
Richtig, aber:

> wenn ich mit meinem c# programm den buffer des treibers zyklisch abfrage
Ich denke, du musst Ereignisbasierend arbeiten.

Ralf

Autor: Reinhard D. (yum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralf schrieb:

>
>> wenn ich mit meinem c# programm den buffer des treibers zyklisch abfrage
> Ich denke, du musst Ereignisbasierend arbeiten.
>
> Ralf

Hallo Ralf,
bitte was meinst du mit Ereignisbasierend?
ich polle den buffer des treibers alle 1sec. und dann sind dort nur 2000 
byte drinnen, die ich dann rauslese; polle ich alle 100ms, so bekomme 
ich 200 byte... (bei 64kb max. buffergrösse also kein problem)

lg
yum

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.