Forum: Mikrocontroller und Digitale Elektronik FT232RL - Buffer Leeren


von C. H. (hedie)


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

von David M. (md2k7)


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

von C. H. (hedie)


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

von David M. (md2k7)


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

von C. H. (hedie)


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 :)

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.