Hallo zusammen ich habe mal eine eher generell Frage zu USB-Tastaturen. Wenn ich meine USB-Tastatur an meinen PC anschließe, dann erkennt er diese als Tastatur und bindet die mittels der HID-Klasse ein. Was aber, wenn ich das Ding an einen µC anschließen will. Brauche ich dazu wirklich einen USB-Host Controller bzw. einen USB-Stack um die Tastatur zu betreiben/lesen, oder geht das auch anders? Solche USB-Host ICs sind ja recht teuer und ein USB-Stack nicht immer frei.
Ja, du brauchst auf jeden Fall einen USB Host incl. Stack und HID Treiber. Das kann aber auch ein Vinculum von FTDI sein, ich glaube, die können HID.
Wobei man das bei Tastaturen/Mäusen etwas relativieren kann, die sprechen üblicherweise neben HID auch noch ein einfacheres Protokoll (HIDBP). Dieses ist bewusst simpel gehalten, damit es im Rechner-Bios implementiert werden kann. Ist vielleicht einen Blick wert, vielleicht kann man so Teile des Stacks einsparen.
Ok. Der Vinculum fällt für mich dann schon mal weg. Das ist genau der teure USB-Host IC, den ich gefunden hab :) 14 Euro sind einfach zu teuer für das was ich machen will. Gibts denn irgendwelche guten und freien USB-Stacks für Atmel µC? Der von Atmel selbst ist ja mit derben Auflagen verbunden.
Es gibt einen Japaner der hat wirklich alles in Software auf seinem AVR implementiert und liesst so eine Maus und IMHO auch eine Tastatur aus. Er hat uebrigens auf seiner Homepage auch noch einen netten Hardwaredebugger der USB in LowSpeed ebenfalls mit einem AVR mitloggt! Allerdings weiss ich die Adresse nicht auswendig. Aber es reicht ja zu wissen das es moeglich ist und man kann es dann schnell selber schreiben. :-) Nebenbei gesagt, wenn das ganze ein rein privates Bastelprojekt ist dann sind 14euro eigentlich ein Witz. Wenn es dagegen um Stueckzahlen geht dann wird das ganze RICHTIG interessant, weil man man dann ja nicht nur eine Hardware/Software braucht die eine Tastatur lesen kann. Man braucht dann ja etwas das mit JEDER Tastatur klarkommt die irgendein Kunde irgendwo ansteckt. Mein Gefuehl sagt mir das da jede Menge Stress drin steckt. Olaf
Moin wie wäre es mit KeyWarrior von Code Mercenaries www.codemercs.com mfg
Danke für die Werbung, aber der KeyWarrior ist die Tastaturseite, hier wurde aber nach dem Host gefragt um genau so eine Tastatur anschließen zu können.
OK überredet. Der Vinculum hat das Rennen gewonnen. Aber wenn ich mir schon teure Hardware leiste, dann würd ich mir am liebsten ein fertiges Modul mit nem Atmel µC und einem Vinculum leisten. Gibts da eigentlich jemaden, der sowas anbietet? Bisher habe ich immer bei chip45.de bestellt, aber sowas gibts da auch nicht :(
Ganz erheblichen Bastelaufwand spart man sich, wenn man für /diese Anwendung/ darauf verzichtet, eine USB-Tastatur zu verwenden, und stattdessen eine Tastatur mit PS/2-Anschluss verwendet. So etwas wird nach wie vor hergestellt.
Das stimmt. Aber Ziel des Projekts ist es nun mal eine USB-Tastatur zu nutzen :) Soll sozusagen auch gleichzeitig als Einstieg in die USB-Welt dienen, damit ich da mal ein bisschen Fuß fassen kann.
>Soll sozusagen auch gleichzeitig als Einstieg in die USB-Welt dienen, >damit ich da mal ein bisschen Fuß fassen kann. Was ist das denn für ein "Einstieg"? Einen Vinculum zu benutzen ist genauso gut wie die Tastatur in einen PC zu stecken.
Wir haben im Studium mal einen PS2 to USB Tastatur Konverter gebaut, auf Basis eines PIC18. Der PIC meldet sich am PC mittels HID klasse als Tastatur und liest andererseits von der PS2 Schnittstelle. Hat alles sehr toll funktioniert. Witzigerweise kann man statt der PS2 Schnittstelle auch eine USB Schnittstelle nutzen, und somit statt einer PS2 Tastatur eine USB Tastatur. Es macht am PIC einfach keinen Unterschied, das USB Tastaturen scheinbar erkennen koennen, ob sie ueber PS2 oder USB angeschlossen sind und dann sich entsprechend verhalten. Hilft das weiter?
Naja, ein USB Device ist ja auch um Größenordnungen weniger aufwendig als ein USB Host. Das ist übrigens eines der Hauptkonzepte an USB. Devices sollen so günstig wie möglich machbar sein. Die meiste Intelligenz steckt dann im Host. Wobei ein Vinculum weder teuer ist (für das was er kann), noch irgendwie einen Lerneffekt bietet. Dann lieber einen Hostcontroller ohne Stack und den Stack portieren. Gibts ja mittlerweile genügend Ansätze. Oder halt aus dem Linux Kernel raus nehmen...
> Witzigerweise kann man statt der PS2 Schnittstelle auch eine > USB Schnittstelle nutzen, und somit statt einer PS2 Tastatur > eine USB Tastatur. Es macht am PIC einfach keinen Unterschied, > das USB Tastaturen scheinbar erkennen koennen, ob sie ueber > PS2 oder USB angeschlossen sind und dann sich entsprechend verhalten. Nein, das ist ein Missverständnis. Die von Dir verwendete Tastatur war eine bilinguale, die beide Protokolle unterstützte. So etwas gibt es auch bei Mäusen, genauso, wie es früher auch serielle Mäuse gab, die auch das PS/2-Protokoll unterstützten.
Das mag auch sein, habe es nur mit 2 USB Tastaturen ausprobiert. Würde das ganze aber erklären
Das mag nicht sein, sondern ist so. Es waren keine USB Tastaturen, sondern solche die PS/2 und USB über die gleichen Leitungen können.
Nur zur Verteidigung: Einen Vinculum zu nutzen ist wohl die einfachste Möglichkeit sowas zu realisieren, aber für den einen oder anderen schon ein Einstieg in die USB-Welt. Ich muss doch nicht immer einen Stack in meinen Controller reinbauen um diverse Schaltungen "USB-fähig" zu machen, oder? Für mich bedeutet einfach auch irgendwie besser. Das passt zwar nicht immer, aber doch oft. Würde z.B. der ENC28J60 nicht nur die ersten zwei Schichten des Osi-Modells abbilden, sondern auch die nächsten zwei, dann wär ich super beeindruckt und würde ihn noch lieber benutzen. Mit nem Stack gehts natürlich auch, und man lernt auch was dabei, aber ich muss und kann ja nicht alles wissen. Alles in Allem bin ich froh wenn mir Hardware Arbeit abnimmt.
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.