www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten vom FT245BM zum Rechner schicken?


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich habe ein Problem mit dem Senden von Daten von dem USB Controller
FT245BM zum Rechner.
Während das Empfangen der Daten vom Rechner wunderbar funzt, klappt das
Senden überhaupt nicht.
Als Software habe ich dieses D2XX Demo Programm von FTDI im Delphi
Code. Das Programm an sich ist total beschissen, aber die Functionen
und Proceduren sind ganz nützlich. Wenn ich nun Daten senden will,
schreibe ich die ja in den Transmit-FIFO. Die Software holt dann diese
daraus, allerdings nur in Paketen, deren Größe man im Quelltext der
Software festlegen kann. Nun hab ich festgestellt, das die zu sendene
Datenmenge immer ein Vielfaches dieser Packetgröße sein muss, da die
Software nur volle Packete empfängt; d.h keine leeren oder halbvolle
oder.. usw. . Beim Senden von Daten vom Rechner zum FT245BM, was
ebenfalls mittels Datenpaketen geschieht, ist das nicht so. Da kann das
letzte Datenpacket eine Variable größe haben, womit die zu sendene
Datenmenge ebenfalls variabel ist. Da nun die Software nur volle
Packete empfangen will, erkennt sie auch keine leeren. D.h.ist der FIFO
nach dem Auslesen leer, und es stehen keine Daten mehr zur Verfügung,
erkennt das die Software nicht, und wartet auf neue Daten. Somit hängt
nun das Programm, weil es auf etwas wartet was nun mal nicht kommt. Nur
ein Trennen der USB Verbindung macht dem Program klar, das keine mehr
kommen, und die empfangenen Daten werden gespeichert.

Also: Wie kann ich Daten variabler Größe verschicken und wie kann die
Software erkennen, das keine Daten mehr im Transmit FIFO liegen?

Danke!

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist bei mir schon was länger her, aber über die Paketgrösse musste ich
mir keine Gedanken machen. Ich hatte einen Denkfehler in der
Ansteuerung durch den Mikrocontroller (Aufbau war PC <-> FT245 <->
AVR). Ich hatte auch das Delphi Beispiel verwendet.


Gruss
Andreas

Autor: hebel23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,
naja also "beschissen" würde ich die Software erst mal nicht
unbedingt nennen. Immerhin ist es ein Ansatz für eigene Entwicklungen
und man bekommt es für lau.
Was die Daten im FIFO angeht, werden die automatisch vom FTDI an den PC
gesendet, wenn er lehr ist natürlich nicht mehr.
Diesen Vorgang kann man aber durch verschiedene Parameter beeinflussen,
z.B. indem man die Größe des RXQueue oder den Legacytimer auf dem
Rechner verändert. Das Warten auf einen RX-Buffer der eigentlich lehr
ist, kann man durch verändern des RX-Timeouts z.B. auf 1000ms
vermeiden.
Man bekommt dann nach 1s einfach die Daten zurück, die drin waren mit
dem Parameter ret_bytes (gelesene Bytes). Wenn keine Daten drin standen
ist sein Wert eben einfach 0.

Steht auch alles in den Appnotes:
-Data Throughput, Latency and Handshaking
-Optimising D2XX Data Throughput
-D2XX Programmers Guide

Gruß Andreas

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.