PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PS/2-Tastatur C-control/Basic



RCO
09.08.2004, 18:25
Hallo Gemeinde,

ich hatte vor eine normale PC-Tastatur an C-control anzuschließen um über Infrarot und nen Display, quasi nen Wireless-Chat zu bauen.

Bisher habe ich schon die INfrarotübertragung, und alles nadere, was mir noch fehlt ist der Anschluss der Tastatur.
Ich habe win wenig gegoogelt, und such schon mal im Forum geguckt, bin aber nicht wesentlich schlauer geworden, also wenn mir jemand helfen kann bitte melden.

MFG Moritz

BlueNature
09.08.2004, 18:34
Hallo RCO!

Ich bin eben daran eine Maus zu einem Messystem für zwei Kettenantriebe zu modifizieren. Das ist im Grunde ein ähnliches Protokoll. Aber ohne Assembler geht es nicht wegen der hohen Geschwindigkeit.

Das was wohl das wichtigste ist für das PS/2-Protokoll sind zwei digitale Ports die auch in der Richtung umschaltbar sein müssen. Das besitzt die C-Control ja von Haus aus weil es ein Motorola-Controler ist. Darüber hinaus benötigt man nur noch +5V und GND und man hat es hardwareseitig bereits angebunden.

Das Problem ist jetzt das Protokoll einer PS/2-Tastatur. Ich selbst bin an einer Maus als Gebersystem und kann mache daher nicht viel mit der Tastatur herum. Aber das Prinzip des Datenprotokolls ist ähnlich und nur die genaue Befehls-Antwort-Sequenz ist etwas anders.

Kennst du dich mit Assembler bei der C-Control aus? In den nächsten Tagen werde ich das mit der Maus am Laufen haben und auch paar Infos auf meine Webseite schreiben dazu. Hab erst gestern damit angefangen die Maus auseinanderzulöten und auf eine eigene kleine Platine zu packen. Das Assembler-Modul schreibe ich noch und geb dann mal Infos raus dazu. Die werden dir sicher helfen.

Noch einige Links zum Thema und zum Protokoll:

Zur PS/2-Maus:
http://home.arcor.de/rieger_klaus/vtd/ps2.htmlhttp://govschl.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm
http://govschl.ndsu.nodak.edu/~achapwes/PICmicro/mouse/mouse.html
http://www.synaptics.com/support/dev_support.cfm

Zur PS/2-Tastatur:
http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/PS2/ps2.htm
http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/keyboard/atkeyboard.html

Meine neue Platine im Moment:
www.mds-5.de/temp/Mauselektronik.bmp
www.mds-5.de/temp/GeberelektronikPS2Maus.jpg
Grüsse Wolfgang

09.08.2004, 18:57
http://ccintern.dharlos.de/ --> Software

RCO
09.08.2004, 20:24
@BlueNature:

Danke erstmal für deine ausführliche Antwort.

Nein, leider kenne ich mich überhaupt nicht mit Assembler aus.
Auf der Seite, die Gast mir geschickt hat, war ich auch schon, dort gibt es eine Zip-Datei zum Download, darin enthalten ist eine BAS-Datei und eine ASM-Datei. Beim Übertragen verlangt der Compiler eine S19 datei (syscode "keyb.s19"), um genau zu sein.
Muss ich die ASM-Datei in das S19 Format konvertieren, oder wie stell ich das an?
Ein entsprechende S19-Datei kann ich nähmlich nirgends finden.

Tut mir leid, wenn das alles etwas dumm und unerfahren klingt, aber ich bin erst seit ner kurzen zeit auf BASIC umgestiegen, aber leider noch nciht durchgestiegen.

Also es wäre toll, wenn du mir nochmal helfen könntest.

MFG MOritz

BlueNature
09.08.2004, 20:53
Brauchst das Compiliert? Dann setz ich mich mal ran und mach dir ne S19-Datei daraus. Das Beispiel dort habe ich mir noch angesehen und sieht für deinen Fall recht passend aus. Mehr brauchst du ja nicht.

09.08.2004, 21:01
Ja, das wäre super, wie macht man daraus denn eine S19-Datei?

RCO
10.08.2004, 17:19
Sorry, ich war nicht eingeloggt.

BlueNature
10.08.2004, 21:57
Eigentlich recht simpel. Must nur den Quellcode (Mnemonics) in ein hexadezimales Format wandeln. Dazu nutzt man z.B. dem TASM,der kann das alles. Als Option die HC05 vorgeben das es auf den Prozessor passt und den Compiler starten.

RCO
10.08.2004, 22:22
Könntest du das bei der einen Datei mal in eine S19-Datei umwandeln, ich habs nämlich nciht so ganz kappiert, wäre echt super.

Hier schonmal der ASM-Code


; Scancode AT-Tastatur
; Author Martin Kaup (kaup@nettypes.de)
; nettypes GmbH
; Datum 08.04.2002
; Code ist frei verfügbar, und dient als Beispiel
; Ein Scancode besteht aus 11 seriellen bits.
; 1. Startbit 2.-9. Datenbits, Paritybit und Stopbit
; Scancode (22) 00010110 zB. entspricht der Taste 1 (nicht in NUM-Block!)
; Es gibt Tasten (zB. Entf, Ende, Bild hoch etc., die senden zwei Codes. 1. den ESC-Code 224(dezimal) und dann den
; Tastencode 112(dezimal) bei der Taste Einfg.
; Die Tastatur übermittelt auch noch ob eine entsprechende Taste losgelassen wurde mit dem Code 240(dezimal).
; Bsp. Die Taste 1 (nicht in NUM-Block!)
; Ein einzelner Anschlag besteht also aus 33 Takten. Tastencode - Taste wurde losgelassen - Tastencode.
; Es sei denn, es wurde eine 'ESC'-Taste gedrückt - dann liegen uns 55 Takte vor.
; Also: LS MS
; BitNr.: 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11
; BitArt: S|D0|D1|D2|D3|D4|D5|D6|D7| P| s S=Startbit, Dn=Datenbits, P=Paritybit ODD, s=Stopbit
; S| 0| 1| 1| 0| 1| 0| 0| 0| P| sS| 0| 0| 0| 0| 1| 1| 1| 1| P| sS| 0| 1| 1| 0| 1| 0| 0| 0| P| s
; Weitere Details bitte dem Code entnehmen, oder per E-Mail.
; Die Anschlüsse der Tastatur, Clock und Data liegen an 0,01 und 1,01 Data.
; Die Daten liegen mit fallender Flanke der Clock an. Beide Signale sind low-aktiv.
; Das Ergebnis des Scancode liegt in ERG (A4) vor.
; Ein Umsetzung der Scancodes in ASCII ist noch im Basic nötig.
; Scancode:ASCII:Zeichen
; 22:49:1 30:50:2 38:51:3 37:52:4 ...etc.
; Nächster Schritt wird sein, da es sich beim AT-Keyboard um ein bidirektionales Protokoll handelt, die LED's
; und weitere "Setup"-Funktionen (Delay,Repeat...) zu aktivieren.
; Der Code erhebt kein Anspruch auf Vollständigkeit oder Funktion. Mir ging es nur um die Möglichkeit eine preiswerte
; Lösung zur Ansteuerung von Relais mit einer Tastatur zu haben.
; Der Code als solcher lässt sich bestimmt noch Optimieren, aber ich hab's mit Assembler nicht so.
; Ich habe auf die 'ESC'-Sequenz der 'ESC'-Tasten verzichtet. Ich hoffe nur, dass es keine Normal-Codes mit gleichen
; Codes gibt, so dass es notwendig wird die ESC-Sequenzen mit Auzuwerten, denn der Code ist mit 80 Sys-Bytes
; noch entschieden zu gross.
; Viel Spass mit den Scancodes
; Martin Kaup im April 2002 :-}

porta equ $00
portb equ $01
ddrb equ $05
A1 equ $A1
A2 equ $A2
A3 equ $A3
ERG equ $A4

org $101
sei ; Interrupts Maskieren, damit wir die grüne LED behalten!
; bclr 0,ddrb ; bit0 auf portb als Eingang (CLock)
; bclr 1,ddrb ; bit1 auf portb als Eingang (Data)

ldx #9 ; 1. bit ist Startbit, es folgen 8 Datenbit
jsr read1
sta A1 ; letzten 8bit in A1

ldx #3 ; 1. bit ist 2. bit ist Stopbit, 2. es folgen 8 Datenbit
jsr read1

ldx #8
jsr read1
sta A2

ldx #3
jsr read1

ldx #8
jsr read1
sta A3

lda #!240
cmp A1
beq SCistA2
cmp A2
beq SCistA3
lda #!224
cmp A1
beq SCistA2
lda A1
cmp A2
beq SCistA2
rts
SCistA2
lda A2
bra raus
SCistA3
lda A3
bra raus
raus
sta ERG
rts

read1 brclr 0,portb,read1
read2 brset 0,portb,read2
brset 1,portb,w1 ; 8 mal Databit = Databyte
w1 rora
decx
bne read1
rts

Wenn ich das richtig sehe, ist der erste Teil sowiso nciht entscheidend.

MFG Moritz

11.09.2004, 21:23
HI,
Ich bin anfänger mit der C-Control und möchte wissen, wie genau man asm-Dateien assembliert (mit Win XP - Ich vermute mal im DOS-Fenster, oder ?)

PS: kennt jemahd einen Assembler für Windows?

Danke und Gruss
Clemens