AVR: Logfile über USB erstellen

OP #2949870
Lesenswert?

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
Gast #2949879
Lesenswert?

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.
OP #2949997
Lesenswert?

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?
Persönliche Seite #2950019
Lesenswert?

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.
Gast #2950028
Lesenswert?

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
#2950713
Lesenswert?

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
OP #2966036
Lesenswert?

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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren