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
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.
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...
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/
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...
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!
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.
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.
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/
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.
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.
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"