Forum: Mikrocontroller und Digitale Elektronik USB datenempfang Fragen


von Richard K. (Gast)


Lesenswert?

Hallo Forum,

Ich suche gerade die Einzelteile für ein kleines Projekt zusammen und 
hätte mal einige Fragen, beziehungsweise Aussagen, die ich gerne 
bestätigt hätte, sodass ich weiss, dass ich die Materie verstanden habe:

- Solange ich die USB-Anschlüsse D- und D+ habe, ist es möglich für den 
Mikrocontroller Daten zu empfangen UND zu senden?! Beispiel:  ATMega 
32U4  auf dem Arduino Bord und ein Notebook, normaler Computer als 
Hoster!

- Um die volle Strommenge aus dem USB-Anschluss zu bekommen, muss ich 
einen Treiber schreiben, damit das Betriebssystem das Gerät erkennt, den 
nur so kann man die USB Ports voll ausnutzen.

- USB Massenspeichergeräte brauchen zum Beispiel keine zusätzlichen 
Treiber, da sie so populär sind, dass Betriebssystemhersteller schon 
einige in ihren Libraries miteingebaut haben!?


Danke für die Unterstützung

Besten Dank

von vloki (Gast)


Lesenswert?

Senden kann man vom Device genaugenommen nicht. Aber die Daten vom Host 
abholen lassen schon ( kommt ja auf das gleiche raus;-)

Treiber muss man normalerweise nicht schreiben. Man benutzt einfach eine 
Geräte-Klasse für die das PC Betriebssystem einem Treiber hat. (CDC,HID, 
MSD...) oder benutzt einen Treiber wie libusb.

von Richard K. (Gast)


Lesenswert?

Danke für die rasche Antwort. Ich versuche eben so etwas ähnliches Wie 
ein Datenlogger aufzubauen, also die Daten sollen dann in den immer 
gleichen Abständen vom Host zum Device übertragen werden.
dann gehe ich mal davon aus, dass das alles mein Programm regeln muss 
(Zeitabstände,..etc)

Warum schreiben dann Mobilgerätehersteller eigene Treiber? Das 
Smartphone bildet am USB Anschluss eigentlich auch nur einen 
Massenspeicher mit Ladeeinrichtung für den LIION-Akkku...

von Clemens L. (c_l)


Lesenswert?

Richard K. schrieb:
> Solange ich die USB-Anschlüsse D- und D+ habe, ist es möglich für den
> Mikrocontroller Daten zu empfangen UND zu senden?

USB ist bidirektional. (Allerdings braucht es nicht dafür zwei 
Signale; die heißen D+ und D-, weil die Daten differentiell übertragen 
werden.)

> Um die volle Strommenge aus dem USB-Anschluss zu bekommen, muss ich
> einen Treiber schreiben, damit das Betriebssystem das Gerät erkennt

Nicht wirklich.

Der Standard schreibt vor, dass ein Gerät nur dann viel Strom ziehen 
darf, wenn der Treiber es ihm erlaubt. Dadurch kann verhindert werden, 
dass zu viele stromhungrige Geräte gleichzeitig aktiviert werden.

Allerdings ist dieser Schutz meist nur in Software implementiert; wenn 
dein Gerät einfach mehr Strom saugt, funktioniert es oft. (Viele 
Mainboards haben aber auch eine feste Strombegrenzung in Hardware.)

> USB Massenspeichergeräte brauchen zum Beispiel keine zusätzlichen
> Treiber, da sie so populär sind, dass Betriebssystemhersteller schon
> einige in ihren Libraries miteingebaut haben!?

Im Prinzip ja; das hat aber weniger mit Popularität zu tun, als damit, 
dass diese Protokolle standardisiert sind: 
http://www.usb.org/developers/docs/devclass_docs/

von vloki (Gast)


Lesenswert?

Richard K. schrieb:
> Ich versuche eben so etwas ähnliches Wie ein Datenlogger aufzubauen,
> also die Daten sollen dann in den immer gleichen Abständen vom Host zum
> Device übertragen werden.

Wenn du etwas genauer auf die Datenmenge eingehen würdest, bekämts du 
bestimmt noch präzisere Hinweise...

von Richard K. (Gast)


Lesenswert?

Verstehe ich aber nicht so ganz, wenn die Protokolle standardisiert 
sind, warum gibt's Gerätefehlermeldungen bei Windows wenn 
USB-Sticks/Geräte verwendet werden, die etwas älter sind?

Das Projekt steckt noch in der Befruchtung :) somit kann ich nicht viel 
über die Datenmenge sagen. Es soll einfach optisch Parameter ausgeben 
können. Auslastung, Audiolautstärke, Temperatur, 
Internettverbindungsgeschwindigkeit...So eine Art Diagnosetool!

von vloki (Gast)


Lesenswert?

Ausgeben auf einer GUI, so dass ein Benutzer das sieht? Dann ist die 
Datenmenge auf jeden Fall relativ winzig. Dann kannst du bestimmt CDC 
oder HID verwenden. Bei CDC bekommst du auf dem PC einen "virtuellen" 
COMport und kannst deine Daten am Anfang einfach in einem beliebigen 
Terminalprogramm anzeigen. Sowas (Terminal) gibt es auch für HID.

Für ein "kleines" Projekt brauchst du auf jeden Fall eine Art Framework 
(eine Beispielprojekt), das den ganzen USB Kram auf dem uC handelt. Gibt 
es bestimmt vom Hersteller.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Richard K. schrieb:
> Verstehe ich aber nicht so ganz, wenn die Protokolle standardisiert
> sind, warum gibt's Gerätefehlermeldungen bei Windows wenn
> USB-Sticks/Geräte verwendet werden, die etwas älter sind?

Was genau meinst Du mit "USB-Sticks/Geräte"?

Die "USB Mass Storage Device Specification", die das Verhalten von 
USB-Speichersticks, USB-Kartenlesern, USB-Festplatten, 
USB-Diskettenlaufwerken und USB-CD-/DVD-Laufwerken/Brennern regelt, ist 
schon gut 15 Jahre alt; dazu nicht kompatible Geräte findet man seit 
deutlich über zehn Jahren nicht mehr.

Wenn es im Zusammenhang mit solchen Geräten zu Problemen kommt, hat das 
andere Ursachen.

von Richard K. (Gast)


Lesenswert?

vloki schrieb:
> Für ein "kleines" Projekt brauchst du auf jeden Fall eine Art Framework
> (eine Beispielprojekt), das den ganzen USB Kram auf dem uC handelt. Gibt
> es bestimmt vom Hersteller.

Echt? Datenmenge relativ winzig? Hätt ich jetzt schlimmer eingeschätzt:)

Wie finde ich sowas...bzw unter welcher Spezifikation?

Rufus Τ. F. schrieb:
> Wenn es im Zusammenhang mit solchen Geräten zu Problemen kommt, hat das
> andere Ursachen.

Also wir haben in der Firma Massenspeichergeräte, die einen 
automatischen Download des Tachographen (wie lange ist die 
Ruhe-,Arbeits,Berietschaftszeit) und wenn wir die an unseren Rechner mit 
WIN7 anschliessen, kommt immer eine Problem-Meldung. Genauso mit meinem 
USB 2GB Speicherstick. Steck ich den in mein Notebook USB2.0 Port kommt 
jedesmal ein Fenster, dass mir sagt, dass mit dem Laufwerk ein Problem 
vorliegt und ob ich es reparieren will?!? Ich kann aber über den 
Arbeitsplatz problemlos darauf zugreifen. Hier behaupte ich, dass es das 
Betriebssystem nicht fertig bringt den Autostart auszuführen....

Beim oben beschriebenen Massenspeicher für Tachographen handelt es sich 
um diesen:

http://www.fleet.vdo.de/gesetze/daten-auswerten-archivieren/dlk-pro-tis-compact/

von nohybrid (Gast)


Lesenswert?

>kommt
>jedesmal ein Fenster, dass mir sagt, dass mit dem Laufwerk ein Problem
>vorliegt und ob ich es reparieren will?!?
...dann dürfte vermutlich das Dateisystem auf dem USB-Stick nicht in 
einwandfreiem Zustand sein: 
http://www.howtogeek.com/184640/ask-htg-windows-always-wants-to-scan-and-fix-my-usb-drive-should-i-let-it/

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Richard K. schrieb:
> kommt jedesmal ein Fenster, dass mir sagt, dass mit dem Laufwerk ein
> Problem vorliegt und ob ich es reparieren will

Diese Fehlermeldung hat mit dem Dateisystem zu tun, aber überhaupt 
nichts mit dem verwendeten USB-Devicetreiber. Komplett andere Baustelle.

von W.S. (Gast)


Lesenswert?

Richard K. schrieb:
> Ich suche gerade die Einzelteile für ein kleines Projekt zusammen

Wenn daraus keine Endlos-Baustelle werden soll, dann wirst du nicht 
umhin kommen, dich zur prinzipiellen Funktionsweise des USB zu belesen 
und anschließend dir zu allererst Gedanken über die gesamte Struktur 
deines Vorhabens zu machen.

Sich einfach hinzustellen und zu sagen "naja, der USB besteht doch nur 
aus 2 Strippen, das kann doch wohl nicht so schwer sein!" ist ein bissel 
zu wenig.

Also lies zu allererst.

W.S.

von Volker S. (vloki)


Lesenswert?

Richard K. schrieb:
> Echt? Datenmenge relativ winzig? Hätt ich jetzt schlimmer eingeschätzt:)

Na wenn du nur so viel überträgst wie ein menschlicher Betrachter auch 
erfassen kann, wird das, verglichen mit dem was auf dem Bus möglich 
wäre, schon nicht allzu viel sein. Deshalb "relativ"

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.