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
Naja, ich hab was von 38 Eu (netto) in Einzelstückzahlen im Hinterkopf. Das bringt die ersparte Entwicklungszeit leicht wieder rein.
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.
Für 10BaseT reichen 4 Adern :-) Das fällt dann dünner aus.
Ok, aber bei diesem Projekt ist leider USB angesagt... Keiner weis was? Ich meine das muss doch gehn, meine Maus funktioniert doch auch :) -michel
PICs haben teilweis eingebaute USB Interfaces... Vlt. gibts ja passende Treiber auf OSx Seite
1 | USB-Hardware der PIX18Fxx5x |
2 | |
3 | Die PIC18Fxx5x enthalten ein USB2.0-Interface mit folgenden Eigenschaften: |
4 | |
5 | Device |
6 | Mit diesem Interface läßt sich ein USB-Device aufbauen, aber kein Controller. |
7 | |
8 | Modes |
9 | Es werden die Modes Low-Speed (1.5 MBit/s) und Full-Speed (12 MBit/s) unterstützt, nicht jedoch der High-Speed-Mode (500 MBit/s). |
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
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.