Hallo,
ich hab letzte Woche die Schaltung nach
http://www2.htw-dresden.de/~beck/Atmel/Keyboard/PS_2-keyboard.html
aufgebaut und einen Atmega8 mit dem Beispiel programmiert. Wenn ich eine
übliche PS/2 Tastatur anschließe, funktioniert alles so, wie gewünscht.
Nun wollte ich eine USB Tastatur anschließen, welche einen passiven
Adapter von USB zu PS/2 mitbringt. Leider sagt diese Tastatur gar
nichts.
Meine Webrecherche hat ergeben, dass eine USB/PS2 Tastatur eigenständig
erkennt, dass sie im PS/2 Modus arbeiten soll. Ich finde nur nirgendwo
eine Beschreibung, wie diese Erkennung funktioniert. Am PC funktioniert
sie am PS/2 Anschluss, also muss es etwas mit der Schaltung oder deren
Software zu tun haben.
Hat jemand eine Idee, woran das liegt bzw liegen könnte?
Danke und sonnige Grüße
Simon
Nun, zunächst mal muss es eine bilinguale Tastatur sein (also eine, die
tatsächlich sowohl USB als auch PS/2 "spricht"), dann muss der Adapter
zur Tastatur passen (es ist nicht gesagt, daß die Dinger
herstellerübergreifend identisch sind) und zuletzt muss der PS/2-"Host",
also Dein µC, sich bei der Ansteuerung exakt so verhalten wie ein PC.
Rufus,
danke für deine Antwort!
Die Tastatur kommt mit einem eigenen, passiven Adapter und funktioniert
am PS/2 Port des PC tadellos. Dass es einen Unterschied zum PC geben
muss, ist daher logisch. Ich frage mich, wo ich ansetzen soll, da ich
keine Ahnung hab, wie eine bilinguale Tastatur feststellt, in welchen
Modus sie wechseln soll. "Blind" eine Konfiguration an die Tastatur
schicken? Während des Power-On eine bestimmte Clk/Data Kombination
anlegen?
Viele Grüße
Simon
Lass mal den Schaltplan sehen, dann kann dir geholfen werden.
PS: PS2 setzt OC Treiber mit pull-up voraus. Dies wird vor allem beim
Clock gerne weggelassen. Weiters wird gleich nach dem Einschalten
entschieden
welches Protokoll gefahren wird, ein start-up delay des Mikrocontrollers
kanns sich da sehr stören sein, wenn man interne pull-ups verwendet.
Die Steckerbelung zwischen USB und PS2 ist Herstellerübergreifend.
Ich hab 1:1 die Schaltung und Software von
http://www2.htw-dresden.de/~beck/Atmel/Keyboard/PS_2-keyboard.html
verwendet. Als Pull-Ups bin ich dem Hinweis gefolgt, dass diese im AVR
bzw der Tastatur (Appnote 313 von Atmel) liegen. Also könnte es daran
liegen, dass diese fehlen? Reine PS/2 ok, bilinguale nicht ok?
Hab ich gemacht. Bei dieser Tastatur hat ein Pullup an Data ausgereicht.
Scheinbar kontrolliert die Tastatur schneller, als die Pullups des AVR
geschaltet sind.
Danke für den Tipp!!!
Viele Grüße
Simon
Ja, das hatte ich mit dem Satz gemeint, für reine PS2 Tastaturen braucht
mand die nicht, das geht dann auch ohne.
Chris schrieb:> Weiters wird gleich nach dem Einschalten> entschieden> welches Protokoll gefahren wird, ein start-up delay des Mikrocontrollers> kanns sich da sehr stören sein, wenn man interne pull-ups verwendet.
Ich bin über eine Suchmaschine auf diesen Beitrag gestoßen da ich das
selbe Problem habe. Ich hatte bisher eine alte PS2 Tastatur an meinen
Arduino Uno angeschlossen und das funktionierte. Nun habe ich eine
USB-Tastatur mit beiliegendem PS2 Adapter angeschlossen und nichts geht
mehr.
Ich bin noch µC Neuling und verstehe daher die Erklärung zur Lösung
nicht. Könnte mir das mal bitte jemand erklären so das es ein Laie
versteht? Vielen Dank!! Vielleicht auch gleich für Arduino passend :)
Das hat mit Arduino nichts zu tun. Die PS/2 Tastaturen erwarten an Clock
und Datenleitung einen starken Pullup - 2k2 bis 3k3 von beiden Leitungen
auf +5 Volt ziehen, du brauchst also 2 Widerstände.
Cool, vielen Dank das hat funktioniert :)
Wäre als Erklärung folgende richtig:
ein pullup ist sozusagen ein Stromstoß wo der Tastatur mitteilt "Ich bin
ps2" ? Oder wie kann man das einfach erklären?