K
Kai Mayfarth
Guest
Hallo
Nun nochmal zu meinen Ps2 Tastatur Thema an meinem Atmega8.
MIt der internen Routine Config Keyboard.... habe ich das ganze nun
hinbekommen, nun stört mich aber noch, das Getatkbd() das programm in
den Wait Modus schaltet und nichts anderes mehr geht, bis ein
tastendruck erfolgt.
Nun wollte ich mich mal selber versuchen, mir ne eigene Tastatur routine
schreiben.
So wie ich das Ps2 At Protokoll verstanden habe, ligt auf der Clock +5V,
die in einem bestimmten Zeitraum auf 0 gesetzt werden, und dann wird auf
der datenleitung entweder 0 oder 1 geschrieben.
So weit so gut, also habe ich die Clock Leitung an den Int1 (portd.3) am
Atmega8 angeschlossen. Den Eingang auf Input und den internen Pullup
ausgeschaltet, da ja in der Tastatur scheon einer Vorhanden ist. Nun mal
mein Code:
<start>
Config Portd = Input
Dim A As Byte
Wait 1
Portd.3 = 0
On Int1 Lesen
Config Int1 = Falling
Enable Interrupts
Do
Incr A
If A = 99 Then
Print "99 mal zur Kontrolle das was läuft"
A = 1
End If
Loop
Lesen:
Print "Geht"
Return
<end>
Nur leider wird der Interrupt nie ausgelöst.
Hat jemand ne Lösung?? oder habe ich einen Denkfehler??
mfg Kai Mayfarth
Nun nochmal zu meinen Ps2 Tastatur Thema an meinem Atmega8.
MIt der internen Routine Config Keyboard.... habe ich das ganze nun
hinbekommen, nun stört mich aber noch, das Getatkbd() das programm in
den Wait Modus schaltet und nichts anderes mehr geht, bis ein
tastendruck erfolgt.
Nun wollte ich mich mal selber versuchen, mir ne eigene Tastatur routine
schreiben.
So wie ich das Ps2 At Protokoll verstanden habe, ligt auf der Clock +5V,
die in einem bestimmten Zeitraum auf 0 gesetzt werden, und dann wird auf
der datenleitung entweder 0 oder 1 geschrieben.
So weit so gut, also habe ich die Clock Leitung an den Int1 (portd.3) am
Atmega8 angeschlossen. Den Eingang auf Input und den internen Pullup
ausgeschaltet, da ja in der Tastatur scheon einer Vorhanden ist. Nun mal
mein Code:
<start>
Config Portd = Input
Dim A As Byte
Wait 1
Portd.3 = 0
On Int1 Lesen
Config Int1 = Falling
Enable Interrupts
Do
Incr A
If A = 99 Then
Print "99 mal zur Kontrolle das was läuft"
A = 1
End If
Loop
Lesen:
Print "Geht"
Return
<end>
Nur leider wird der Interrupt nie ausgelöst.
Hat jemand ne Lösung?? oder habe ich einen Denkfehler??
mfg Kai Mayfarth