mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega32 bzw. Mega8 <-> USB (HID) <-> PC (Windows). Hat jemand Mini - Code C++


Autor: Waldemar F. (wally)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Waldemar F. (wally)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
gcc  -O -Wall  -c hidtool.c -o hidtool.o
process_begin: CreateProcess(NULL, gcc -O -Wall -c hidtool.c -o hidtool.o, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
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

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal oben im Makefile folgenden Eintrag hinzuzufügen.
SHELL=cmd.exe
Kann bei diesem Fehler manchmal helfen.

Autor: Waldemar F. (wally)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
C:\WinAVR-20100110\MinGW\bin>gcc -v
Reading specs from ../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi
th-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --dis
able-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --d
isable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --with
out-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enabl
e-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
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.

Autor: Christopher G. (cbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Waldemar F. (wally)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ja habe gerade ne Seite gefunden die genau das gleiche sagte - dennoch 
vielen Dank.

Habe bei Umgebungsvariablen unten bei PATH einfach noch
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 :)

Autor: Waldemar F. (wally)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

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.