hallo! ich möchte an einen AVR32 UC3A0256 die USB schnittstelle anwerfen und an pc seite ebenfalls ein programm schreiben, damit ich dann daten vom uC an PC und vom PC an uC schicken kann, um so logs etc auszulesen und andere daten aufzuspielen jetz habe ich das Beispiel vom AVR zur verwenden der USB schnittstelle gestartet und werke sicher schon 40 stunden herum, aber außer dass sich der uC als HID maus angemeldet hat (was er jetz nicht mehr macht) ist da nichst gelaufen, na gut, mein mauszeiger ist davongefahren... das ist aber auch schon das startprojekt jetzt meldet sich der uC als USB device an, Windows erkennt dies aber schon nicht mehr richtig, also hat keinen passenden treiber, somit meldet sich der uC falsch an... ich bin mir sicher dass schon einer von euch so etwas lauffähiges hat, würde mich über einige tips und hilfe freuen! danke im voraus didi
Warum Maus? Welches Beispiel hast du verwendet? Wenn du nur Daten wie Logs austauschen möchtest, es also nicht auf hohe Geschwindigkeit ankommt, reicht die CDC Klasse zu verwenden zu der es auch ein Beispiel im AVR32Studio gibt. Treiber auf PC Seite braucht es dazu nicht. Der AVR32 wird dann als serielle Schnittstelle erkannt.
hallo! das projekt habe ich ebenfalls probiert, jedoch funkitoniert dies auch ohne meines beituns nicht auf meinem board (ich habe nicht das eval board, sondern eines das sehr daran angelehnt ist, aber ohne jegliche taster, leds etc..) das usb hid bsp läuft zumindest, darum dachte ich wär das ein guter ansatz. ich müsste doch nur irgendwie die device descriptor vom MAUS auf etwas anderes ändern, einen zweiten endpoint einfügen und dann müsste das doch auch funktionieren? Treiber schreib ich eh keinen, da das Ding ja als HID gerät erkannt wird (werden soll) und so ich mit ein paar API funktionen zugriff darauf hätte, das meinte ich mit programm, damit kann ich dann die daten ein-bzw auslesen da ich vorher noch nichts mit usb gemacht habe, wollte ich halt auf dem USB HID aufbauen, da dieses funktioniert lg
hallo nochmal! ich möchte meine schaltung als HID indentifizieren, da hierfür die windowstreiber reichen und ich somit bei kommerzieller nutzung dann keine probleme bekomme, falls ich irgendwelche treiber für andere USB devices brauchen würde also meine bitte, wie mache ich daraus ein HID gerät, welches nicht die normale umgebung beeinflusst (zB Maus/Keyboard) und wo genau soll ich das anhand des Bsp der HID maus ändern? ich habe da schon so ziemlich alle Einstellungen geändert, jedoch war es immer eine HID maus bzw dann ein nicht richtig erkanntes HID gerät?? lg didi
hallo hat keiner ideen, wie ich das über HID lösen kann? ich möchte es nicht auf einen virtuellen COM aufbauen, wenn USB schon vorhanden ist, soll das auch richtig verwendet werden mfg
hi! kleiner fortschritt wurde geschafft, mein µC meldet sich am pc an, und hat zwei erkannte endpoints, einen IN und einen OUT, soweit sogut, aber irgendwo ist noch ein fehler, weil er immer noch als HID Maus erkannt wird, zwar nicht fehlerfrei (gelbes rufzeichen bei der maus im geräte manager), aber er wird eine maus. ich habe aber schon ziemlich alles probiert, die maus weg zu bekommen und ein HID konformes gerät anzumelden, hat bisher nicht geklappt der report descriptor wurde komplett geändert.. wenn wer hinweise hat, wie ich da weiter mache, bitte melden
soo, ich habe jetz den übeltäter gefunden... WIndows... merkt sich leider eine PID und VID und da diese Kombi einmal eine Maus war, glaubt Windows daraus immer wieder eine machen zu müssen, auch wenn der Report Descriptor komplett geändert wird! abhilfe war hier einfach die PID zu ändern, jetzt habe ich ein HID konformes gerät mit zwei endpoints, das heisst jetzt gehts an die PC seitige programmierung falls dazu einer Tips hat, immer her damit, vielleicht sind es ja etwas mehr als zuvor
anscheinend interessiert es eh keinen, aber meine HID Enumeration funktioniert und jetzt mittlerweile auch meine Kommunikation zwischen Pc und uC vielen Dank für die "Hilfe"
Hallo Didi, schade, dass Dir keiner geholfen hat. Habe diesen Thread leider erst heute entdeckt (hätte aber auch nicht helfen können ...). Deine Arbeit interessiert mich sehr! Ich habe gerade eine schicke kleine Platine gemacht, mit ATMEGA32, 16 Lasttreibern, Fernbedienung und USB. USB läuft bei mir unprofessionell über FT232 und COM-Programm. Eine echte Implementierung von USB wäre da schon schick! Zumal ich meinen Anwendern die Möglichkeit bieten möchte, unkompliziert per USB und Bootloader neue Software einzuspielen. Doch die Einarbeitung in USB und Bootloader und so weiter ist echt der Hammer! - Wäre toll, an Deinen Erfahrungen teilhaben zu können!
Hi didi, auch ich sehe deinen thread erst jetzt. Bis jetzt habe ich auch nur die usb > Serial kommunikation in Betracht gezogen, weil mir alles andere zu umfangreich erschien. Ich bin jedenfalls auch an deiner Loesung interessiert und moechte dich ermutigen, deine Erfahrungen zu teilen. Vielleicht magst du ja deinen code offenlegen oder etwas zur Artikelsammlung beisteuern. Dass keiner auf deine Posts reagiert finde ich auch etwas schade. Auf jeden Fall cool, dass dus geschafft hast.
Hallo! Freut mich das sich zumindest irgendwer dafür interessiert! @Stefan: mit dem Atmega32 wird mein programm nicht wirklich helfen, da musst du halt alles umkupfern auf den mega, da ich den AVR32 verwendet habe. Dieser hat ja USB unterstützung, darum sind sehr viele Funktionen schon im Framework des AVR32 Studios inbegriffen. Die Deskriptoren wirst du aber sicher verwenden können. Wer einmal im AVR32 Studio ein Bsp-Prog. öffnet, stellt fest dass dort alles in einige files zerlegt ist. Eine gute Möglichkeit zu starten ist das USB-HID beispiel, wie ich benutzt habe. Die wichtigeren Files habe ich angefügt, geändert muss aber auch in folgenden Dateien etwas werden: °usb_standard_request .h und .c °usb_specific_request .h und .c Hierbei geht es Hauptsächlich um die richtige Anmeldung am PC, also dass man eben nicht nur einen Endpoint sondern zwei registriert und initialisiert, sind in diesen files nur ein paar zeilen. Im usb_descriptor.h müssen eben die Descriptoren auf ein HID device geändert werden, und nicht wundern, sind nur Kleinigkeiten im Bezug zum Maus Projekt. Im .c ist dann der Report Descriptor zu ändern/neu zu erstellen, um eben mit den Daten machen zu können was einem beliebt. die Files device_hid_task.h und .c sind dann die Funktionalitäten des Devices, wie bei mir, dass es auf eine Startsequenz vom Host beginnt Daten an PC zu senden bzw Daten vom PC zu empfangen. Ich habe das ganze mit einem einfachen Protokoll gelöst, dass keine Daten verloren gehen, wenn ein Part (Host /device) zu langsam sind beim empfangen. Habe eine packetnummer eingefügt, bis das gesendete apcket von der gegenseite bestätigt wird, sendet die andere seite fröhlich das gleiche packet raus. wenn ihr noch Hilfe bei dem Code für den µC braucht, meldet euch, genauso wenn ihr Code vom PC seite braucht. Didi
Hallo Didi, ich interessiere mich auch für die USB Programmierung auf dem UC3, versuche gerade die Informationen für Manufacturer, Product, Serialnumber einzustellen. Im CDC example steht der Index auf 0. Bei Dir sind diese drei Werte mit 0x01, 0x02, 0x03 gesetzt. Wird das bei Dir am PC bei der Erkennung auch angezeigt? Gruß Michael
Hallo! Also, wenn das neue device angesteckt wird, sieht man kurz den manufacturer string, danach sieht man im Gerätemanager nur den Productstring, anbei das Foto vom Gerätemanager. CDC meldet sich ja nicht mit diesen Daten an, da am PC ja nur ein virtueller COM Port entsteht, daher ist dieses Bsp nicht ganz so sinnvoll wenn du auf HID umbauen willst.
Hallo an die noch schlaueren! Ich habe jetzt die Kommunikation zwischn Device und PC, es geht auch in beide Richtungen, aber wie schnell kann es denn nun maximal gehen? es sollten doch jede ms ein Report hin und her geschickt werden, tut es aber nicht! bei mir ist das nur alle 2 ms laut sniffer, dass heisst ich habe einen Datendurchsatz von 32 KB/sek und nicht die erhofften 64 KB/sek Vielleicht schaut ja einer rein der sich damit auskennt
Als was für ein HID- Device wird Dein AVR32 denn erkannt? Welchen Windowsteiber benutzt Du dann zum Zugriff? Gruß Tom
Das Device wird als HID konformes Gerät erkannt, standart Windows treiber für HID Geräte, zugriff mittels WINAPI und dann über HANDLE read/writefile gruß didi
Ich dachte HID-Geräte müsensten immer einer bestimmten Klasse angehören (Maus etc.) Wusste nicht, dass es da auch ein Generic HID device gibt. Gut zu wissen Tom
Wenn man ein Device als Maus oder Tastatur oder Joystick anmeldet, hat man das Problem, das WIndows ein exklusives zugriffsrecht darauf hat, man kann also mit den gesendeten daten nichst anfangen, da NUR Windows darauf zugreifen darf. darum nimmt man auch die generic devices, da Windows mit diesen nichts macht (komisch mit dem zeiger fahren, buchstabe schreiben etc.) und man zugriff auf das device bekommt! mir reichen die 32 KB/sek jetzt aber und ich lasse das jetzt gruß didi
Sind die 32 KB/sek das maximumg was man über ein HID-Treiber bekommt, oder liegt das am AVR32? Gruß Tom
Das ist eine gute frage, ich weiß es nicht :-( ich sehe nur im USB sniffer, dass alle 2 ms ein packet gesandt wird, egal in welche richtung, schneller wird es nicht mehr.. Falls mir noch irgendwo ein fünkchen an info zufliegt, mit dem ich das lösen kann, werd ich es posten, zur zeit sieht es aber schlecht aus, da sich noch nicht viele an eine reine HID programmierung getraut haben, die meisten haben entweder ein CDC Interface oder mit einem FTDI chip gearbeitet gruß dieter
Hallo, zu Device wird immer als Maus erkannt: man kann schonmal enumerierte Geräte im Gerätemanager komplett löschen: 1. Gerätemanager freischalten in den Systemeinstellungen die Systemvariable (nicht User!) DevMgr_Show_NonPresent_Devices=1 setzten 2. im Gerätemanager "Ansicht - Ausgeblendete Geräte anzeigen" aktivieren jetzt kann man auch nicht mehr vorhanden Geräte entfernen (da sollte man gerade als Entwickler gelegentlich mal aufräumen). Die sind dann grau. zur Geschwindigkeit: Ich hab bisher immer mit CDC gearbeitet, will aber auch wie du über HID o.ä. ran um parallel ein Laufwerk zu simulieren. Bei CDC komm ich durchaus auf 1Mbps. Sicher läufts zumindest bis 0,5Mbps. Mein Problem mit 1Mbps dürfte aber am Bluetooth Port hängen. Das hatte ich zu Testzwecken durchgeschleift. 1Mbps sollte eigentlich laufen. Das Beispiel von den Examples mit USB geht eigentlich. Zur Übersicht kann man auch den ganzen Host krahm löschen. Karsten
Hallo zusammen, ich habe ein paar Fragen zur Realisierung einer USB-Verbindung. Kurz zum Problem: Ich möchte zwischen einem PC und einem AVR32 UC3 eine USB-Verbindung herstellen und Messdaten aus einem externen Flash-Spiecher auf den PC kopieren. Wie umfangreich ist denn das Software Framework zu dem µC? Sind dort schon entsprechende Funktionen vorhanden? Die Application Notes haben mich in dieser Hinsicht leider nicht weiter gebracht. Alternativ könnte man die Daten auch auf einen USB-Stick kopieren oder eine SD-Karte anschließen. Habt ihr Erfahrungen in diesem Bereich? Viele Grüße, Marcel
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.