Keyboard-emulator med Atmel microcontroller

Hej!

Jeg er igang med at lave en keyboardemulator med en Atmel 8515 microcontroller. Min konstruktion sidder parallelt med keyboardet og jeg behøver således kun bekymre mig om at sende data til pc'en når der ikke sker andet på kommunikationslinjen.

Iflg. en FAQ fra ePanorama.net er formatet således:

Startbit Databits Ulige-Paritet Stopbit 0 01234567 0/1 1

Fint nok, men jeg har samplet noget som keyboardet sender til pc'en og det minder skisme ikke om dette. Se hvad jeg modtager:

Binær scankode for 'A': 00001000010111111100000001111111000010000101111111 Binær scankode for 'Z': 00001011000111111100000001111111000010110001111111

Der er 50 tegn ialt og jeg kan ikke decifrere dem...

Nogen gode idéer til oversættelsen?

--
Mvh, Kim Voss Schrader (fortsat skribent i dk.fritid.kaffeklub.bil)

Privat radiosamling sælges, giv et bud pr. mail! Befinder sig på Sjælland.
  http://www.schradertegner.dk/radioer
Reply to
Kim Voss Schrader
Loading thread data ...

microcontroller.

kun

KBD sender ut meir en ASCIIverdien av ein karakter. Det sender ut ein scankode. I enklaste form, 1 pres kode, ein karakterkode og ein releaskode. Enkelte taster sender opptil 7 karakterer.

Inne i PCen er det ein annan microkontroller som spiser, fordøyer og leverer ein karakter videre til CPUen.

Komunikasjonen på keyboardkabelen er bidirektsjonal, ein clock og ein data. Det er RS485-liknande, men reint TTLnivå. Du kan kopla deg innpå kabelen som om det var 485, men der finnes eit moment å ta ivare: PCen sender data til keyboardet, og det må tilleggskeyboardet ta hensyn til.

Ellers er der ein god AN på zilog.com under Z8 controllerer. Der bygger dei eit komplett ATkeynoard.

HM

Reply to
Harald Mossige

00001000010111111100000001111111000010000101111111
00001011000111111100000001111111000010110001111111

Du skal være opmærksom på at der sendes tovejs og adskille byte for hvert tasttryk.

Her er noget forklaring:

formatting link

Læg især mærke til kontrol koderne, der sendes en ACK for hver byte.

data.

som

Jeg syntes nu ikke det har noget med RS485 at gøre, det er open collector drivere (i begge ender) og pullup modstande.

dei

Atmel har også et eksempel på noget PC keyboard, jeg har dog ikke kigget nærmere på det.

Reply to
HKJ

Han giver et eksempel på hvad der f.eks. sendes ved et 'A': 00011100001. Det kan jeg ikke finde i ovenstående streng, så jeg synes også det er lidt mystisk.

--
signing off.. Martin Sørensen
Reply to
Martin Sørensen

Der er vist nogle problemer med min måde at læse værdierne på. Roder videre med det imorgen tidlig :)

--
Mvh, Kim Voss Schrader (fortsat skribent i dk.fritid.kaffeklub.bil)

Privat radiosamling sælges, giv et bud pr. mail! Befinder sig på Sjælland.
  http://www.schradertegner.dk/radioer
Reply to
Kim Voss Schrader

Det

Det tyder på at Kim laver noget forkert.

Laver MPU'en noget andet, så den ikke har tid nok til at følge med i keyboard communicationen?

Er opstart sekvensen luget fra, eller er den inkluderet i de viste data.

Normalt er den ikke så svært at dekode en keyboard communication, men det kræver at MPU'en ikke laver andet eller programmet er lavet så der er hurtige response tider.

Reply to
HKJ

Hej!

Her er en lille update :)

HKJ wrote:

Jeps.

Mjaeh, der sendes faktisk kun (eksempelvis) 42h - F0h - 42h for at skrive et "k". Disse tre skal pakkes ind i 11-bit sekvenserne (startbit - databits - ulige paritetsbit - stopbit) med LSB først i databits'ne for at klare ærterne.

Det virker ihvertfald her - nu :) Mig stor tryllekunstner :o)

Der kommer ikke ACK nogen af vejene, men controlleren (i pc'en) kan nægte at modtage flere tegn ved at trække clocken lav indtil den vil have feed igen).

Jep.

--
Mvh, Kim Voss Schrader (fortsat skribent i dk.fritid.kaffeklub.bil)

Privat radiosamling sælges, giv et bud pr. mail! Befinder sig på Sjælland.
  http://www.schradertegner.dk/radioer
Reply to
Kim Voss Schrader

et

ulige

Det er åbenbart kun når PC'en sender kommandoer der skal bruges ACK. Sådan ser det ihvertfald ud i min gamle kode.

;-)

Som jeg skrev ovenfor, så bruges ACK, men åbenbart ikke til taster. Beklager at jeg ikke kunne huske det bedre, men sidste gang jeg har rettet på det pågældende program var i 1998.

igen).

En meget nyttig funktion, jeg bruger den mellem et ekstra tastatur, som sidder midt på ledningen, og det orginale PC tastatur. På den måde vil jeg aldrig tabe tegn (PC tastaturet har buffer indbygget).

Reply to
HKJ

Du er tilgivet :o)

--
Mvh, Kim Voss Schrader (fortsat skribent i dk.fritid.kaffeklub.bil)

Privat radiosamling sælges, giv et bud pr. mail! Befinder sig på Sjælland.
  http://www.schradertegner.dk/radioer
Reply to
Kim Voss Schrader

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.