diff options
Diffstat (limited to 'keyboard/hhkb/doc')
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 0000000000..24243aff86 --- /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.jpgBinary files differ new file mode 100644 index 0000000000..2e5a25e81e --- /dev/null +++ b/keyboard/hhkb/doc/Bluetooth_img/BT_circuit.jpg diff --git a/keyboard/hhkb/doc/HHKB.txt b/keyboard/hhkb/doc/HHKB.txt new file mode 100644 index 0000000000..98397b8477 --- /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.jpgBinary files differ new file mode 100644 index 0000000000..0a03164094 --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_TP1684.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpgBinary files differ new file mode 100644 index 0000000000..1f09bd185c --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart1.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpgBinary files differ new file mode 100644 index 0000000000..45f5ada905 --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_chart2.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpgBinary files differ new file mode 100644 index 0000000000..e8a09e9b28 --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_connector.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpgBinary files differ new file mode 100644 index 0000000000..e3dae8e86c --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_controller.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpgBinary files differ new file mode 100644 index 0000000000..3afc269e7b --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/HHKB_keyswitch.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpgBinary files differ new file mode 100644 index 0000000000..5304bc8d7e --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/connector_contact.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpgBinary files differ new file mode 100644 index 0000000000..f1b438ae77 --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/logic_analyzer.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpgBinary files differ new file mode 100644 index 0000000000..dc79afa0cc --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/probe_contact.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpgBinary files differ new file mode 100644 index 0000000000..873d988edb --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/teensy_install.jpg diff --git a/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpgBinary files differ new file mode 100644 index 0000000000..1c4eb67434 --- /dev/null +++ b/keyboard/hhkb/doc/HHKB_img/teensy_wiring.jpg diff --git a/keyboard/hhkb/doc/Power.txt b/keyboard/hhkb/doc/Power.txt new file mode 100644 index 0000000000..1287053c3c --- /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 0000000000..7ae86f452f --- /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 | 
