Hallo an alle.
Ersmal ein großes Lob!
Super Forum hab ihr hier!
Ich lese auch schon einige Zeit bei euch mit, habe mich jetzt
entschlossen mal aktiv tätig zu werden.
Zu meinem Vorhaben:
Ich möchte mit geringstem Kostenaufwand eine Minitastatur mit nur drei
Tasten basteln. Die Tastatur soll über USB am PC betrieben werden
(Windows/Linux).
Funktionen der Tasten sollen >>arrow_up<< >>arrow_down<< und >>enter<<
sein.
Die Tastatur soll ohne zusätzlichem Treiber am PC funktionieren.
Meine Hardware:
Atmel Evaluations-Board V2.0.1 von Pollin
Atmel Addon-Board von Pollin
USB-JTAG Programmer
Atmega 16-16PU
Atmega 8-16PU
Meine Software:
AVR Studio
Ich habe auch schon ein paar gehversuche mit dem JTAG-Programmer und dem
Atmega16 gesammelt.
Da ich mich aber etwas an dieses Projekt
http://www.obdev.at/products/vusb/hidkeys.html
von V-USB halten möchte, habe ich mir einen Atmega8 zugeleget und kann
jetzt nicht mehr mit meinem JTAG-Programmer arbeiten.
Meine Probleme:
Wie bekomme ich das Programm von V-USB über ISP auf meinen Atmega8?
Was muß ich am Programm verändern damit ich die o.g. Tasten an
bestimmten Pins habe?
Wenn sich jemand evtl. die Mühe macht und mir eine Schritt für Schritt
Anleitung macht wäre super super super!!!
MFG
Stefan
Du könntest auch einen Mega 32U4 und den LUFA USB-Stack nehmen.
Der 32U4 hat einen richtigen, normgerechten Full-Speed USB-Port und JTAG
eingebaut.
Zu LUFA guckst Du hier:
http://www.fourwalledcubicle.com/LUFA.php
fchk
Danke für den Tipp!
Ich bin für jeden Vorschlag dankbar aber das ist nicht das Richtige für
mich.
Der µC ist SMD und da ich kein SMD löten kann müsste ich mir ein
fertiges Board kaufen und das ist in meinem Budget einfach nicht drin.
Selbst der Einzelpreis ist das Doppelte vom Atmega8.
Trozdem Danke!
Gruß
Stefan
@ ubimbo.
Hallo Michael.
Danke für den Tipp.
Wenn du mein #1 Post nochmal anschaust wirst du sehen das der Link auf
die Seite von V-USB führt.
Ein bisschen hab ich schon recherchiert bevor ich hier Fragen stelle.
Trozdem Danke!
Gruß
Stefan
Hi,
auch wenn ich gleich gesteinigt werde...
Für einfach USB bei µC mit DIP hast du mit AVR aufs falsche Pferd
gesetzt.
Hast du die Möglichkeit leihweise an einen Programmer für PICs (z.B.
PicKit3)zu kommen? (Alternativ halt Selbstkauf für ab 20Eur. mit
Versand)
IDE und Compiler sind kostenlos zum Download.
Dann Pic 18F13K50 im 20Poligen DIP Gehäuse verwenden, kostet so
1,50-2,00 Euro und ist fast überall zu bekommen. Das was du möchtest
(3Tasten HID) gibt es bereits als Beispielapplikation direkt von
Microchip zum Download, Standartbeschaltung dran und die
Beispielapplikation übernehmen. Einzige Änderung die du machen musst ist
die Kennung der Tasten im Programm anzupassen damit halt die Pfeiltasten
übertragen werden...
Den ganzen USB Kram rein über Software im AVR ohne HardwareUSB
nachzubilden habe ich aufgegeben, viel zu Fehleranfällig und unflexibel.
Die AVRs mit USB gibt es aber leider nicht in DIP, vond er schlechten
Verfügbarkeit mal ganz abgesehen.
Falls du dir einen PIC Prommer leihen kannst dürfte der Einsatz eines
PICs sowohl der günstigste -wie auch der schnellste Weg sein dein
Projekt stabil zum laufen zu bekommen.
Gruß
Carsten
Mit V-USB lassen sich einige schöne HID-Sachen machen. Dein Vorhaben
lässt sich damit simpel umsetzen, auf andere Hardware umzusatteln halte
ich in diesem Falle nicht für notwendig. Am einfachsten fährst du, indem
du eines der Beispielprogramme (z.B. HID-Keys) entsprechend deinen
Vorstellungen modifizierst. In puncto Stabilität habe ich mit V-USB noch
keine Probleme gehabt. Meine Projektchen gehen zwar auch nicht über
kleine Byteschickereien hinaus, aber hier ist ja nichts gefordert, was
im mindesten darüber hinaus ginge.
EDIT:
Man bin ich ein Depp, ich hab' deinen Post abgeschrieben ;-P Deine Frage
richtet sich ja sogar genau nach HID-Keys...
Du musst lediglich das keyReport anpassen, der Code dürfte da
selbsterklärend sein...
Ich bin jetzt ein kleines Stückchen weiter gekommen.
Ich habe jetzt mit PonyProg2000 die schon vorhandene HEX Datei vom
HID-Keys Projekt auf meinen Atmega8 bekommen.
Wenn ich das richtig verstanden habe müsste ich den Code für mein
Vorhaben aber erst anpassen.
Richtig?
@drohgebaerde
So selbserklärend ist der Code für mich Anfänger leider noch nicht ganz,
auch wenn des Ganze bestimmt gut dokumentiert ist.
Ich finde noch nicht mal den von dir angesprochenen keyReport.
Wo soll der sein?
Ich finde nur eine main.C und eine usbconfig.h im Hauptverzeichniss.
Sorry könntest du mir da evtl. weiterhelfen?
@dg3ycs
Danke für den Tipp!
Im Moment will ich erst mal sehen wie der Atmega läuft(wenn er mal
läuft).
Falls ich mit dem Atmega8 überhaupt nichtweiterkomme werde ich deinen
Rat in erwägung ziehen.
Gruß
Stefan
nimm einen Teensy, habe ich mir für 14,95 incl. USB-Stickgehäuse
gekauft,
billiger (und vor allem einfacher) kriegst du das auch nicht hin,
Programmer brauchst du auch nicht, da ist ein USB Bootloader drin
Stefan Brütting schrieb:> Brauch ich unbedingt ein 12Mhz Quarz oder oder geht das auch mit> internen Oscillator bzw. 16Mhz Quarz ?(da schon vorhanden)
Es geht auch mit einem 16MHz-Quarz. Du musst nur daran denken, nicht nur
F_CPU, sondern auch USB_CFG_CLOCK_KHZ zu ändern, falls diese nicht
automatisch (F_CPU/1000) berechnet wird.
Man kann auch eine USB Tastertur schlachten und die controllerpolatine
von der Tastenfolie abtrennen die passenden Tasten durchmessen mit dem
Ohmmeter und die Drei Tasten dan richtig an die Controllerplatine
anlöten.
Die controller sind Oft auch im Großem Gehäuse.
@Walter
Klar geht's billiger. Mit einem Atmega8 und V-USB ;-)
Für dieses Projekt muss definitiv kein neuer Controller gekauft
werden... Es hat's auch nicht so locker mit dem Geld, für Spielereien
gleich irgendwas zu kaufen, alles andere lässt sich mit Probierdrang
erklären. Zumal es hier, wie gesagt, tatsächlich nicht notwendig ist,
was neues zu kaufen.
@Topic: In der main.c findest du:
1
// [...]
2
staticconstucharkeyReport[NUM_KEYS+1][2]PROGMEM={
3
// [...]
Den Tasten 1 - 17 (die "pin assignments" stehen weiter oben als
Kommentar in der main.c) sind die Buchstaben A - Q ("keyboard usage
values", ebenfalls weiter oben) zugeordnet. Im keyReport kannst du das
entsprechend anpassen.
Um auf Taste 1 ein kleines z zu legen trägst du ein:
1
/* 1 */{0,KEY_Z}
entspricht
1
{0,0x1d}
"0x1d" ist die spezifische usage ID für den Buchstaben z auf einem
USB-Keyboard. Deine gewünschten Tasten musst du entsprechend mal in den
USB HID Usage Tables nachgucken
(http://www.usb.org/developers/devclass_docs/Hut1_12.pdf -> Kapitel 10)
und eintragen.
@hownottobeseen
So ich habe nun den Code entsprechend abgeändert:
1
#define F_CPU 16000000L /* evaluation board runs on 4MHz */
aber wo finde ich "USB_CFG_CLOCK_KHZ" ???
Ich habe mir die aktuellste Version von
http://www.obdev.at/products/vusb/hidkeys.html
heruntergeladen
@drohgebaerde
Danke für deine Hilfe.
Ich habe das Programm soweit geändert:
1
#define KEY_F12 69
2
#define KEY_DOWN 81
3
#define KEY_UP 82
4
#define KEY_ENTER 40
5
6
staticconstucharkeyReport[NUM_KEYS+1][2]PROGMEM={
7
/* none */{0,0},/* no key pressed */
8
/* 1 */{0,KEY_DOWN},
9
/* 2 */{0,KEY_UP},
10
/* 3 */{0,KEY_ENTER},
11
/* 4 */{MOD_SHIFT_LEFT,KEY_D},
Ich hoffe dass ich damit auf
PB0 "Pfeil-runter"
PB1 "Pfeil-hoch"
PB2 "Enter"
gelegt habe.
Ist das so richtig?
Ich bin mir nicht so sicher, ob V-USB mit anderen Quarzen als 12 MHz
funktioniert, denn die sehr zeitkritische USB-Empfangsroutine darin ist
Assembler, und geht von einer bestimmten Befehlsausführungszeit aus. Die
Takte sind genau abgezählt, zumindest früher gingen andere Quarze nicht.
Vielleicht gibt es aber inzwischen eine neue Revision, möchte das nicht
ausschließen.
Chris R. schrieb:> Stefan Brütting schrieb:>> Brauch ich unbedingt ein 12Mhz Quarz oder oder geht das auch mit>> internen Oscillator bzw. 16Mhz Quarz ?(da schon vorhanden)>> Es geht auch mit einem 16MHz-Quarz. Du musst nur daran denken, nicht nur> F_CPU, sondern auch USB_CFG_CLOCK_KHZ zu ändern, falls diese nicht> automatisch (F_CPU/1000) berechnet wird.
Hast du es schon mal getestet mit einem 16Mhz Quarz?
Hallo Stefan B.,
wenn Du Dir mal die Seiten von OBDEV anschaust, dann wirst Du viele
Antworten auf Deine Fragen bekommen - alleine durch Lesen.
Gruß Sam
Hallo Sam
leider hab ichs nicht so mit Englisch.
Aber ich hab zumindest rausgefunden dass es auch mit 16Mhz Quarz
funktionieren müsste.
Reicht es dann wenn ich F_CPU anpasse (???) oder muss ich wie von
Chris R. geschrieben:
>...Du musst nur daran denken, nicht nur>F_CPU, sondern auch USB_CFG_CLOCK_KHZ zu ändern, falls diese nicht>automatisch (F_CPU/1000)berechnet wird.
noch andere Sachen anpassen?
Ich finde aber nichts ausser F_CPU.
Gruß
Stefan
> V-USB can currently handle clock rates of 12 MHz, 12.8 MHz, 15 MHz, 16 MHz, 16.5
MHz, 18 MHz and 20 MHz.
Schau dazu mal in die usbdrv.h und die clock.h
Tom M. schrieb:>> V-USB can currently handle clock rates of 12 MHz, 12.8 MHz, 15 MHz, 16MHz, >>16.5MHz, 18 MHz and 20 MHz.>> Schau dazu mal in die usbdrv.h und die clock.h
Die usbdrv.h sagt mir:
>The device MUST be clocked at 12 MHz
darauf folgere ich es geht nur mit 12Mhz obwohl auf der OBDEV was
anderes steht.
Leider kann ich die clock.h bei mir nicht finden!?!?
Also ich hab es gerade mit dem 16Mhz Quarz getestet.
Voher natürlich F_CPU angepasst.
Schaltung wie bei V-USB beschrieben aufgebaut.
(unterschied ich hab 22pF anstatt 27pF beim Quarz weil auf meinem Board
so vorhanden)
USB-Gerät wird erkannt und dann sagt er teiber nicht richtig
installiert.
Gerätemanager sagt: Angehalten Gerät meldet Fehler.
Wenn ich meinen 12Mhz Quarz bekomme teste ich weiter.
Gruß
Stefan