Browse Source

make input ports(PE6,7) *with pullup*.

tags/v1.9
tmk 13 years ago
parent
commit
c8e1ad8c91
2 changed files with 15 additions and 59 deletions
  1. 13
    57
      HHKB/HHKB.txt
  2. 2
    2
      matrix_hhkb.c

+ 13
- 57
HHKB/HHKB.txt View File

branch: hhkb(http://github.com/tmk/tmk_keyboard/tree/hhkb) branch: hhkb(http://github.com/tmk/tmk_keyboard/tree/hhkb)
This firmware is a port of my previous project: This firmware is a port of my previous project:
HHKB style Mod(http://geekhack.org/showwiki.php?title=Island:11930) HHKB style Mod(http://geekhack.org/showwiki.php?title=Island:11930)
PJRC(Teensy++/Teensy)
http://www.pjrc.com/teensy/
PJRC:
Teensy++/Teensy(http://www.pjrc.com/teensy/)




Pros: Pros:
* without pattern cuting, case mod and soldering
* without pattern cutting, case mod and soldering
* can keep original controller intact * can keep original controller intact
* can change HHKB behaviour as you like(by C programming) * can change HHKB behaviour as you like(by C programming)




NOTE: NOTE:
My HHKB is just "Professional". This means followings may not be applied to "Professional2". My HHKB is just "Professional". This means followings may not be applied to "Professional2".

DISCLAIMER: DISCLAIMER:
I'm not a professional for electronics and MCU programming. This may damage your HHKB. I'm not a professional for electronics and MCU programming. This may damage your HHKB.
And my English writing is poor, I'm not sure I can convey my notions accurately. And my English writing is poor, I'm not sure I can convey my notions accurately.
Controller PCB: Controller PCB:
M38K07M4 Renesas MCU with USB function M38K07M4 Renesas MCU with USB function
http://documentation.renesas.com/eng/products/mpumcu/rej03b0192_38k0ds.pdf http://documentation.renesas.com/eng/products/mpumcu/rej03b0192_38k0ds.pdf

(HHKB_controller.jpg) (HHKB_controller.jpg)


Keyswitch PCB: Keyswitch PCB:
BU9831 Non-volatile electronic potentiometer: for calibration? BU9831 Non-volatile electronic potentiometer: for calibration?
http://www.alldatasheet.com/datasheet-pdf/pdf/36387/ROHM/BU9831.html http://www.alldatasheet.com/datasheet-pdf/pdf/36387/ROHM/BU9831.html
TP1684 Capacitive Sensing controller: no datasheet available. TP1684 Capacitive Sensing controller: no datasheet available.

(HHKB_keyswitch.jpg) (HHKB_keyswitch.jpg)

Topre original chip? Topre original chip?
(HHKB_TP1684.jpg) (HHKB_TP1684.jpg)


1 Vcc(5V) 5V 1 Vcc(5V) 5V
2 Vcc(5V) 2 Vcc(5V)
3 Vcc(5V) 3 Vcc(5V)
4 TP1684 KEY: Low(0) when key pressed PE6 input w/o pullup
5 TP1684 unknown:how to use PE7 input w/o pullup
4 TP1684 KEY: Low(0) when key pressed PE6 input(with pullup)
5 TP1684 unknown:how to use PE7 input(with pullup)
6 HC4051 A(bit0) select 8 rows(0 to 7) PB0 output 6 HC4051 A(bit0) select 8 rows(0 to 7) PB0 output
7 HC4051 B(bit1) PB1 output 7 HC4051 B(bit1) PB1 output
8 HC4051 C(bit2) PB2 output 8 HC4051 C(bit2) PB2 output
13 GND 13 GND
14 GND 14 GND
15 GND GND 15 GND GND

(HHKB_connector.jpg) (HHKB_connector.jpg)




While pressing space bar, watched HHKB original controller signals by logic analyzer. While pressing space bar, watched HHKB original controller signals by logic analyzer.
Row and column is looping between 0-7 each for selecting a key. 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. A key is scaned every about 15ms, so scan rate is 66Hz.

(HHKB_chart1.jpg) (HHKB_chart1.jpg)


Space bar locate at ROW:3 COL:7. Key are selected by HC4051(C,B,A) and LS145(C,B,A). Space bar locate at ROW:3 COL:7. Key are 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). Key state can be read on TP1684(4/KEY) while asserting low on LS145(D).
Usage of TP1684(5) is unknown. Key state can be read without using this signal. Usage of TP1684(5) is unknown. Key state can be read without using this signal.

(HHKB_chart2.jpg) (HHKB_chart2.jpg)




------------- -------------
Followings are added layers with additional Fn keys. They are not final decision. Followings are added layers with additional Fn keys. They are not final decision.


Layer0(Default Layer):
,-----------------------------------------------------------.
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
|-----------------------------------------------------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
|-----------------------------------------------------------|
|Contro| A| S| D| F| G| H| J| K| L| ;| '|Return |
|-----------------------------------------------------------|
|Shift | Z| X| C| V| B| N| M| ,| .| /|Fn2 |Fn1|
`-----------------------------------------------------------'
|Gui|Alt |Space |Fn3 |Gui|
`-------------------------------------------'
Layer1(Fn1) HHKB mode:
,-----------------------------------------------------------.
|Pow| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
|-----------------------------------------------------------|
|Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
|-----------------------------------------------------------|
|Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
|-----------------------------------------------------------|
|Shift | | | | | | +| -|End|PgD|Dow|Shift |xxx|
`-----------------------------------------------------------'
|Gui |Alt |Space |Alt |Gui|
`--------------------------------------------'

Layer2(Fn2) mouse mode:
,-----------------------------------------------------------.
|Esc| | | | | | | | | | | | | | |
|-----------------------------------------------------------|
|Tab | | | | | | | | | | | | |Backs|
|-----------------------------------------------------------|
|Contro| | | | | | | |MwL|MwD|MwU|MwR|Return |
|-----------------------------------------------------------|
|Shift | | | | | | |McL|McD|McU|McR|xxxxxx| |
`-----------------------------------------------------------'
|Gui |Alt |Mb1 |Mb1 |Mb2|
`--------------------------------------------'

Layer3(Fn3) vi mode:
,-----------------------------------------------------------.
|Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
|-----------------------------------------------------------|
|Tab | | | | | |Hom|PgD|PgUlEnd| |MwD|MwU|Backs|
|-----------------------------------------------------------|
|Contro| | | | | |Lef|Dow|Up |Rig| | |Return |
|-----------------------------------------------------------|
|Shift | | | | | | |McL|McD|McU|McR|Mb1 | |
`-----------------------------------------------------------'
|Gui|Alt |Mb1 |xxxxx|Mb2|
`-------------------------------------------'
Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
see keymap_hhkb.c


EOF EOF

+ 2
- 2
matrix_hhkb.c View File

// row & col output(PB0-6) // row & col output(PB0-6)
DDRB = 0xFF; DDRB = 0xFF;
PORTB = KEY_SELELCT(0, 0); PORTB = KEY_SELELCT(0, 0);
// KEY & VALID input w/o pullup(PE6,7)
// KEY & VALID input with pullup(PE6,7)
DDRE = 0x3F; DDRE = 0x3F;
PORTE = 0x00;
PORTE = 0xC0;


// initialize matrix state: all keys off // initialize matrix state: all keys off
for (int i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0xFF; for (int i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0xFF;

Loading…
Cancel
Save