Forum: Mikrocontroller und Digitale Elektronik AVR: Logfile über USB erstellen


von Sascha T. (ernie1973)


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

von Lothar (Gast)


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.

von Sascha W. (sascha-w)


Lesenswert?

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

von Michael A. (Gast)


Lesenswert?

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

von Lothar (Gast)


Lesenswert?

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.

von Lothar (Gast)


Lesenswert?

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

von Sascha T. (ernie1973)


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?

von REv (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Lothar (Gast)


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

von Sascha W. (sascha-w)


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

von Sascha T. (ernie1973)


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!

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
Noch kein Account? Hier anmelden.