www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation mit AT90USB


Autor: Humpe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Bin seit einigen Wochen an einem USB-HID Device am tüfteln und habe 
probleme mit der Kommunikation.
Ich möchte vom PC max. 32Bytes an den Controller über den CONTROL-EP 
schicken und bin verwirrt mit all den Acks, Banks usw.
Kann mir jemand sagen wie man eine vernünftige SetReport-Methode 
erstellt?
Ich habe den komischen effekt dass meistens die ersten zwei Bytes die 
ich lese korrekt sind und dann kommt nur noch mist.
Was muss ich genau nach einem gelesenen Byte tun und welches ereignis 
zeigt mir an dass wieder gültige Daten da sind? Habe mit RXOUTI, FIFOCON 
und TXINI experimentiert nach Datenblatt, was zwar die gelesenen Werte 
verändert hat, sie sind jedoch immmer noch nicht korrekt.
Aber die Setup-Stage funzt, es wird die richtige Methode aufgerufen...

Wäre genial wenn mir jemand einen Code-Fetzen von einer ähnlichen 
Aufgabe zeigen könnte oder sich mit den Mechanismen auskennt und ein 
paar tips geben könnte.

MfG
Humpe

Umgebung:
 - AVR-Studio 4.12 mit SP und GCC
 - JTAG-ICE mkII
 - At90USB1287 auf AT90USB-Key
 - Beispiel-Code von Atmel als Grundlage

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da sich sonst keiner gemeldet hat:

Für Linux habe ich eigenen Code geschrieben -- der funktioniert im 
Prinzip auch, wird aber noch verbessert und erweitert. In einigen Tagen 
wird es eine überarbeitete Version mit einer Beispielanwendung geben.
http://www.ssalewski.de/USB-Sources/

Aber dich interessiert die Nutzung des Atmel-Codes unter Windows. Dazu 
kann ich nichts sagen, da ich weder Windows noch den Atmel-Code nutze. 
Ich hatte auch mal einen kurzen Blick in Teile des Atmel-Codes geworfen, 
das erschien mir aber als recht aufgebläht und unübersichtlich und eben 
leider nicht frei.

Ich musste auch sehr viel Arbeit in die Entwicklung des USB-Codes 
stecken -- aber jetzt habe ich zumindest freien (GPL) Code, der 
funktioniert und den ich verstehe.

Gruß

Stefan Salewski

Autor: Rolf Wettstein (humpe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort!
Der Code ist in der Tat ein bisschen aufgebläht, aber hat auch Vorteile 
wie der Scheduler zum Beispiel. Als Grundgerüst für ein Projekt ist das 
nicht mal übel.
Hab mal einen kleinen Blick in dein Projekt riskiert und mir ist da 
sicher mal der Byte-Count aufgefallen... da ich eben je nach Befehl 
weiss wieviel Bytes ich erwarte hab ich den weggelassen. Aber der 
bezieht sich ja wahrscheinlich auf den HW-Buffer, oder? Bin eben noch 
ein bisschen Verloren im Protokoll von USB und welecher Teil die HW 
übernimmt und was selbst programmiert werden muss. Aber werde das mal 
genauer anschauen!

MfG
Humpe

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du denn alle verfügbaren Quellcodes von Atmel? (Es gibt auch ein 
PDF zu deren Firmware-Architektur) Es gibt ja verschiedene Beispiele -- 
ich glaube mir hatte Atmel 6 verschiedene zugeschickt, in das 
Mouse-Archive hatte ich kurz hineingesehen. Ist wohl alles Geräteklasse 
HID. Ich würde mir an Deiner Stelle eines dieser Beispiele aussuchen und 
dann schrittweise verändern -- erstmal ganz ohne Veränderung compilieren 
und ausprobieren.

Zu HID kann ich Dir leider überhaupt nicht helfen. Ich verwende nur die 
8 Byte großen StandardDeviceRequests für Enumeration usw. Die 
Übertragung von Nutzdaten erfolgt bei mir über die Datenendpoints EP1 
bis EP6. Auf Hostseite (PC) spreche ich mein Gerät mit LibUSB an.

Gruß

Stefan Salewski

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.