|
|
|
|
|
|
|
|
PS/2 to USB keyboard converter |
|
|
|
|
|
|
|
|
XT to USB keyboard converter |
|
|
============================== |
|
|
============================== |
|
|
This firmware converts PS/2 keyboard protocol to USB.(It supports Scan Code Set 2.) |
|
|
|
|
|
|
|
|
This firmware converts XT keyboard protocol to USB.(It supports Scan Code Set 1.) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Connect Wires |
|
|
Connect Wires |
|
|
|
|
|
|
|
|
1. Connect **Vcc** and **GND**. |
|
|
1. Connect **Vcc** and **GND**. |
|
|
2. Connect **Clock** and **Data** line. |
|
|
2. Connect **Clock** and **Data** line. |
|
|
- **Interrupt**: **Clock** is on `PD1` and **Data** on `PD0`.(Recommended. Soarer's converter compatible) |
|
|
- **Interrupt**: **Clock** is on `PD1` and **Data** on `PD0`.(Recommended. Soarer's converter compatible) |
|
|
- **Busywait**: **Clock** is on `PD1` and **Data** on `PD0`. |
|
|
|
|
|
- **USART**: **Clock** is on `PD5` and **Data** on `PD2`. |
|
|
|
|
|
3. Optionally you need pull-up resistor. 1K-10K Ohm is OK. |
|
|
3. Optionally you need pull-up resistor. 1K-10K Ohm is OK. |
|
|
|
|
|
|
|
|
To change pin configuration edit **config.h** and **Makefile**. |
|
|
To change pin configuration edit **config.h** and **Makefile**. |
|
|
|
|
|
|
|
|
$ make clean |
|
|
$ make clean |
|
|
$ make KEYMAP=[plain|jis|spacefn|...] |
|
|
$ make KEYMAP=[plain|jis|spacefn|...] |
|
|
|
|
|
|
|
|
After that you will find HEX file `ps2_usb_lufa.hex` in current directory. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- For **TMK converter Rev.1** use `make -f Makefile.tmk_rev1` instead of `make` and HEX file is `ps2_usb_tmk_rev1.hex`. |
|
|
|
|
|
|
|
|
|
|
|
- For **TMK converter Rev.2** use `make -f Makefile.tmk_rev2` instead of `make` and HEX file is `ps2_usb_tmk_rev2.hex`. |
|
|
|
|
|
|
|
|
After that you will find HEX file `xt_usb_lufa.hex` in current directory. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Keymap |
|
|
Keymap |
|
|
------ |
|
|
------ |
|
|
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in README.md of top directory) and existent keymap files. |
|
|
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in README.md of top directory) and existent keymap files. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PS/2 signal handling implementations |
|
|
|
|
|
------------------------------------ |
|
|
|
|
|
Following three methods can be used to implement PS/2 signal handling. |
|
|
|
|
|
|
|
|
|
|
|
### Simple and stupid busy-wait(ps2_busywait.c) |
|
|
|
|
|
This is expected to implemented with portable C code for reference. |
|
|
|
|
|
### Interrupt driven(ps2_interrupt.c) |
|
|
|
|
|
Uses pin interrupt to detect falling edge of clock line. |
|
|
|
|
|
### USART hardware module(ps2_usart.c) |
|
|
|
|
|
Uses AVR USART engine to receive PS/2 signal. |
|
|
|
|
|
|
|
|
|
|
|
To select method edit Makefile. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
V-USB Support |
|
|
|
|
|
------------- |
|
|
|
|
|
With V-USB you can use this converter on ATmega(168/328) but it doesn't support NKRO at this time. |
|
|
|
|
|
|
|
|
|
|
|
Circuit: |
|
|
|
|
|
|
|
|
|
|
|
+---+ +---------------+ |
|
|
|
|
|
USB GND | | ATmega168 | |
|
|
|
|
|
=== C3 | | |
|
|
|
|
|
5V <-------+--------+---|Vcc,AVCC | PS/2 |
|
|
|
|
|
R1 | | ==== |
|
|
|
|
|
D- <----+--+-----R2-----|INT1 RXD|------->DATA |
|
|
|
|
|
D+ <----|---+----R3-----|INT0 XCK|------->CLOCK |
|
|
|
|
|
Z1 Z2 | | ->5V |
|
|
|
|
|
GND<----+---+--+--+-----|GND | ->GND |
|
|
|
|
|
| | | | |
|
|
|
|
|
| C2-+--|XTAL1 | |
|
|
|
|
|
| X1 | | |
|
|
|
|
|
+--C3-+--|XTAL2 | |
|
|
|
|
|
+---------------+ |
|
|
|
|
|
R1: 1.5K Ohm |
|
|
|
|
|
R2,R3: 68 Ohm |
|
|
|
|
|
Z1,Z2: Zenner 3.6V |
|
|
|
|
|
C1,C2: 22pF |
|
|
|
|
|
C3: 0.1uF |
|
|
|
|
|
X1: Crystal 20MHz(16MHz/12MHz) |
|
|
|