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
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
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