Also ich bin auf der Suche nach einer möglichst einfachen Verbindung von
Mac und µController per USB mit Übertragungsraten >250.000baud.
Ich habs mit FT232RL probiert, allerdings scheinen die D2XX Treiber
unter OS X sehr buggy zu sein. Nach eine Anzahl von write operationen
deadlocked der Treiber regelmässig im Treiber. VCP Treiber sind wegen
der Übertragungsraten/µC-Takt keine wirkliche Alternative. Es scheint
einen stabilen OpenSource Treiber zu geben (libftdi), allerdings heisst
es überall dass der nur in Zeitlupe funtioniert?
Unter Win scheints stabil zu sein, allerdings sieht mein Projekt einen
Mac vor, den kann man auch nicht wegdiskutieren.
Nun meine Frage: Gibt es eine stablile Alternative, welche mit
überschaubarem Aufwand realisierbar ist (ich bin kein low level USB
Experte, jedenfalls noch nicht...)
Für Hilfe, Info wäre ich sehr dankbar.
-gruss Michel
> Nun meine Frage: Gibt es eine stablile Alternative, welche mit> überschaubarem Aufwand realisierbar ist
USB und zuverlässig schliesst sich gegenseitig aus :-)
Da reicht schon ein zusätzlich eingestecktes Gerät und der Bus wird neu
enumeriert.
Ich nehm lieber Lantronix X-Port und Ethernet.
Hab ich auch schon drüber nachgedacht. In USA sind die Dinger auch
einigermassen bezahlbar, allerdings besteht immer noch ein
Preis-Unterschied von x10. Hab mir neulich einen Wiport mitgebracht.
-michel
Yep In USA bekomm ich die für knapp 30€. Wenn allerdings die FTDI Dinger
funktionieren würden (so wie unter Win), dann sind das halt ca. 7€
inclusive Buchse.
Das andere Problem sind die Ethernet Kabel. Ich hab noch keine dünnen
und flexiblen Kabel gefunden und die üblichen CAT-5 sind so wahnsinnig
störrisch.
Wo genau liegt das Problem, per VCP-Treiber meinetwegen 921kBaud zu
fahren? Der µC wird doch wohl einen UART Buffer haben, so dass der
zwischendurch was anderes machen kann.
Ansonsten kannst du ja die ganz große Keule schwingen, und den Cypress
FX2 benutzen, mit der LibUSB für Mac zusammen. Nur wirst du dann leider
einen WinPC für die Anpassung der Firmware benötigen.
Das Problem liegt am µC Takt (Quarz) und der daraus resultierenden
Fehler-Rate bei Standard-Baudraten. Ich müsste so einiges
umschmeissen... und alles nur weil der USB Treiber Schrott ist...
-mj
Hallo,
also ich würd schon versuchen den FTDI zum laufen zu bekommen.
Der Virtual Comport lässt sich auf fast jede beliebige Baudrate setzen.
ich geh davon aus, dass du den Comport in einem selbst geschrieben
Programm verwendest!
Ich benutze oft Baudraten 500.000, 921.600 und 1.000.000 (allerdings
unter Windof)
ansonsten geht auch noch der FT245 (fifo), wenn man genug Pins am uC
frei hat.
Ich habe leider auch die Erfahrung gemacht dass der FT232 zumindest
unter Linux mit libftdi und Stock-Kerneltreiber bei grossen Datenraten
nicht funktioniert. Ich habe allerdings auch keine Urzeiten damit
verbracht das ans Laufen zu bekommen weil ich die Notwendigkeit nicht
hatte. "Aufhaengen" tut sich nichts aber es kommt halt auch nur Mist an.
Die lib hat sowieso ein paar sehr ausgefallene Eigenheiten, die man
erstmal herausfinden muss.
Michael
USB und stabil sind durchaus nicht unvereinbar, zumindest nicht unter
MacOS oder Linux, bei Windows wäre das etwas schwieriger...
>250.000 baud soll wohl mehr als 250kbit/s heissen? baud ≠ bit/s
Was genau ist denn die Aufgabe?
Wie sieht es mit dem Wandler von Prolific aus?
Unter Parallels funktioniert der bei mir bis 500kbaud.
Mit Labview waren nur 115200baud möglich. Mit diversen
Terminalprogrammen lassen sich 230kbaud unter OS X einstellen.
Wie gut das läuft, kann ich dir leider nicht sage.
Ich hab noch mal geforscht und da ist mir aufgefallen, dass es einen
known issue für multithreaded-apps und dem d2xx Treiber gibt. Auf Mac
Seite ist das ganze derzeit noch ein Python Prototyp und ich hatte
Python's memory management thread nicht auf der Rechnung...
Das lässt sich anscheinend durch ein Konfig-File fixen. Allerdings muss
ich dann jedesmal dieses config-file installieren und kann nicht nur auf
den standard Installer zurückgreifen.
Die genaue Aufgabe besteht aus der übermittlung von Kommandos und
Requests. Kommandos können parameter enthalten die vom Controller in
mehrere kaskadierte Shift register geschoben werden. Die Datenrate die
ich hierfür brauche ist ca. 150kBaud.
Werden die Profilic-Chips von OS X erkannt? Gibts da einen guten Driver
Support?
Danke für die Antworten!
-michael
Baud sind Modulationsschritte pro Sekunde, Du meinst wohl bit/s.
Einen Fehler den viele Leute bei USB machen ist zu vermuten, dass das
Verhalten so wie bei einer seriellen Schnittstelle ist. Ist es nicht.
Wenn nur einzelne oder wenige Zeichen pro Transaktion übergeben werden
ist der Durchsatz gruselig niedrig. USB ist paketorientiert,
entsprechend müssen so viele Daten wie möglich in einer Transaktion
übertragen werden.
Baud und bit/sek ist bei rs232 das selbe, da mit jedem Symbol ein Bit
übertragen wird. Der Prolific Chipsatz läuft bei mir wesentlich besser
unter OS X und Windows als diese PL23xx? Teile. Mit FTDI habe ich keine
Erfahrung. Ich weiß gar nicht mehr, ob der Prolific Treiber dabei war
oder nicht.
Afaik hab ich den einfach eingesteckt und er wurde als /dev/cu.usbserial
eingebunden. Ich habe heute mit Minicom versucht 460k baud einzustellen,
in dem ich die Configfile anpasste. Das ging nicht; Minicom und Labview
erlauben nur max. 230k. Mehr willst du ja auch nicht.
Ich kann morgen mal 230k versuchen und dir dann bescheid geben.
Generell macht, wie oben schon geschrieben, USB bei bidirektionaler
Kommunikation und kleinen Datenmengen keinen Spaß. Der Bus verursacht
eine Latenz von 1ms und die merkt man dann deutlich.
Hast du für OS X ein gescheites Terminalprogramm gefunden? zterm ist mir
zu "starr". Als Alternative habe ich nur Terminalprogramme aus der
Unix-Welt gefunden.
Erstmal ich hab schon Baud gemeint.
Interessant wäre der Profilic nur wenn er non-standard Baudraten
unterstützen würde. (Ansonsten kann ich auch den VCP Treiber von FTDI
verwenden, der läuft auch recht stabil) Über das standard iocntl
Kommando gehen meines wissend nur die vordefinierten Konstanten. Falls
jemand da einen Trick kennt...
Ich benutze zTerm oder die Kombin von iTerm und screen. Allerdings nicht
allzu oft da ich in der Regel alles in Python-Kommandos einpacke. Das
ist auch ziemlich "interaktiv" man kann es aber besser skripten und
reproduzieren.
Danke für das Feedback!
-michel
Also hier ein kleiner Update für's Archiv. Der FT232RL scheint auch mit
dem config file in deadlocks zu laufen. Nicht mehr so schnell aber
zuverlässig innerhalb weniger Stunden Tests. Ich hab den FTDI Support
angeschrieben und warte jetzt auf Antwort.
-michel