Hallo, Wie kommt man zum schnellsten Erfolg, wenn man eigene Schaltungen, über einen Linuxrechner mit USB ansteuern möchte. Konkret denke ich da an einen "USB-Chip" bei welchem es gute, und vor allem schnell erlernbare Schnitstellenbibliotheken (wenn möglich Userspace) für Linux gibt. Bis jetzt habe ich nur was von chips von ftdi gehört, aber damit noch nicht gearbeitet. Gibt es noch andere Firmen die sowas anbieten, oder wie kann man sonst schnell mit USB und Linux Ergebnisse erziehlen? PS: hab schon öfter probiert in diese Thematik einzusteigen, aber entweder keine gute Dokumentation gefunden (meist win only), oder hab es aus Zeitgründen wieder aufgeben müssen. Mein Problem ist jetzt, das ich mich nicht erst 2 Wochen mit den USB Grundlagen auseinandersetzen will, sondern möchte nur meine Elektronik ansteuern können.
Eine virtuelle serielle Schnittstelle über einen der FTDI-Chips gehört zu den einfachsten Möglichkeiten. Auf uC-Seite hast Du eine echte serielle Schnittstelle zu bedienen anstelle der Komplexität des USB-Protokolls, für das Du mehr als nur 2 Wochen zum Einstieg benötigst. Wenn Dir die seriellen Daten ausreichen, würde ich immer diese Möglichkeit vorziehen.
Auf RS232 möchte ich nicht mehr unbedingt setzen, da es nicht sonderlich schnell ist. Am liebsten wäre mir sowas, wie ein chip, der USB kann, und dann mehrere Pins hat, die man Ansteuern kann (Paralleler ausgang). Und der auch Daten zum PC senden kann. Wie sieht es mit USB-MCUs aus, wie sie z.B. Microchip hat? Da muss man wahrscheinlich das USB Protokoll beherschen, oder?
Chips von FTDI sind nicht langsam (angeblich bis zu 480Mb/s), und du sprichst die Schnittstelle auf PC-Seite als virtuellen COM-Port an, auf Mickrocontroller-Seite als UART. IIRC haben die Chips auch ein paar parallele Ausgaenge die du ueber eine proprietaere Lib von FTDI ansprechen kannst. Mit Dean Camera's LUFA Bibliothek (http://www.fourwalledcubicle.com/LUFA.php) und einem USB-AVR kommst du auch recht schnell (und mit wenig USB-Kenntnissen) zu einem brauchbaren Ergebnis, aber 2 Wochen Einarbeitung wuerde ich schon einplanen.
nwx schrieb: > Auf RS232 möchte ich nicht mehr unbedingt setzen, da es nicht sonderlich > schnell ist. > Am liebsten wäre mir sowas, wie ein chip, der USB kann, und dann mehrere > Pins hat, die man Ansteuern kann (Paralleler ausgang). Und der auch > Daten zum PC senden kann. Was heisst "langsam", die Chips von FTDI koennen mitunter USB Full Speed nutzen, z.B. der FT245 ueber das FIFO-Interface. Wenn Dir das immer noch zu langsam ist hast Du sowieso ein Problem. Aber ich wage das etwas zu bezweifeln. Wenn Du wirklich so grosse Datenmengen uebertragen willst: Worin besteht denn die Anwendung? Ich fuer meinen Teil komme (in Zwischenzeit!) gut mit den Teilen klar, wenn man die Macken erst einmal kennt. Bei Deinem Post "schnell Ergebnisse erzielen, moeglichst ohne Aufwand" und dann am besten noch USB High Speed. Vielleicht solltest Du erst mal auf dem Boden der Tatsachen landen? P.S. Bei der ganzen Werbung fuer FTDI sollten die uns langsam mal bezahlen ;)
Mit AVR hab ich noch nichts gemacht, arbeite mit PICs. Das mit der seriellen Schnitstelle, braucht aber dann mindestens noch eine Umsetzung in einen MCU von seriell in das was ich will, hat aber den Vorteil, das ich auch schnell noch einen Seriellen anschluss an die Platine machen kann. Muss mal überlegen, vielleicht doch nicht so schlecht. Am schönsten wäre es wahrscheinlich wirklich, wenn man einen USB-MCU nimmt. Was aber heißen würde, usb-Protokoll lernen, oder? Wie lange würde man ungefähr brauchen, wenn mann mit Usblib und so einen Mikrocontroller erste praktische Erfahrungen machen kann?
> Chips von FTDI sind nicht langsam (angeblich bis zu 480Mb/s), Die 480 Mbit/s sind die Datenrate auf USB-Seite bei Highspeed-Devices. Der FT232R (den die meisten hier benutzen) kann auf USB-Seite Fullspeed (12 Mbit/s) und auf UART-Seite 3 Mbit/s, was aber immer noch eine ganze Menge ist. > IIRC haben die Chips auch ein paar parallele Ausgaenge die du ueber > eine proprietaere Lib von FTDI ansprechen kannst. Die libftdi, mit der man dies ebenfalls bewerkstelligen kann, ist übrigens GPL. Das API dieser Bibliothek ist sehr einfach, so dass man sie schon nach 30 Minuten Einarbeitungszeit benutzen kann.
Was ich machen will? Eine Maschine bauen, die mehrere Sensoren und Aktoren hat. Die Echtzeitsachen sollen dabei alle in einem oder mehreren MCUs laufen. Aber wenn möglich möchte ich die meiste "Inteligenz" in den Rechner verfrachten, weil ich denke, so Entwiklungszeit für das Programm zu sparen und variabler bin. Welche datenübertragungsraten ich haben werde, weis ich noch nicht. Hab halt rs232 als langsam im Gedächtnis könnte aber ausreichen. Vermutlich werde ich micht doch in das USB Protokoll einarbeiten. Hat schon jemand von euch mit usblib unter linux gearbeitet? geht das schön, oder fängt man zu fluchen an? ;)
>Was aber heißen würde, usb-Protokoll lernen, oder? Wie lange würde man ungefähr
brauchen, wenn mann mit Usblib und so einen Mikrocontroller erste praktische
Erfahrungen machen kann?
Ich hab'n Kollegen , der moechte kein HID, sondern ein Messgeraet bauen.
Was offensichtlich eine eigene Klasse ist. Er ist jetzt schon eine ganze
Weile dran diese implementation zu verstehen ... mit schnell ist da gar
nichts. Eher Monate wie Wochen.
Aha und dafuer brauchst Du USB High Speed? Da reichen Dir 9600 Baud.
yalu schrieb: > Die 480 Mbit/s sind die Datenrate auf USB-Seite bei Highspeed-Devices. > [...] > Die libftdi, mit der man dies ebenfalls bewerkstelligen kann, ist > übrigens GPL. Danke fuer die Berichtigungen. Ich habe FTDI chips nie in eigenen Designs eingesetzt sondern nur als externe HW. nwx sollte sich auch die Latenzen bei USB+Host-PC ansehen, wenn er wirklich Echtzeit will.
3 Mbit/s, das muss aber dann auch der Mikrocontroller können ;) wie es scheint, ist es immer der Mikrocontroller, auch bei USB, der die Datenrate bestimmt. Aber das ist jetzt mal nebensächlich. Also die Bib von ftdi ist einfach zu verstehen und anzuwenden, das finde ich gut. Wie ist der Vergleich zu usblib, und gibt es noch was anderes in dieser Hinsicht?
@ Michael G. es gibt solche und solche Messgeräte, seh dir mal Cern an, das ist auch ein Messgerät ;) Da müssen in Sekunden TB an Daten weggeschaufelt werden. Für ein Multimeter reicht es natürlich leicht. ;) @Thomas Pircher Wie schon gesagt, die Echtzeitsachen soll in einen MCU die Inteligenz in den Rechner, soweit wie möglich man das trennen kann ;) Bin ja noch in der frühesten Entwurfsphase. Aber ich brauche unbedingt eine Schnitstelle zu eien Rechner, sollte später wenn möglich auch mal mit Win Laufen, aber zuerst einmal unter Linux, und wenn das Projekt zukunft haben soll bleibt eigentlich nur ein usb anschluss am rechner, so das auch ein handelsübliches Notebook benutzt werden kann. Wie es jetzt scheint, schaue ich mir zuerst die ftdi teile an. und wenn das nicht ausreicht, werde ich mich vermutlich richtig in usb einarbeiten müssen. @ Michael G. Welche Macken sind da so Aufgetretten?
Spricht irgendwas gegen die IO-Warrior-Serie?
nwx schrieb: > @ Michael G. > es gibt solche und solche Messgeräte, seh dir mal Cern an, das ist auch > ein Messgerät ;) Da müssen in Sekunden TB an Daten weggeschaufelt > werden. Für ein Multimeter reicht es natürlich leicht. ;) Es geht hier um Deine Anwendung und nicht um die Grenzen des technisch machbaren. Ich hab ein Board, auf dem ich mehrere TWI-Sensoren ansteure und die Messdaten an den PC per USB uebertrage. Und zwar mit 9600 Baud.
@ Michael G. Hab ja schon gesagt, das ich noch nicht weiß, was für eine Datenrate ich brauche. Aber was sind bei dir so für Macken bei den ftdi Chips aufgetretten, wie du oben geschrieben hast?
IO-Warrior kannte ich noch nicht, werd es mir mal ansehen. So auf den ersten Blick, kommt es mir teurer als ftdi vor.
@ nwx Wenn Du sowieso einen PIC verwenden möchtest, warum nimmst Du dann nicht einfach einen mit USB-Interface und lädst Dir den USB-Stack von Microchip herunter? Da gibt es für die verschiedensten Anwendungen bereits fertige Demos. Ist wohl auch die kostengünstigste Lösung. Für Deinen Fall böte sich das CDC - Interface an. Alles schon fertig. Müsstest nur die Hardwaredefinitionen auf Deinen verwendeten PIC anpassen.
nwx schrieb: > Hab halt rs232 als langsam im Gedächtnis könnte aber ausreichen. RS-232 geht üblicherweise über mehrere Meter Kabel, was die Übertra- gungsrate stark einschränkt. In deinem Fall würde der FT232R nur ein paar Zentimeter vom Mikrocontroller entfernt liegen, so dass wesentlich höhere Baudraten möglich sind. > 3 Mbit/s, das muss aber dann auch der Mikrocontroller können ;) Richtig. Die AVRs, die ich meistens benutze, können bis zu 2,5 Mbit/s (Taktfrequenz/8) bei einer Taktfrequenz von 20 MHz. Bei den XMegas geht evtl. mehr, da diese mit bis zu 32 MHz laufen. Die 2,5 Mbit/s kann aber der FT232R nicht, da die Baudrate ein Teiler von 3 Mbit/s sein muss. Möglich sollten aber folgende Baudraten sein: AVR-Taktfrequenz Baudrate ------------------------------ 16 MHz 1,0 Mbit/s 12 MHz 1,5 MBit/s Bei den PICs wird das vielleicht etwas (aber nicht viel) anders ausse- hen. Natürlich muss der Mikrocontroller mit den Daten etwas Sinnvolles anstellen, so dass deutlich höhere Baudraten bei 8-Bit-Controllern nicht sehr viel bringen. Ich habe die genannten Baudraten selbst noch nie ausprobiert, deswegen kann ich sie nicht garantieren. Normalerweise lasse ich den FT232R mit 230,4 kbit/s laufen, da dies in der Vergangenheit die größte Baudrate war, die vom termios-API und von Minicom unterstützt wurde (mittler- weile geht auch mehr, ich müsste das bei Gelegenheit ausprobieren). > Also die Bib von ftdi ist einfach zu verstehen und anzuwenden, das > finde ich gut. Wie ist der Vergleich zu usblib, und gibt es noch was > anderes in dieser Hinsicht? Von der libftdi weiß ich aus Erfahrung, dass sie leicht handzuhaben ist, nachdem man sich den Abschnitt "Functional Block Descriptions" (1,5 Seiten) durchgelesen hat. Mit der libusb habe ich noch nie gearbeitet, schätze aber, dass die USB-Grundlagen, die man dazu benötigt, deutlich mehr als 1,5 Seiten umfassen.
Die IO-Warrior kommen mit einer einfach zu benutzenden Library für Linux (wie auch für MacOS und Windows) und haben diverse höhere Funktionen im Chip, die es in vielen Fällen überflüssig machen die Bits einzeln nach aussen zu tragen. http://www.codemercs.com/index.php?id=41&L=0
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.