PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme beim Anschließen von Tastatur



Aquafisch
02.09.2007, 10:10
Hallo!

Ich bin noch relativ neu bei der Mikrocontroller-Programmierung.

Ich möchte eine normale Tastatur mit einer PS/2 Schnittstelle an einen MIkrocontroller anschließen. Dazu habe ich die Dataleitung und die Clockleitung mit zwei Pins eines Controllers (Atmega32) verbunden und für die Stromversorgung gesorgt.

Ich habe den Controller mit folgendem Code programmiert:



$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600


Config Keyboard = Pind.5 , Data = Pind.6 , Keydata = Keydata

Dim Key As Byte

Print "Test der Eingabe von einer AT-Tastatur"

Do
Key = Getatkbd()

Print Chr(key)

Loop


End

Keydata:
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

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



Leider funktioniert das nur halb.
Manchmal werden falsche Tastendrücke angezeigt, manchmal gar keine.

Nur selten wird der richtige Tastenddruck angezeigt.

Woran liegt das?

Danke für eure Bemühungen,

aquafisch

Lunarman
02.09.2007, 10:33
Ich hab dazu ne Frage, und zwar, ob die selbe taste auf der Tastatur auch verschieden erkannt wird oder die Tasten anscheinend falsch zugeordnet sind. Also ab a immer g ergibt oder ob a je nachdem alles ergeben kann... das erstere ist wäre natürlich das bessere, deshalb geh ich vom zweiten aus. Hört sich nach einem Timingproblem an, das heißt halt dass einzelne Bits nicht erkannt werden und so halt Murks rauskommt. Leider hab ich da sonst nicht allzuviel Ahnung von, wundere mich aber, warum das mit 16 Mhz (die hoffentlich auch als Quarz vorhanden sind und eingestellt sind) nicht geht, eigentlich müsste das schnell genug sein...
Hab mir grad den Artikel über PS/2 in der wikipedia durchgelesen, kann es eventuell sein dass du aus welchem Grund auch immer clock auf low ziehst? Das würde ja begründen, warum nix ankommt, ist aber mehr als merkwürdig... mit den Bascom-Funktionen hab ich mich noch nicht auseinandergesetzt, weshalb ich dir dazu nichts sagen kann, kann micch allerdings auch hier nur darüber wundern, dass du kein Output oder Input angibst, ich gehe mal davon aus dass Bascom das automatisch macht. ist es Absicht, dass du ausgerechnet den PWM-Pin und den ISP-Pin benutzt hast? Sind die für die Tastatur notwendig oder wie? Das sind echt die letzten pins die ich benutzt hätte. Außerdem: Ist der M32 in einem RN-Control oder sonstigem Board von Robotikhardware oder selbst aufgebaute Schaltung? ich stell grad son paar doofe Fragen, aber ich kann nur spekulieren.

MFG
Lunarman

Jon
02.09.2007, 11:24
Das Programm ist soweit ok.
Vielleicht hilft es ja, wen du mal
$hwstack = 32
$swstack = 10
$framesize = 40
reinsetzt. Wobei ich kaum glaube, dass das hilft^^

Hast du während dem Auslesen der Tastatur den ISP-Stecker angeschlossen? Dann könnte es nämlich zu Störungen kommen. Versuche mal andere Pins zu nehmen.

@Lunarman,

ob die selbe taste auf der Tastatur auch verschieden erkannt wird oder die Tasten anscheinend falsch zugeordnet sind.
Die Zuordnung scheint wohl richtig zu sein, wenn manchmal die richtige Taste ausgegeben wird.


mit den Bascom-Funktionen hab ich mich noch nicht auseinandergesetzt, weshalb ich dir dazu nichts sagen kann, kann mich allerdings auch hier nur darüber wundern, dass du kein Output oder Input angibst, ich gehe mal davon aus dass Bascom das automatisch macht.
Das macht BASCOM automatisch, wenn du den Config Keyboard Befehl verwendest.

jon

Aquafisch
02.09.2007, 14:41
Danke für die Antworten.
Aber leider funktioniert es immer noch nicht, obwohl ich den Quarz überprüft habe, und die Pins aud die die Leitungen gelegt sind, geändert habe. Das ist glaube ich bei der Tastatur sowieso egal.

Es ist so, dass meistens wenn man die Tasten drückt nur eine "Leerzeile" ankommt. Selten kommen tatsächlich Buchstaben an. Ungefähr die Hälfte von denen entsprechen der echt gedrückten Taste. DIe anderen sind irgendwelche andere.

Jon
02.09.2007, 14:47
Hast du eventuell eine andere Tastatur da, mit der du es mal probieren könntest?
Sonst fällt mir nichts mehr ein...

Viele Grüße,
jon

Aquafisch
02.09.2007, 18:51
Ja, ich habe das natürlich auch mit einer anderen Tastatur ausprobiert.
Damit funktioniert es leider auch nicht.

Hat noch irgendjemand Ideen, woran es liegen kann, dass das nicht funktioniert?

aquafisch

Lunarman
02.09.2007, 20:18
Nein... ich weiß nur dass es damit häufiger Probleme gibt...