mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT232RL - Buffer Leeren


Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich verwende einen FT232RL mit 3Mbaud an einem Attiny2313 welcher mit 
24MHz direkt vom FT232RL versorgt wird.

Ich Lese am Computer mit der FTDI Library immer 1000bytes aus solange 
bis ich 50'000 bytes empfangen habe.

Dies klappt problemlos wenn ich es kurz bzw unmitelbar nach dem 
Connecten mache.

Warte ich ein wenig, so habe ich innerhalb weniger ms alle 50'000 Daten 
empfangen. Klicke ich danach nochmal auf empfangen, so werden wieder 
neue daten eingelesen.

Ich tippe hier auf einen Buffer im FT232 hin oder auf einen in der 
FTLibrary.

Wie kann ich also den Buffer leeren bzw mit jedem abrufen von daten neue 
daten erhalten und keine aus irgendeinem buffer?

Danke schonmal

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Mit der FTDI-Library" heißt was? Eigentlich sollte der Treiber ja eine 
ganz normale serielle Schnittstelle emulieren. Dann hängt dein Programm 
nicht vom FTDI ab. Welches Betriebssystem, Windows?

Man könnte die üblichen Systemaufrufe fürs "Flushen" der seriellen 
Schnittstelle probieren (z.B. PurgeComm unter Windows), aber:

Sowohl PC als auch FT232 haben Buffer, dein Vorhaben wird also sehr 
schwierig. Kannst du nicht ein Zeichen für "Abgrenzung" - also "hier 
fängt der neue Datensatz an" verwenden? Dann kann man einfach so weit 
lesen bis nichts mehr da ist, und dann den letzten Datensatz nehmen.

Gruß
David

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David Madl schrieb:
> Kannst du nicht ein Zeichen für "Abgrenzung" - also "hier
> fängt der neue Datensatz an" verwenden?

Hmm Klingt gut....

David Madl schrieb:
> Mit der FTDI-Library heißt was? Eigentlich sollte der Treiber ja eine
> ganz normale serielle Schnittstelle emulieren. Welches Betriebssystem,
> Windows?

Mit der FTDI Library heisst, das ich deren DLL verwende um mit meinem 
Programm auf deren Chip zuzugreifen.

Dies ist notwendig, da die WinAPI keine Baudraten von 3Mbaud unterstützt

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Etwas Googeln zum Thema fördert die "libftdi" zutage, die hat einen 
Aufruf namens ftdi_usb_purge_rx_buffer, der sollte auch die Chip-Buffer 
löschen.

Weiters gibt's hier:
http://www.ftdichip.com/Documents/ProgramGuides.htm
eine Doku (1. Link)... FT_Purge() sollte demnach auch die Device-Buffer 
löschen.

IMHO ist die Variante mit Datensatz-Abgrenzung schöner.

Gruß
David

Autor: Claudio H. (hedie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David Madl schrieb:
> Etwas Googeln zum Thema fördert die "libftdi" zutage, die hat einen
> Aufruf namens ftdi_usb_purge_rx_buffer, der sollte auch die Chip-Buffer
> löschen.

Besten Dank!

Hat geklappt :)

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.