PS2-Tastatur am Atmega

Gast #2053396
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
Gast #2053491
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
Gast #2060246
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren