www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR USB Client mit C? (und vernünftiger Lizenz)


Autor: Bartholomäus Steinmayr (sam_vdp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vor einiger Zeit bin ich über die Möglichkeit gestolpert praktisch ohne
weitere Hardware mit einem AVR ein USB Client-Device zu bauen (à la
Obdev.at, IgorPlug oder AppNote309).
Mein Problem ist folgendes: Ich würde soetwas gerne nachbauen, traue
mir allerdings nicht zu das ganze selber zu entwickeln (also USB
Spezifikation, etc.). Das Konzept von Igor bzw. das abgeleitete AppNote
von Atmel sind leider Assemblercode, den ich kaum in C Projekte
integrieren kann (oder?).
Obdevs AVRUSB sieht geradezu prädestiniert aus. Allerdings würde mich
die Lizenz verpflichten, jedes noch so kleine Projekt zu
veröffentlichen, mindestens 12 Monate vorzuhalten und Obdev ein
unbegrenztes Nutzungsrecht einräumen, was ich ziemlich lächerlich
finde.
Gibt es ein ähnliches Projekt mit einer "normalen" Bastlerlizenz?

Mit besten Grüßen,
Bartl

P.S.: Klar, interessiert wohl keinen ob ich die Lizenz verletze, aber
ehrlich währt am längsten.

Autor: Martin Enke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Bartholomäus,

so spontan kenne ich auch kein lizenzfreies C-Beispiel, aber:
Ich persönlich finde Assembler sehr einfach zu programieren. Natürlich
würde ich nicht bei Null anfangen sondern ein funktionierenden Code
abändern.
Um das Studium der USB-Spezifikation kommst Du auf keinen Fall drumrum
aber man braucht auch nicht alles zu wissen. Wahrscheinlich haste mal
in ein Buch gesehen und dann ist Dir schwindelig geworden, jedenfalls
ging mir das anfangs so...

Meine Empfehlung
- Jan Axelson, USB für Entwickler (=deutsch!) oder USB complete
(=englisch)

- Versuche unbedingt Dein Client als HID zu implementieren, ich kann
mir kaum ein Gerät vorstellen mit dem das nicht geht. Das halbiert
benötigte das USB-Wissen.

Martin

-

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

suche mal mit google nach USB Joystick und avr. da gab es
ein Projekt als HID Device soweit ich weiss. (cz-seite glaube ich)
Oder unter http://www.mictronics.de da war auch alles verlinkt...

Gruß Sven

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Ergänzung: Da das Timing sehr kritisch ist, wurde zu den oben
genannten Lösungen zu assembler gegriffen. Da in diesen Fällen
ja das USB-Protokoll in Software gelöst werden muss !!!

Autor: Bartholomäus Steinmayr (sam_vdp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven: Den USB Joystick kenn ich (falls du den meinst:
http://www.mindaugas.com/projects/MJoy/ ), ist aber auch in ASM.
Ohne Assembler gehts wohl auch nicht (hat Obdev ja auch verwendet) und
ist auch kein Problem, solange es inline asm in C ist. Nur das ganze
Projekte in Assembler zu machen wäre nicht so mein Ding.

@Martin: Danke für die Buchtipps, werde ich mir zu Gemüte führen.
Lizenzfrei müsste der Code ja garnicht sein, nur den Zwang das Projekt
zu veröffentlichen (vor allem mit einem Jahr Vorhaltezeit) und die
Tatsache, dass ich was ich bau faktisch an Obdev abtrete finde ich
nicht in Ordnung. GPL wäre garkein Problem.
Bleibt mir wohl nur, den AppNote Code auf C mit inline assembler
umzubiegen. Ich werd's mal versuchen :)
Wegen dem HID-Gerät: Wenn man auf der PC-Seite einen generischen
USB-Treiber hat (z.B. libusb-win32) dürfte es doch keinen großen
Unterschied machen, was für ein Gerät der AVR ist, oder irre ich mich
da? Ich wollte das ganze unter anderem aber eh für einen Gamecontroller
verwenden, also ist HID eh erste Wahl.

Beste Grüße,
Bartl

Autor: Martin Enke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bartholomäus,

natürlich spart Dir ein vorhandener Treiber das Selberschreiben was aus
Sicht eines ökonomisch denkenden Menschen eh Wahnsinn ist. Ob Du die
HID-Schnittstelle nutzt oder nicht hängt mehr davon ab was genau Du
vorhast: Wird das Gerät nur insg. 1 bis 3 mal installiert und noch dazu
von Dir selbst dann kannsu auch irgendwelche schrägen Treiber benutzen.
Sobald aber "Fremde" Dein Gerät nutzen dann kannsu sicher sein, dass
die die Treiberinstallation vermasseln. Echtes Plug&Play funzt m.E. nur
mit HID. Außerdem ist das PC-seitig easy zu programmieren: Mit
DeviceIOControl für die Control-Requests und ReadFile für die Daten
über die "schnelle" Pipe. Dann gibt's noch ein paar
Enumerationsroutinen, das war's.

Außerdem: Das Entwickeln ist einfacher weil es jede Menge Tools gibt
die HIDs testen (usbview, HidTest...)


Martin

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.