Hallo Zusammen, ich arbeite schon lange mit 8 Bit Mikrocontrollern von Atmel für mobile Bediengeräte. Aktuell haben wir die Problemstellung, das jemand eine Art Logfile über die Vorgänge hat. Bisher haben wir die Daten immer im EEPROM gespeichert und er konnte diese über das Display abrufen. Er möchte nur gerne eine Datei auf USB speichern, um diese dann im PC aufzurufen. Das Gerät soll dabei aber nicht mit einem PC verbunden werden, sondern die Datei soll auf einem USB Stick abgelegt werden. Da ich noch keine Erfahrung mit den USB Schnittstellen habe, wollte ich wissen, ob es überhaupt möglich ist einfach mit einem ATMega oder einem XMEGA eine Datei über USB zu erzeugen oder welche Wege Ihr diesbezüglich vorschlagen würdet. Vielen Dank im voraus! Gruß, Ernie
Es ist ein USB-Host-Controller erforderlich. Es gibt AVR mit integriertem Controller z.B. AT90USB1287, man kann aber auch einen externen Controller anschliessen (SPI, I2C). Zum Schreiben auf USB-Sticks ist zudem ein Filesystem erforderlich (FAT16 <2GB, FAT32 >4GB). Da also der Aufwand doch relativ hoch ist, warum keine SD-Karte statt USB-Stick? Anschluss an jeden AVR mit SPI, kein Filesystem notwendig.
Lothar schrieb: > ... > Anschluss an jeden AVR mit SPI, kein Filesystem notwendig. wenn er es am PC einfach auslesen möchte, dann braucht er schon ein Filesystem. Trotzdem ist der Aufwand mit einer SD-Karte um Größenordnungen kleiner als mit USB. Und wenn der Kunde keinen eingebauten Kartenleser hat - für'n paar Euro gibts den passenden USB-SD-kartenleser. Sascha
Lothar schrieb: > Anschluss an jeden AVR mit SPI, kein Filesystem notwendig. Ein Filesystem wäre allerdings ziemlich praktisch, um die SD-Karte hinterher auf dem PC wie einen normalen Datenträger über das Betriebssystem lesen zu können. http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten
Michael A. schrieb: > Lothar schrieb: >> Anschluss an jeden AVR mit SPI, kein Filesystem notwendig. Es geht hier doch nur um einen Logger. Somit reicht ein C Array mit dem MBR (512 bytes) und dem Filenamen. Danach kann man RAW schreiben. Und auf dem PC funktioniert es auch.
Sascha Weber schrieb: > Trotzdem ist der Aufwand mit einer SD-Karte um > Größenordnungen kleiner als mit USB. Hierzu muss man noch sagen, dass andere Hersteller Opensource USB Host Stacks anbieten, und somit dort der Aufwand minimal ist: http://ics.nxp.com/support/software/usb.host.msc http://www.lpcware.com/content/project/nxpusblib
Schonmal vielen Dank für die vielen Beiträge, dass muss ich mir jetzt mal in aller Ruhe anschauen. Eine Lösung über SD Karte wäre auch möglich. Ich fand halt im ersten Ansatz die USB Schnittstelle als robustere und, wie der Name schon sagt, als universellere Schnittstelle, was den mechanischen Teil angeht. Da es ein neues Projekt ist, kann ich natürlich auch andere Wege gehen und mich würde interessieren, ob es Sinn macht sich diesbezüglich mal mit Arduino zu beschäftigen und ob der Einsatz im industriellen Bereich Sinn macht?
Für 8/Bit Atmel controller ohne USB interface gibt es dieses http://www.obdev.at/products/vusb/index.html Veilliecht eine Lösung. Mfg, Robert
REv schrieb: > Veilliecht eine Lösung. Überhaupt nicht. Das ist ein USB-Device; um einen USB-Stick (oder ein beliebiges anderes USB-Gerät) anzusteuern, braucht man einen USB-Host. Der weiter oben genannte AT90USB1287 beherrscht USB-OTG und kann daher auch als Host fungieren. Der Aufwand aber ist alles andere als trivial, weil nicht nur ein Dateisystemtreiber, sondern auch noch ein USB-Host-Treiber und ein darauf aufsetzender USB-Mass-Storage-Treiber nötig sind. Mit einem "intelligenten" USB-Host-Baustein à la FTDIs "Vinculuim" oder alFat von Ghisler wird das deutlich einfacher. Ohne so etwas rate ich zur Verwendung von SD-Karten.
Sascha T. schrieb: > Da es ein neues Projekt ist, kann ich natürlich auch andere Wege gehen > und mich würde interessieren, ob es Sinn macht sich diesbezüglich mal > mit Arduino zu beschäftigen und ob der Einsatz im industriellen Bereich > Sinn macht? Falls ein anderer Controller in Frage kommt: hier ein günstiges ARM Develop Board mit Programmbeispiel USB Host Demo, hier ist der NXP USB Host implementiert, und Funktionen zum FAT Schreiben/Lesen auf USB-Sticks funktionieren bereits. Zudem ist der Schaltplan dabei, um später eine eigene Platine zu machen. Auf dem Board ist der LPC1766, für eine eigene Platine würde der kleinere LPC1754 ausreichen, der kleinste mit USB Host Controller. https://www.olimex.com/Products/ARM/NXP/LPC1766-STK
Sascha T. schrieb: > Eine Lösung über SD Karte wäre auch möglich. Ich fand halt im ersten > Ansatz die USB Schnittstelle als robustere und, wie der Name schon sagt, > als universellere Schnittstelle, was den mechanischen Teil angeht. Wenn die Logdaten 'live' auf den entsprechenden Datenträger aufgezeichnt werden sollen ist die SD-Karte sicher die bessere Lösung, die verschwindet nahezu völlig im Gerät, ein USB-Stick steht immer irgendwie raus und muss beim Transport abgezogen werden. Sascha
Nach reichlicher Überlegung werden wir die Daten auf eine SD Karte schreiben, da dies wirklich "relativ" einfach per SPI zu realisieren ist und der Kunde mittlerweile auch diese Schnittstelle bevorzugt. Die Ansteuerung per USB ist ja auch hier gut erklärt: http://www.mikrocontroller.net/articles/USB Es gibt ja sogar fertige Module mit USB Hostcontroller. Da wir aber ein sehr robustes Gerät benötigen (was EMV und ESD betrifft) und auch so weit wie möglich von Produktabkündigungen oder Fremdfirmware unabhängig sein möchten, haben wir die Hardware lieber selbst in der Hand. Somit möchten wir auf solche Module verzichten und die Implementation eines Hosts ist zu aufwendig und birgt auch noch viele Risiken und offene Punkte! Also vielen Dank nochmal für die ganzen Hilfestellungen und allen ein schönes Weihnachtsfest!
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.