aboutsummaryrefslogtreecommitdiffstats
path: root/keyboard/hhkb/doc
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/hhkb/doc')
-rw-r--r--keyboard/hhkb/doc/Bluetooth.txt39
-rw-r--r--keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpgbin0 -> 502118 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB.txt203
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpgbin0 -> 149082 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpgbin0 -> 155342 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpgbin0 -> 148225 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpgbin0 -> 193900 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpgbin0 -> 135100 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpgbin0 -> 171469 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/connector_contact.jpgbin0 -> 192830 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpgbin0 -> 169564 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/probe_contact.jpgbin0 -> 208477 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/teensy_install.jpgbin0 -> 135851 bytes
-rw-r--r--keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpgbin0 -> 154695 bytes
-rw-r--r--keyboard/hhkb/doc/Power.txt48
-rw-r--r--keyboard/hhkb/doc/V-USB.md39
16 files changed, 329 insertions, 0 deletions
diff --git a/keyboard/hhkb/doc/Bluetooth.txt b/keyboard/hhkb/doc/Bluetooth.txt
new file mode 100644
index 000000000..24243aff8
--- /dev/null
+++ b/keyboard/hhkb/doc/Bluetooth.txt
@@ -0,0 +1,39 @@
+HHKB Bluetooth mod
+==================
+See this article:
+http://geekhack.org/showwiki.php?title=Island:20851
+
+
+
+Power consume
+=============
+Switch board
+------------
+5V
+18mA full scan/no power control
+16.5mA full scan with power control of POWER_ON/POWER_OFF in matrix.c
+3.5-6mA 60ms watchdog timer sleep iwrap/main.c
+
+- the longer sleep time the less power is consumed.
+- power control of swtich board must be needed.
+FET switch may be better, though 18mA is with in port sink current limit. In current design switch board ground is connected to PB5 pin and power it on by making the pin low.
+
+Blueguiga WT12
+--------------
+3.3V
+-42mA startup/searching/connecting
+19-23mA connected
+4mA -8mA not connected
+
+iWRAP sleep command may not work. to be looked into.
+
+Power Over all
+--------------
+5V
+-65mA startup
+17-24mA idle/not connected
+-42mA connecting
+32-37mA idle/connecting(with sleep)
+50-53mA typing/connecting(no sleep)
+
+2013/06/07
diff --git a/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg b/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg
new file mode 100644
index 000000000..2e5a25e81
--- /dev/null
+++ b/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB.txt b/keyboard/hhkb/doc/HHKB.txt
new file mode 100644
index 000000000..98397b847
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB.txt
@@ -0,0 +1,203 @@
+Internal of HHKB pro
+=====================
+HHKB pro has MCU and some chips on separate two PCBs.
+
+Controller PCB
+--------------
+ M38K07M4 Renesas MCU with USB function
+ http://documentation.renesas.com/eng/products/mpumcu/rej03b0192_38k0ds.pdf
+
+ (HHKB_controller.jpg)
+
+Keyswitch PCB
+-------------
+ HC4051 Analog Multiplexer: select a row line.
+ http://www.ti.com/lit/ds/schs122j/schs122j.pdf
+ LS145 BCD Decoder: select a column line.
+ http://www.ti.com/lit/ds/symlink/sn74ls145.pdf
+ BU9831 Non-volatile electronic potentiometer: for calibration?
+ https://www.spezial.com/doc/rohm-a/bu9831.pdf
+ TP1683/4 Capacitive Sensing controller: no datasheet available.
+
+ (HHKB_keyswitch.jpg)
+
+ Topre original chip?
+ (HHKB_TP1684.jpg)
+
+
+Connector Cable
+---------------
+Two PCBs are connected by 15 lines(13 in case of Pro2).
+Vcc and GND use 3(2) lines each, other lines are for keyboard signaling.
+
+ HHKB connector lines:
+ JP Pro2 Pro Function Description Teensy++ pins
+ --------------------------------------------------------------------------------------------
+ 1 Vcc(5V) 5V
+ 1 1 2 Vcc(5V) 5V
+ 2 2 3 Vcc(5V) 5V
+ 3 3 4 TP1684 KEY: Low(0) when key pressed PE6 input(with pullup)
+ 4 4 5 TP1684 KEY_PREV: make threshold PE7 output
+ 5 5 6 HC4051 A(bit0)\ PB0 output
+ 6 6 7 HC4051 B(bit1) > select row 0-7 PB1 output
+ 7 7 8 HC4051 C(bit2)/ PB2 output
+ 8 8 9 LS145 A(bit0)\ PB3 output
+ 9 9 10 LS145 B(bit1) > select column 0-7 PB4 output
+ 10 10 11 LS145 C(bit2)/ PB5 output
+ 11 11 12 LS145 D(enable) Low(0) enables selected column PB6 output
+ 12 12 13 GND GND
+ 13 13 14 GND GND
+ 15 GND
+ 14 HC4051(Z2) ~Enable of Z2 row0-7
+ 15 HC4051(Z3) ~Enable of Z3 row8-15
+
+ NOTE: guessing pin5(KEY_PREV) may work for hysteresis of capacitive sensing.
+ NOTE: 1KOhm didn't work as pullup resistor on KEY. AVR internal pullup or 10KOhm resistor was OK.
+ NOTE: JP has two HC4051(Z2,Z3) and line 5, 6 and 7 are connected to both of them.
+
+ (HHKB_connector.jpg)
+
+
+Keyswitch matrix
+----------------
+HHKB switch matrix is ghost-free and bounce-free.
+
+ Pro/Pro2(8x8):
+ COL 0 1 2 3 4 5 6 7
+ ROW ---------------------------------------------------------------
+ 0| 2 q w s a z x c
+ 1| 3 4 r e d f v b
+ 2| 5 6 y t g h n _NONE_
+ 3| 1 Esc Tab Control LShift LAlt LMeta Space
+ 4| 7 8 u i k j m _NONE_
+ 5| \ ` Delete Return Fn RShift RAlt RMeta
+ 6| 9 0 o p ; l , _NONE_
+ 7| - + ] [ ' / . _NONE_
+
+
+ JP(16x8):
+ COL 0 1 2 3 4 5 6 7
+ ROW ---------------------------------------------------------------
+ 0| ESC TAB LFn LShift LCtrl
+ 1| 4 E MuHKN C D
+ 2| 3 W LAlt X S
+ 3| 1 HHK
+ 4|
+ 5| 5 R V F
+ 6| 2 Q LGui Z A
+ 7| 6 T Space B G
+ 8| 9 I Kana , K
+ 9| 8 U Henkan M J
+ A| 7 Y N H
+ B| 0 O RAlt . L
+ C| BS Right RShift Enter
+ D| \ [ Down Up ]
+ E| - P RFn / ;
+ F| ~ @ Left Ro :
+
+
+Matrix diagram:
+
+ Pro/Pro2:
+ +-------------------------+-+-+-+-+-+-+-+ Vcc
+ |bias control? - - - - - - - - ---
+ | 3.9K*8 R R R R R R R R |
+ +--------^+ +--------+ - - - - - - - - |
+ | 2| | HC4051 <0-------|-|-|-|-|-|-|-|--|R|-+
+ | |capa. | <1-------|-|-|-|-|-|-|-|--|R|-+
+ | TP1684 |sense | <2-------|-|-|-|-|-|-|-|--|R|-+
+ | 11<------| <3-------|-|-|-|-|-|-|-|--|R|-+
+ | | | <4-------|-|-|-|-|-|-|-|--|R|-+
+ | | | <5-------|-|-|-|-|-|-|-|--|R|-+
+ | <-+ | <6-------|-|-|-|-|-|-|-|--|R|-+
+ | 1 4 | | | <7-------|-|-|-|-|-|-|-|--|R|-+
+ +---V---^-+ | +-^-^-^--+ 0 1 2 3 4 5 6 7 33K*8
+ KEY PREV | A B C +-----------------+
+ | | +-^----+ | | | | LS145 |
+ Vcc | | |BU9831| | | | +-^--^--^--^------+
+ --- | | +------+ | | | A B C D +-------+
+ | | | | | | | | | | | |
+ 1-3 4 5 6 7 8 9 10 11 12 13-15 Pro |
+ 1-2 3 4 5 6 7 8 9 10 11 12-13 Pro2|
+ +--------------------------------------------------+ |
+ | connector | ---
+ +--------------------------------------------------+ GND
+
+
+ JP:
+ +-----------------------------+-+-+-+-+ Vcc
+ |bias control? - - - - - ---
+ | 3.9K*5 R R R R R |
+ +--------^+ +--------+ - - - - - |
+ | | | HC4051 <0-----------|-|-|-|-|----|R|-+
+ | |capa. | Z2 <1-----------|-|-|-|-|----|R|-+
+ | TP1684 |sense | <2-----------|-|-|-|-|----|R|-+
+ | <---+--| <3-----------|-|-|-|-|----|R|-+
+ | | | | <4-----------|-|-|-|-|----|R|-+
+ | | ~En| <5-----------|-|-|-|-|----|R|-+
+ | | +----> <6-----------|-|-|-|-|----|R|-+
+ | | | | | A B C <7-----------|-|-|-|-|----|R|-+
+ +---V---^-+ | | +-^-^-^--+ | | | | | |
+ KEY PREV | | | | | | | | | | |
+ | | | | +--------+ | | | | | |
+ | | | | | HC4051 <8-----------|-|-|-|-|----|R|-+
+ | | | | | Z3 <9-----------|-|-|-|-|----|R|-+
+ | | | +--| <A-----------|-|-|-|-|----|R|-+
+ | | | | <B-----------|-|-|-|-|----|R|-+
+ | | | | <C-----------|-|-|-|-|----|R|-+
+ | | | ~En| <D-----------|-|-|-|-|----|R|-+
+ | | | +-> <E-----------|-|-|-|-|----|R|-+
+ | | | | | A B C <F-----------|-|-|-|-|----|R|-+
+ | | | | +-^-^-^--+ 0 1 2 3 4 5 6 7 33K*8
+ | | | | | | | +-----------------+
+ | | | | | | | | LS145 |
+ Vcc | | | | | | | +-^--^--^--^------+
+ --- | | | | | | | A B C D +-------+
+ | | | | | | | | | | | | | |
+ 1-2 3 4 14 15 5 6 7 8 9 10 11 12-13 |
+ +--------------------------------------------------+ |
+ | connector | ---
+ +--------------------------------------------------+ GND
+
+
+Signals charts
+--------------
+ While pressing space bar, watched HHKB Pro original controller signals by logic analyzer.
+ Row and column is looping between 0-7 each for selecting a key.
+ A key is scaned every about 15ms, so scan rate is 66Hz.
+
+ (HHKB_chart1.jpg)
+
+ Space bar locate at ROW:3 COL:7. A key is selected by HC4051(C,B,A) and LS145(C,B,A).
+ Key state can be read on TP1684(4/KEY) while asserting low on LS145(D).
+
+ (HHKB_chart2.jpg)
+
+
+ Signal of JP:
+
+ 1) Select row
+ rowC ____~~~~____~~~~ 3.8/3.8ms(JP) 7.7/7.7ms(Pro) S2 of HC4051
+ rowB __~~__~~__~~__~~ 1.9/1.9ms(JP) 3.8/3.8ms(Pro) S1 of HC4051
+ rowA _~_~_~_~_~_~_~_~ 1.0/1.0ms(JP) 1.9/1.9ms(Pro) S0 of HC4051
+ 0123456701234567 selected row(Pro)
+ 0123456789ABCDEF selected row(JP)
+ rowEn0 ________~~~~~~~~ 7.7/7.7ms(JP only) ~Enable of Z2 HC4051(JP only)
+ rowEn1 ~~~~~~~~________ 7.7/7.7ms(JP only) ~Enable of Z3 HC4051(JP only)
+
+ 2) Select column
+ colC ____~~~~____~~~~ 550/410us(JP) / us(Pro)
+ colB __~~__~~__~~__~~ 200/210us(JP) 450/460us(Pro)
+ colA _~_~_~_~_~_~_~_~ 100/110us(JP) 220/230us(Pro)
+ 0123456701234567 selected column
+
+ 3) Wait 5us after column select, then set prev, strobe colD to spit out key status and read it.
+ prev _~~~~_____ 20us if previous key state is low
+ colD ~~~__~~~~~ 10us strobe
+ key ~~~____~~~ 22us indicates current state of the key
+
+ NOTE: JP scans twice fast as Pro/Pro2 does. So Pro/Pro2 scans 8x8 matrix in 15.4ms while JP scans 16x8 in that time.
+
+
+
+EOF
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg
new file mode 100644
index 000000000..0a0316409
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg
new file mode 100644
index 000000000..1f09bd185
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg
new file mode 100644
index 000000000..45f5ada90
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg
new file mode 100644
index 000000000..e8a09e9b2
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg
new file mode 100644
index 000000000..e3dae8e86
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg
new file mode 100644
index 000000000..3afc269e7
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg
new file mode 100644
index 000000000..5304bc8d7
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg
new file mode 100644
index 000000000..f1b438ae7
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg
new file mode 100644
index 000000000..dc79afa0c
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg
new file mode 100644
index 000000000..873d988ed
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg
new file mode 100644
index 000000000..1c4eb6743
--- /dev/null
+++ b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg
Binary files differ
diff --git a/keyboard/hhkb/doc/Power.txt b/keyboard/hhkb/doc/Power.txt
new file mode 100644
index 000000000..1287053c3
--- /dev/null
+++ b/keyboard/hhkb/doc/Power.txt
@@ -0,0 +1,48 @@
+HHKB Power consumption
+----------------------
+
+**Power consumption
+ board clock/prescaler keyswitch power ctrl current
+ --------------------------------------------------------------------------
+ tmk 16MHz no no 26.4mA
+ tmk 16MHz pro1 no 45.1mA
+ tmk 16MHz/2 no no 18.1mA
+ tmk 16MHz/2 pro1 no 37.3mA
+ tmk 8MHz no no 18.9mA
+ tmk 8MHz pro2 no(w/o FET) 32.1mA
+ tmk 8MHz pro2 no(w FET) 32.1mA withou POWER_ON/FF
+ tmk 8MHz pro2 no(w FET) 32.6mA with POWR_ON/OFF
+ tmk 8MHz pro2 15ms(w FET) 21.3mA with POWR_ON/OFF, enumerated but error -32
+ tmk 8MHz pro2 60ms(w FET) 13.3mA with POWR_ON/OFF, not enumerated
+
+ gh60 16MHz 25.8mA
+ gh60 16MHz USB suspend w LED breathing 17.6-29.1mA
+ gh60 16MHz USB suspend w/o LED 0.2mA(0.231-0.276mA)
+ Poker 5.6mA
+ Poker USB suspend 0.3mA(0.301mA)
+ gh60 16MHz stock firmware by komar 26.8mA
+
+
+ HHKB pro2 Over All 139.4mA
+ HHKB pro2 Controller 115.1mA
+ HHKB pro1 Controller 25.9mA
+
+
+keyswitch power consumption:
+pro1: 45.1-26.4=18.7mA
+ 37.3-18.1=19.2mA
+pro2: 32.1-18.9=13.2mA
+
+
+
+
+
+**Low Freq Crystal or Prescaler?
+No advantage of Low Freq Crystal against Prescaled.
+
+Clock routing
+X'tal --+---->Prescaler-------> System Clock
+ |
+ +---------------------> USB PLL
+
+Design Decision: Install 16MHz crystal on board with using clock rescaler.
diff --git a/keyboard/hhkb/doc/V-USB.md b/keyboard/hhkb/doc/V-USB.md
new file mode 100644
index 000000000..7ae86f452
--- /dev/null
+++ b/keyboard/hhkb/doc/V-USB.md
@@ -0,0 +1,39 @@
+V-USB controller for HHKB
+=========================
+Not supported actively any more.
+
+## Build
+Use `Makefile.vusb` for [V-USB] controller.
+ $ make -f Makefile.vusb
+
+##Hardware
+###3. V-USB connection
+ +---+ +---------------+
+ USB GND | | ATmega328p |
+ ~~~ C3 | |
+ 5V <-------+--------+---|Vcc,AVCC | HHKB pro pro2
+ R1 | | ~~~~~~~~ ~~~~
+ D- <----+--+-----R2-----|INT1 PB2-4|------->ROW (6-8) (5-7)
+ D+ <----|---+----R3-----|INT0 PC0-2|------->COL (9-11) (8-10)
+ Z1 Z2 | PC3|------->ENABLE (12) (11)
+ GND<----+---+-----------|GND PB0|<-------KEY (4) (3)
+ | PB1|------->PREV (5) (4)
+ | |
+ GND+-C2--+--|XTAL1 RXD|------->Debug Console
+ X1 | TXD|<-------Debug Console
+ GND+-C3--+--|XTAL2 RST|---SW--+GND
+ +---------------+
+ R1: 1.5K Ohm
+ R2,R3: 68 Ohm
+ Z1,Z2: Zener 3.6V
+ C1,C2: 22pF
+ C3: 0.1uF
+ X1: Crystal 12MHz
+ SW: Push Switch(for bootloader)
+
+- NOTE: See [V-USB] documentation for more detail of hardware and the USB stack.
+- NOTE: [USBaspLoader] is very useful for firmware update.
+
+
+[V-USB]: http://www.obdev.at/products/vusb/index.html
+[USBaspLoader]: http://www.obdev.at/products/vusb/usbasploader.html