Připojení PS/2 klávesnice k uP ATmega 16

Jiří Frydrych, UREL, FEEC, VUT Brno
xfrydr02stud.feec.vutbr.cz

Jan Půhoný, UREL, FEEC, VUT Brno
xpuhon00stud.feec.vutbr.cz

Logo ústavu

Obsah:

  1. Úvod
  2. Realizace
  3. Závěr
  4. Literatura

Úvod

Navržené řešení slouží k připojení standardní klávesnice s rozhranním PS/2 k mikrokontroléru AT mega 16. Máme tak k dispozici řadu ovládacích tlačítek s vyřešenou mechanickou konstrukcí a nízkou cenou. Díky sériové komunikaci zabere připojení klávesnice pouze dva I/O piny mikrokontroléru. Přijaté kódy kláves a odpovídající ASCII znaky jsou zobrazovány na LCD displeji. Díky jednoduché redukci, lze klávesnici připojit přímo k vývojovým deskám v laboratoři 529. Těmto vývojovým deskám odpovídá i definice I/O pinů mikrokontroléru.

Realizace

Klávesnice je připojena pomocí 6-ti pinového konektoru MINI DIN. Rozmístění jednotlivých signálů je zřejmé z následujícího obrázku.
konektor
Konektor na klávesnici (male)
konektor
Konektor na PC (na naší redukci - female)

6-pin Mini-DIN (PS/2):
1 - Data
2 - Nezapojen
3 - GND
4 - Vcc (+5V)
5 - Clock
6 - Nezapojen

Signály CLK a DATA slouží k sériové synchronní obousměrné komunikaci mezi počítačem a klávesnicí. Sběrnice obou signálů je opatřena jak v počítači tak v klávesnici rezistorem 10k, připojeným na +5V, a na výstupech jsou tranzistory s otevřeným kolektorem. Tento způsob zamezuje vzájemnému poškození výstupů při náhodné kolizi během komunikace. Úrovně signálů jsou kompatibilní s úrovněmi obvodů CMOS.

Připojení ke konektoru PORT D na vývojové desce
Využité piny konektoru KD na vývojové desce

Přípojení ke konektoru PORT D na vývojové desce: PD0 - data, PD 2 - CLK (INT 0 - přerušení se generuje se sestupnou hranou signálu CLK). Pro realizaci připojení jsme zvolili dvouřadou lámací pinovou lištu. K signálum DATA a CLK jsou připojeny pull-up rezistory 10k. Pinová lišta se zasune do konektoru KD na vývojové desce.

Praktické provedení redukce
Praktické provedení redukce

Komunikační protokol

Synchronní sériová komunikace je obousměrná. Frekvence hodin (signál CLK) při komunikaci je 10 kHz. Komunikuje se vždy po 11 bitech. Na obrázku je příklad časového průběhu kódu, který klávesnice vyšle při stisku klávesy. Platnost dat je dána vzestupnou hranou hodinového signálu. Minimální mezera mezi dvěma kódy vyslanými po sobě je 1.2 ms. Jako první je vyslán LSB a jako poslední MSB.

Průběhy na vodičích CLK a DATA
Průběhy na vodičích CLK a DATA

Vysílání klávesy A - kód 0438
Vysílání klávesy A - kód 0438 HEX

Tabulka kódů jednotlivých kláves (HEX)
Tabulka kódů jednotlivých kláves (HEX)

Program pro mikrokontrolér čte při přerušení vyvolaném změnou na PD2 - INT0 - CLK signál DATA a posouvá 11bitů do proměnné "klavesa". Po načtení všech 11 bitů je nastaven příznak nového znaku "novy=1" a v hlavní smyčce programu je volána funkce getATkbd(void) která testuje příznak "novy". Pokud je "true", kód klávesy je načten a přeložen na ASCII znak pomocí souboru scancodes.h kde jsou nadefinovány odpovídající znaky přiřazené jednotlivým kódům. Následně je příslušný kód klávesy a ASCII znak odeslán na LCD displej.

Závěr

Byl vytvořen základ pro připojení klávesnice PS/2 k mikrokontrolérům řady AT mega. Čtení jednotlivých kláves funguje dobře, nejsou však ošetřeny stavy, kdy dojde ke stisku speciálních kláves jako schift, caps-lock, Fx atd. V takovém případě je na displej vypsán pouze kód klávesy. Program slouží jako základ pro implementaci do větších projektů, kde by se možnost připojení PS/2 klávesnice mohla hodit. Podrobný popis PS/2 protokolu jak pro klávesnici, tak pro myš nalezne zájemce v literatuře níže.

Zdrojový kód ke stažení zde.

Literatura

[1] Radosław K. Interfacing PC keyboard to microcontroller. Dostupné online: http://en.radzio.dxp.pl/pckeyboard/ [Cit. 23.5.2009]
[2] HW server Klávesnice pro PC. Dostupné online: http://hw.cz/Teorie-a-praxe/Dokumentace/ART1537-Klavesnice-pro-PC.html[Cit. 23.5.2009]
[3] Brouwer A.Keyboard commands. Dostupné online: http://www.win.tue.nl/~aeb/linux/kbd/scancodes-12.html [Cit. 23.5.2009]
[4] HW server Popis komunikace mezi PC klavesnici typu AT a PC. Dostupné online: http://hw.cz/Teorie-a-praxe/Dokumentace/ART1538-Klavesnice-pro-PC.html [Cit. 23.5.2009]
[5] EI AT Keyboard Interface V3.05. Dostupné online: http://www.electronic-engineering.ch/microchip/projects/keyboard/v3xx/keyboard_v3xx.html [Cit. 23.5.2009]
[6] Chapweske A. The PS/2 Mouse/Keyboard Protocol. Dostupné online: http://www.computer-engineering.org/ps2protocol/ [Cit. 23.5.2009]