Hallo zusammen, ich habe einen FT232BM mit einem ATmega32 (und auch ATmega128) "verheiratet". Die Signale RX und TX des FT-Chips wurden mit den ATmega RX und TX Pins verschaltet (gekreutzt - Null-Modem). Die Signale #RTS und #CTS wurden am FT-Chip ueberbrueckt. Soweit so gut. Der ATmega laeuft mit 16MHz und soll eine Baudrate von 1MBaud zusammenbringen. Laut Datenblatt von FTDI und Atmel fuer beide Chips kein Problem. Nun mein Problem: Welchen Wert muss ich ins UBBR Register schreiben und welche Baudrate soll ich beim FTDI Chip einstellen um eine max. Uebertragungsgeschwindigkeit zu erreichen. Es gibt bei dem FTDI-Chip auch die Moeglichkeit non-Standard Baudraten zu verwenden. (Ich verwende nicht den VCP sondern die FTD2XX.dll - MS Visual C++) Ich freue mich ueber jeden Hinweis der mir Hilft! Schon jetzt vielen Dank Mit freundlichen Gruessen AlexZ
Ich bezweifle dass du ohne Hardware-Handshake 1MBaud hinbekommst. Wolf
Hallo Wolf, OK, Hardware-Handshake soll nicht das Problem sein. Freie Ports habe ich noch und meine UART-Lib kann's auch. Aber es löst leider nicht das eigentliche Problem... Mit freundlichen Gruessen AlexZ
Hallo Alex, Such dir mal das Tool avrcalc auf avrfreaks.net/Google. Damit kannst du dir die UBRR Werte komfortabel ausrechnen lassen. Grüße Wolf
Warum soll Software-Handshake ein Problem sein? Einen Eingangspuffer vorsehen und das XOFF senden, wenn im Puffer noch 32 Bytes (Hausnummer) Restplatz ist. Dann sollte das gehen. Stefan
Hallo Stefan, An sich ist Software-Handshake kein Problem, aber die 1Mbit Daten die der OP übertragen wollte müssen ja auch verarbeitet werden. Und wenn er laufend "xofft" sinkt die Netto-Datenrate. Grüße Wolf
Kommt natürlich auf die Applikation drauf an. In den meisten Fällen gibt es ja eine Hauptrichtung, in die die Daten fliessen. In die andere Richtung gehen meist nur Statussignale etc., mit wesentlich weniger Bandbreite. In diesem Fall schränkt Software-HS nicht die Übertragung ein. Soll die Übertragungskapazität in beiden Richtungen ausgelastet werden, dann sieht es natürlich anders aus. Was man bei SW-HS auch beachten muss: Sollen XON-XOFF-Signale gesendet werden, dann ist der Übertragungsweg nicht mehr uneingeschränkt binärtauglich. D.h. Datenbytes, die XON oder XOFF entsprechen, müssen gesondert kodiert werden. Stefan
Hallo zusammen, bei meiner Anwendung faellt leider Software-Handshake aus. Alle Ascii Zeichen (0-255) sind leider schon Bestandteil des Datenstroms (Binaerdaten). Ich presoenlich glaube nicht das ich ein Problem ohne Handshake, egal ob Hard- oder Software, bekommen werde. Mein Uart arbeitet mit einem Sende/Empfangs Buffer von je 128 Byte. Ausserdem ist nur immer eine Richtung voll ausgelastet. Wolf: Danke fuer den Tipp mit "avrcalc". Werde ich mir mal anschauen. Vielen Dank an alle Mit freundlichen Gruessen AlexZ
Hallo zusammen, Hallo Wolf, ich habe mir mal das Tool "avrcalc" angeschaut. Es waehre schon ganz gut aber es berechnet nur bis 115k Baudrate richtig. Wenn Du mal in die Spec des ATmega128 auf Seite 193-196 schaust, wirst Du Beispiele fuer das UBBR finden. Bei 16MHz (S. 169) ist bei U2X=0 und UBBR=0 eine Baudrate von 1Mbit moeglich. Vielleicht kann ich auch die Tabelle nicht richtig lesen? Nur, was muss ich mit dem FTDI Chip machen um diese Baudrate auch bei ihm einzustellen. Mir ist klar, dass es sich nicht um eine Standard Baudrate handelt aber es sollte (?) doch moeglich sein auch dem FTDI Chip zu sagen das er mit 1Mbit arbeitet. Welche Baudrate bekomme ich wenn ich ins UBBR=0 schreibe (16MHZ)?? Ist das exakt 1M bps oder etwas mehr oder weniger? Vielen Dank Mit freundlichen Gruessen AlexZ PS: Ich werde einfach mal mit Oszi mir den Datenstrom bei UBBR=0 anschauen...
Die UBBR Werte stehen doch im Datenblatt??? beim AtMega 16 waren das wohl UBBRL = 1 und UBBRH = 1. Weiss es aber nicht mehr genau. Beim Kapitel USART ist auf jeden Fall die gesuchte Übersicht enthalten. MfG
Hallo Torsten, wie schon im Beitrag zuvor: Die Übersicht in der Spec ist ja auch nicht das Problem. Wie man die Übersicht liest ist auch nicht das Problem. Fakt ist, die Angaben in dieser Übersicht sind etwas unklar wenn man sich die Werte für UBBR bei 0,5M bps udn 1M bps anschaut. Wie schon gesagt: Dies sind keine Standard Baudraten!! Windows kann sowas garnicht! ABER ein FTDI Chip sollte das können. Aber wie ???? Vielen Dank Mit freundlichen Gruessen AlexZ
Hallo Alex, Hast du denn kein Datenblatt vom FT Chip? Da sollte doch so etwas drin stehen. Grüße Wolf
Hallo Wolf, natürlich habe ich eine Spec des FTDI-Chips. Die hab ich auch gelesen. Nur wird da von einer Baudrate z.B. von 921600 Baud gesprochen. Wie sag ich DAS meinem ATmega? Na, war einen Versuch wert. Ich dachte, jemand hat sicherlich schon mal das gleiche Problem gehabt. Trotzdem, vielleicht gibt es ja doch noch jemanden der die max. Übertragungsgeschwindigkeit des USART's mit einem FTDI Chip geschaft hat. 19,2K sind ja kein Problem :-)) Vielen Dank an alle... Mit freundlichen Grüßen AlexZ
Wenn der FTDI nur 921600 Baud kann, dann nimm doch für den AVR ein Standardquarz 14,7456MHz, dann hauts wieder hin. Peter
Hallo Peter, vielen Dank für Deine Antwort. Wenn ich fragen darf: Wie kommst Du auf die Frequenz/Baudrate. Mit freundlichen Grüßen AlexZ
Schau Dir doch mal bei Farnell oder so die Quarze an. Da sind viele "krumme" Werte mit bei, die aber meistens Vielfache von 115200 sind, genauso wie 921600. Peter
Salut, alles davon ist in den Datenblättern zu finden. UBRR sollte 0 sein (XTAL/16/BAUD-1 imho) und den FTDI kann man ganz bestimmt auch unter Windows zu non-standard Baudraten bewegen. Schließlich wird sich das Merkmal, das sogar im Datenblatt steht, nicht nur auf den nicht von FTDI selbst entwickelten Linux-Treiber beziehen. So geht es unter Linux: http://hrabia.ibib.waw.pl/~winnie/baudrate.html Afair ist die Baud-Basis beim FT232 3MHz, also sollte ein Teiler von 2 (= 3-1) eingestellt werden. Aber sicherlich sagst Du dem Treiber die Baudrate direkt, und der rechnet das dann in den Teiler um - so wie es auch der Linux-Treiber macht. Gruß, Mark
Hallo Mark, das kling mal richtig gut. Sobald ich Zeit habe werde ich es gleich mal testen. Schon jetzt vielen Dank. Mit freundlichen Grüßen AlexZ
Hallo zusammen, die Loesung zu meinem Problem war greifbar nahe: Im Datenblatt des ATmega32/128, bei USART gib es eine Berechnungsformel fuer die Baudrate und den UBBR Wert. Nach dieser Formel wird bei einem UBBR Wert von 0 eine Baudrate von 1Mbit/s erreicht ( @ 16MHz). Der FTDI 232MB Chip kann ueber die FTD2XX.DLL angesprochen werden. Mit dem Befehl FT_SetBaudRate kann einfach 1Mbit/s eingestellt werden. Da es sich hierbei um eine nicht Standard Baudrate handelt berechnet der FTDI Treiber automatisch die richtigen Teilerverhaeltnise. Das alles ist auch in der Application Note von FTDI "Configuring FT232BM Baud Rates" beschriben. Jedenfalls arbeitet mein ATmega32 mit 1Mbit/s USART zusammen mit dem FT232BM herforragend. Wie das ganze aber mit einem Virtual Com Port funktioniert kann ich leider nicht testen. Die FTD2XX.DLL ist einfach besser in eigene Programme einzubinden. An alle nochmal vielen Dank. Mit freundlichen Gruessen AlexZ
Servus, ahhh... ist eigentlich alles schon von Mark gesagt worden. Thanks Mark Mit freundlichen Gruessen AlexZ
Die maximale Datenübertragungsrate des FT232BM liegt bei 3MBit/s. Die lassen sich aber nur mit der Treiber-DLL realisieren. Über den virtuellen COM-Port sind nur die Standard-Baudraten nutzbar
Laut Aussage von einem FTDI-Entwickler auf der Messe lassen sich auch bei Verwendung der virtuellen COM-Ports beliebige Baudraten verwenden. Es muss eine Einstellmöglichkeit geben, mit der jeder Virtual-COM-Port-Baudrate eine Einstellung zugewiesen werden kann. Damit sollte es möglich sein, z.B. im Virtual-COM-Port 19200 einzustellen und den FTDI bei dieser Einstellung real mit 1Mbaud übertragen zu lassen. Wie gesagt, habe ich selber noch nicht ausprobiert. Es könnte aber interessant für Programme sein, die mit dem mc kommunizieren sollen, aber nur sehr lahme Baudraten können. Stefan
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.