Hallo liebe Wissende, das Stöbern im Forum und Internet hat mir zwar die Theorie näher gebracht jedoch habe ich es immernoch nicht geschafft eine funktionierende Verbindung aufzubauen. Anforderung: Wie viele von euch möchte ich gelegentlich einige Daten zwischen uC und PC hin und her senden. Geschwindigkeit ist egal, nur muss es per USB (am besten ohne Treiber -> HID) geschehen. Ich bitte euch mir mit kleinen Codeschnippseln zu helfen. Ich brauche einfach nur ein funktionierenden Code sowohl für den uC als auch für den PC der ein Zeichen sendet bzw. empfängt. Alleine bekomme ich das einfach nicht hin. Falls du also irgendwann mal eine Kommunikation zwischen PC und uC mittels USB und HID hinbekommen hast, bitte lass mir den Code (Teile davon) zukommen, sodass ich endlich mal wieder ein Erfolgsmoment bekomme :) Ich weiß man hat viel Arbeit in seinen Code gesteckt und gibt diesen ungern ab, jedoch brauche ich keine super-genialen Ideen sondern nur den minimalsten Code ... Einstellungen von irgendwelchen Variablen und die Übertragungsfunktionen. Das wäre echt genial wenn mir jemand helfen könnte. Vielen Dank und lieben Gruß Waldemar
Hallo Waldemar, ich bin als erstes mit diesem: http://www.obdev.at/products/vusb/download.html im Ordner examples/hid-data gut klar gekommen. Viel Glück hp-freund
Hallo nochmal :) Habe mir nun das Beispiel genauer angesehen. Würde es gerne testen, doch beim erstellen der commandline habe ich Probleme. Ich bekomme nachdem ich make -f Makefile.windows eingegeben habe:
1 | gcc -O -Wall -c hidtool.c -o hidtool.o |
2 | process_begin: CreateProcess(NULL, gcc -O -Wall -c hidtool.c -o hidtool.o, ...) failed. |
3 | make (e=2): Das System kann die angegebene Datei nicht finden. |
4 | make: *** [hidtool.o] Error 2 |
Bin es gewohnt Programme für den PC in einem Studio z.B. Borland bzw. Turbo C++ zu schreiben - komme mit der Makefile auf keinen grünen Zweig. Die Programme für den uC bekomme ich allerdings hin - das Compilieren funktioniert. Hat also vielleicht jemand ein Hinweis für mich wie ich diese Commandline letztendlich zu einer .exe bekomme? Sei es irgend ne Einstellung beim GCC oder MINGW oder ein Code für Turbo C++? Oder hat vielleicht jemand anderen - kürzeren - einfacheren Code der mir ein HID Gerät erzeugt bei dem ich einfach irgend ein Zeichen hin und her senden kann? Danke nochmal Leute Grüße Waldemar
Bei mir gehts. C:\vusb\vusb-20090822\examples\hid-data\commandline>make -f Makefile.windows gcc -O -Wall -c hidtool.c -o hidtool.o gcc -O -Wall -c hiddata.c -o hiddata.o gcc -o hidtool.exe hidtool.o hiddata.o -lhid -lsetupapi 1. funktioniert gcc allein? 2. hast Du http://libusb-win32.sourceforge.net/ installiert ? Wenn das nicht funktioniert, wird sich auch kein anderes USB-Programm erstellen lassen...
Probier mal oben im Makefile folgenden Eintrag hinzuzufügen.
1 | SHELL=cmd.exe |
Kann bei diesem Fehler manchmal helfen.
Huhu :) Also libusb hatte ich nicht installiert - dachte wäre nicht nötig. Nachdem ich es eben geladen und installiert hatte ging nach einem Neustart meine Maus nicht mehr. Weitere Neustarts haben nichts gebracht. libusb hat nicht nur meine Maus sondern auch Netzwerkkarte lahm gelegt. Ich musste per Tastatur das Teil wieder deinstallieren ... und tadaa .. es geht wieder alles wie gewohnt .. puh - nochmal Glück gehabt :) ... ansonsten setze ich mich morgen mal an ein XP Rechner (bin gerade an Win 7) und probier das libusb da mal zu installieren ... SHELL=cmd.exe hat leider auch nichts weiter geholfen. Habe gemerkt, dass gcc nicht richtig funktioniert. Gebe ich gcc in meiner Kommandozeile (cmd.exe) ein, so kennt er den Befehl nicht. Gehe ich allerdings in das Verzeichnis und gebe es dort ein funktioniert es:
1 | C:\WinAVR-20100110\MinGW\bin>gcc -v |
2 | Reading specs from ../lib/gcc/mingw32/3.4.5/specs |
3 | Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi |
4 | th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --dis |
5 | able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --d |
6 | isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --with |
7 | out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enabl |
8 | e-hash-synchronization --enable-libstdcxx-debug |
9 | Thread model: win32 |
10 | gcc version 3.4.5 (mingw-vista special r3) |
Muss ich gcc etwa irgendwo in Windows eintragen, dass er den Befehl kennt? Es ist seltsam, dass die avr-Sachen funktionieren .. nur dieses Windowszeug per Makefile habe ich noch nie gemacht :) Ich denke allerdings wir sind dem Ziel sehr nahe - wenn das dann funktioniert kann ich endlich mit Tests beginnen :) Deswegen schonmal ein kleines Danke an euch an dieser Stelle.
Die Pfade von make.exe, avr-gcc.exe usw müssen in der PATH Umgebungsvariable stehen. Ob Benutzer- oder Systemvariable ist egal aba bei einem von beiden müssen die Pfade stehen.
Hi, ja habe gerade ne Seite gefunden die genau das gleiche sagte - dennoch vielen Dank. Habe bei Umgebungsvariablen unten bei PATH einfach noch
1 | C:\WinAVR-20100110\MinGW\bin |
eingetragen - denn da liegt ja die gcc.exe. Danach habe ich mich neu angemeldet (PC neustart nicht nötig) und es hat funktioniert. Konnte jetzt den V-USB-Code auch erfolgreich compilieren .. eine .exe wurde erstellt - perfekt. Jetzt geht es erstmal ins Bett und morgen versuche ich mich an der Kommunikation :)
Also :) Ich habe vorhin die minimalkonfiguration gebastelt und mit meiner generierten firmware mein mega8 geflasht. Alles funktioniert einwandfrei - perfekt! Wobei ich statt der beiden 68Ohm einfach je ein 100Ohm genommen habe. Danke euch! Nun bin ich einen gewaltigen Schritt in meinem Vorhaben weiter. Der Tipp mit dem vusb war super. An alle die das gleiche vorhaben wie ich: einfach gcc ordentlich installieren (mit dem PATH siehe oben) damit die .exe erzeugt werden kann. Die Makefiles konfigurieren, also die FUSE settings machen bzw. mit dem eigenen Programm die FUSEs setzen - ich habe erst FUSE_H - dann das FUSE_L gesetzt. Anschließend die .hex generieren, firmware flashen, .exe generieren. Sobald man den uC per USB anschließt erkennt er ein HID gerät usw. und meldet, dass es erfolgreich installiert wurde. Anschließend die .exe starten .. mit read lesen (stehen die ersten paar werte aus dem EEPROM drin) .. mit z.B. write 0x13, 0x37 einfach schreiben .. und siehe da .. im EEPROM steht nach dem nächsten read 1337 im EEPROM ... wunderbar ... :) .. nun muss ich Code lesen ändern anpassen :) Danke nochmal.
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.