www.mikrocontroller.net

Forum: PC-Programmierung USB Grundsätzliche Frage


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

habe mal eine Anfänger frage zu USB.

Wenn ich unter XP ein USB gerät ansprechen möchte, verstehe ich es 
richtig das ein Herrsteller für sein Gerät einen Treiber zu verfügung 
stellt bzw. es in Windows Standarttreiber gibt die ich ansprechen kann. 
Allerdings müßte ich dann auch eine Dokumentation besitzen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das verstehst du richtig.

Wenn du ein USB Gerät gekauft hast, müsste im Handbuch oder den 
Unterlagen oder nur auf der Packung stehen, wie es unter z.B. Windows XP 
zu installieren und zu betreiben ist. Da kann stehen "Zuerst x von der 
beiliegenden CD ausführen" oder "Funktioniert direkt mit Windows XP"

Wenn du ein USB Gerät selbst per Programm ansprechen möchtest, sieht es 
etwas anders aus.

Entweder stellt der Hersteller dazu technische Unterlagen bereit, oder 
er tut's aus irgendwelchen Gründen nicht.

Bei manchen Geräten ohne Entwicklersupport vom Hersteller kann man sich 
erschliessen, wie sie angebunden sind. Insbesondere wenn Standardtreiber 
von Windows benutzt werden. Dann kann man auch nachsehen, ob Micro$oft 
technische Unterlagen zu den Standardtreibern bereitstellt. Micro$oft 
hat für solche Infos verschiedene Kanäle u.a. Hilfedateien bei den 
Entwicklungswerkzeugen, SDKs, DDKs, Online-Hilfe, das Developer-Network 
MSDN, das MSDN-TV....

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich jetzt ein wenig eingelesen und möchte gleich eine zweite Frage 
hinterher schiessen. Es gibt von FTDI diverse CHips die ich direkt an 
meinen AVR anschliessen kann.

Dann sende ich einfach, wie immer seriell Daten. JEtzt habe ich aber 
gelesen das immer der Host die kommunikation aufnimmt, d.h wenn ich 
etwas Sende woher weiß der Host das ? Oder fragt der einfach so oft ab ( 
Polling ) das ich unter windows den Com eingangs buffer nur auslesen 
muß.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast richtig vermutet. Der USB-Host pollt zyklisch alle 
angeschlossenen Geräte. Das geschieht im 1ms-Takt.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann werd ich mir wohl einen FTDI besorgen.  Habt ihr nen Tip scheint ja 
jede Menge zu geben .

Es gibt mitlerweile doch Atmel 's  die haben doch auch einen USB 
anschluss. Ist dieser FTDI dann quasi integriert ? Oder ist das ein 
"echter" usb anschluss der nicht als "Com" sondern über Treiber 
angesteuert wird.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst diese Controller?
http://www.atmel.com/products/AVR/usb/

Das können als "echte" USB Clients in verschiendenen Modi (HID, Mass 
Storage, ...) betrieben werden und werden dafür nicht über eine 
virtuelle COM angesteuert.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D.h Atmel liefert aber die notwendigen Treiber die ich dann einbinden 
kann um mein USB device ( den Mikrocontroller ) anzusteuern.???

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das tut Atmel nicht. Warum auch?

Für die Standardgeräteklassen (HID, Audio, Mass Storage Device, 
Communication Device etc.) gehören die Treiber zum Betriebssystem.

Treiber für andere Dinge musst Du sowieso selber schreiben, weil nur Du 
selber weißt, welche Daten auf welche Art und Weise Dein µC von Dir 
erwartet.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat den jemmand zufällig eine Seite mit einer Dokumentation der HID ? 
Ich meine Treiber selbst zu schreiben ist ja wohl nicht so leicht !?

Autor: Benedikt Sauter (Firma: embedded projects GmbH) (flopper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

ich habe hier mal einen ps2 zu USB Wandler geschrieben. Im 
Betriebssystem arbeitet immer der Standard HID Treiber. Funktioniert 
unter Linux und Windows.



http://www.ixbat.de/index.php?page_id=98


Gruss Bene

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus:
>>Du hast richtig vermutet. Der USB-Host pollt zyklisch alle
angeschlossenen Geräte. Das geschieht im 1ms-Takt.


Das ist falsch. Es sind nicht immer 1ms.
Ich empfehle als Lektüre die USB Specs.

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Richtige Treiber selber schreiben ist nicht so einfach. Es gibt aber den 
Weg mit libusb, die die Standard-USB-Funktionen wieder so aufbereitet, 
dass man sie über eine Bibliothek direkt aufrufen kann (d.h. Lesen 
Endpoint, schreiben Endpoint, Endpoint0 Operationen, Geräte am USB-Bus 
suchen). Hat man am Mikrocontroller die Kommunikation implementiert, 
macht man dann auf der PC-Seite dann ganz einfach das selbe und muss 
nicht über einen eigenen Treiber und die writedevice usw. Funktionen das 
Gerät ansprechen.

libusb funktioniert so, dass ein universaltreiber verwendet wird und die 
standard-USB Funktionen wieder zur Verfügung stellt. Genau dies will ja 
MS mit den Treibern eigentlich verhindern.

VT dieser Variante: WIN32 und LINUX sind auf einen Schlag unter eine 
Haube gebracht.

mfg W.K.

Autor: Jay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahoi,

vielleicht für den geneigten Einsteiger ein paar Links:
http://www.sprut.de/electronic/interfaces/usb/usb.htm
http://de.wikipedia.org/wiki/Usb
Sowie die Specs auf usb.org.

Wenn du mit den Atmel AVRs arbeiten willst, kriegste da nach einer 
Registrierung auch die USB Firmware (mikrocontrollerseitig) als Source 
Code zur Verfügung gestellt. Damit lässt sich zB ne HID-Maus 
implementieren, was für den Anfang ganz sinnvoll ist.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jay, hat der Registrierzwang was mit der Erzeugung/Benutzung von 
eindeutigen GUIDs für den jeweiligen (Weiter-)Entwickler zu tun?

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss für ein Projekt ein USB-MIDI Gerät programmieren. Die 
Descriptoren liest er richtig aus, im Gerätemanager wird es auch als 
Verbund-Audiogerät erkannt. Es kommt sogar die Meldung, dass es 
erfolgreich installiert wurde.

Aber deshalb kann ich trotzdem nicht in einem MIDI-Player zugreifen. In 
der Spezifikation habe ich gelesen, dass ich keine AUDIO und MIDI EP0 
Requests ausprogrammieren muss, was ich auch nicht getan habe.

Könnte das an dem Windowstreiber liegen?

Besten Dank
Alexander

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.