-
PS\2 Tastatur
Hi,
Ich hab schon ne Weile darüber nachgedacht, aber ist es möglich eine normale PS\2 Tastatur über einen AVR auszulesen?
Ich habe schon danach gesucht und Pinbelegungen usw. gefunden, nur wie man es jetzt anschließt und vor allen Dingen wie man es programmiert (Bascom) weiß ich noch nicht so richtig :-k
Hat jemand Erfahrungen damit und würde es ohne viel weitere Hardware funktionieren?
Mfg
Elektronik303
-
Und wieder hilft die Hilfe in Bascom.
Such mal mit "ps2" da findest du gleich alles nötige auf einen haufen.
Dazu bei den Samples nach "ATKBD.bas" Ausschau halten ;)
-
Ich meine, dass dazu auch etwas in der BASCOM-Hilfe steht.
Durchsuche mal die "Config" Befehle.
Die Auswertung ist recht einfach.
In irgendeinem Buch zu den AVRs ist das auch nochmal erklärt. Ich weiß nur gerade nicht, welches es war.
jon
EDIT: *g* mal wieder zu lange zum Schreiben gebraucht *g*
EDIT²: Verwendest du überhaupt BASCOM??
-
Joa, da hatte ich schon reingeschaut, also wenn ich das da richtig verstehe muss ich die Pins von der Tastatur nur mit dem Prozessor verbinden, nur das konnte ich nicht so richtig glauben ^^
-
Du hast es richtig verstanden. Ist ganz einfach!!
jon
-
So, also angelötet hab ichs jetzt, mal gucken ob ichs hinkrieg :-k
-
Was für einen µC verwendest du und an welche Pins hast du die Tastatur angeschlossen?
Ich habe bei mir einen Code gefunden. Den könnte ich noch schnell anpassen und dir dann schicken.
jon
-
Ich habe den Code von Klaus Kühnel gefunden.
Man kann hier (unter Mikrocontroller --> AVR) einen ganzen Zip-Ordner (Programmbeispiele zum Buch) runterladen. Die Datei, die du brauchst heißt "ATKBD.BAS". Da brauchst du nichts extra zu kaufen.
jon
-
Ok, also ich hab die Tastatur angeschlossen und ein wenig geraten ^^ Wegen den Leitungsfarben... Ich hab das Kabel abisoliert und mir gedacht Rot muss +5V sein, Weiß GND, dann warn da noch Grün und Blau, einer von beiden musste Clock sein, nur welcher? Dann hab ich mir gedacht dass ich ja zwei mal INT hab (INT0 und INT1) einfach den Grünen an INT0(PD2) und den Blaun an INT1(PD3). Dann hab ich in dem Code die ganzen "print" mit "lcd" ausgewechselt (hab ein 16*2 Display dran). Das hab ich übetragen aber geklappt hats nicht... Dann hab ich im Code das PD2 und PD3 getauscht... klappt aber auch nicht... Hier mal mein Momentaner Code:
Code:
$lib "lcd4busy.lbx"
$regfile = "attiny2313.dat" ' ATmega8
$crystal = 4000000 ' für STK500
$baud = 19200
Config Lcd = 16 * 2 'wir verwenden ein 4 x 20 Zeichen Display
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 1
Const _lcd_rw = 2
Const _lcd_rs = 3
Waitms 100
Initlcd
Cls
Cursor Off Noblink
Config Keyboard = Pind.3 , Data = Pind.2 , Keydata = Keydata
Dim B As Byte
Lcd "Eingabetest"
Do
B = Getatkbd() ' Abfrage der Tastatur
If B > 0 Then
Lcd B
End If
Loop
End
Keydata:
' Shift-Taste nicht gedrückt
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
' Shift-Taste gedrückt
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
Woran liegts???
-
Raten ist nicht nötig.
Schau mal in eines der vielen Kabel-Faq's im Web da findest du die Belegung.
Ein Multimetr oder ein einfacher Durchgangsprüfer hilft beim Selektieren.