mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PS2-Tastatur am Atmega


Autor: fifo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, irgendwie spielt die Tastatur verrückt.
Die Anschlüsse stimmen alle.
Es sind exakt 4,9 Volt Betriebsspannung.
Nehme clock und data ab zum Atmega644p

Ob ich ein "C" programm nehme oder ein Programm von Bascom, es fangen 
beim starten des Atmegas die drei Dioden oben rechts auf der Tastatur an 
zu blinken und hören nicht wieder auf.
Daten werden nicht erkannt.

Erst wenn ich die Ps2-Tastatur wieder an den Pc anschliesse und der Pc 
hochgefahren ist, gehen die drei dioden aus und die Tastatur 
funktionierrt am Pc.
Das gleiche spiel wiederholt sich immer, die Tastatur ist also 
funktionsfähig.

Was ist das?

gruss

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist deine Schaltung? Wie ist dein Programm?
Sonst wird das hier eher nichts mit der Hilfe.

Gruß Skriptkiddy

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht mir eher nach Troll aus...

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Sieht mir eher nach Troll aus...
Duchaus möglich. Aber habe es aber auch schon oft gesehen, dass Menschen 
sich hier einfach nur nicht richtig Nettiquetten-konform ausdrücken.

Autor: bitte löschen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fifo schrieb:
> Erst wenn ich die Ps2-Tastatur wieder an den Pc anschliesse und der Pc
> hochgefahren ist, gehen die drei dioden aus ..

Deine Tastatur empfängt Energiesignale von Außerirdischen. Kein Grund 
zur Beunruhigung!

Autor: fifo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist der Bascom-code:

$regfile = "m644pdef.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40


'connect PC AT keyboard clock to PIND.2
'connect PC AT keyboard data to PIND.4

'The GetATKBD() function does not use an interrupt.


Config Keyboard = Pind.2 , Data = Pind.43 , Keydata = Keydata


Dim S As String * 12
Dim B As Byte


$serialinput = Kbdinput

Print "hello"



Do

' B = Getatkbd()     'get a byte and store it into byte variable

'When no real key is pressed the result is 0

'So test if the result was > 0

' If B > 0 Then

'    Print B ; Chr(b)

' End If


'The purpose of this sample was how to use a PC AT keyboard

'The input that normally comes from the serial port is redirected to the

'external keyboard so you use it to type

Input "Name " , S

'and show the result

Print S

'now wait for the F1 key , we defined the number 200 for F1 in the table

Do

   B = Getatkbd()

Loop Until B <> 0

Print B

Loop

End


Kbdinput:

$asm

push r16           ; save used register
push r25
push r26
push r27

Kbdinput1:

rCall _getatkbd   ; call the function

tst r24           ; check for zero

breq Kbdinput1     ; yes so try again

pop r27           ; we got a valid key so restore registers
pop r26
pop r25
pop r16

$end Asm
Return


B = Getatkbd()

'This is the key translation table


Keydata:

'normal keys lower case

Data 0 , 0 , 0 , 0 , 0 , 200 , 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


'shifted keys UPPER case

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

gruss

Autor: fifo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltung :
- +5 Volt (bei mir 4,9 Volt)
- Masse
- Clock an Int0 644p> PD2
- Data an einem 644p> PD4

oben ist ein Fehler : Data = Pind.43  > Pind.4

gruss

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind Pull-Up vorhanden ?

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo sind die 4k7-Pullups?

Autor: fifo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm..., oh...
Ich habe 2 4k7-Pullups für das i2ceeprom24c256.
Welche Leitungen von der Tastatur müssen denn da dran, kann ich die da 
mit anschliessen?

gruss

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
clock und data von der Tastatur über Widerstand an +5V

Autor: fifo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup, danke.
jetzt läuft es.

ich habe garnicht an die pullups gedacht.

gruss

Autor: atmega8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,
ich habe ein ähnliches Problem mit einer PS/2 Tastatur aber ich verwende 
die in App note AVR313 enthaltene Software (avr-gcc port), umgeschrieben 
auf einen ATmega8. Die Tastatur wird auch initialisiert (die 3 LEDs 
leuchten kurz auf) aber es werden keine Zeichen über den UART 
ausgegeben. Selbst mit 4k7 pull-ups klappt es nicht. Da ich nun bereits 
die Schaltung mehrfach überprüft habe, stellt sich mir die Frage, ob 
dies nur mit manchen Tastaturen klappt aber nicht mit allen. 2 Habe ich 
bereits erfolglos getestet. Gibt vielleicht es eine Möglichkeit die 
Tastatur zur Kooperation zu überreden? Für kompetente Hilfe wäre ich 
bereits im Vorfeld zu Dank verpflichtet.

Autor: Andreas (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
atmega8 schrieb im Beitrag #2060246:
> Gibt vielleicht es eine Möglichkeit die
> Tastatur zur Kooperation zu überreden?

Kommt drauf an. Hast Du eine zugängliche Tastatur oder hat sie sich in 
der Vergangenheit eher störrisch gezeigt? Bist Du psychologisch 
vorgebildet?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.