aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboard/hhkb/doc/HHKB.txt79
1 files changed, 20 insertions, 59 deletions
diff --git a/keyboard/hhkb/doc/HHKB.txt b/keyboard/hhkb/doc/HHKB.txt
index 74b680d03..98397b847 100644
--- a/keyboard/hhkb/doc/HHKB.txt
+++ b/keyboard/hhkb/doc/HHKB.txt
@@ -162,7 +162,7 @@ Matrix diagram:
162 162
163Signals charts 163Signals charts
164-------------- 164--------------
165 While pressing space bar, watched HHKB original controller signals by logic analyzer. 165 While pressing space bar, watched HHKB Pro original controller signals by logic analyzer.
166 Row and column is looping between 0-7 each for selecting a key. 166 Row and column is looping between 0-7 each for selecting a key.
167 A key is scaned every about 15ms, so scan rate is 66Hz. 167 A key is scaned every about 15ms, so scan rate is 66Hz.
168 168
@@ -171,71 +171,32 @@ Signals charts
171 Space bar locate at ROW:3 COL:7. A key is selected by HC4051(C,B,A) and LS145(C,B,A). 171 Space bar locate at ROW:3 COL:7. A key is selected by HC4051(C,B,A) and LS145(C,B,A).
172 Key state can be read on TP1684(4/KEY) while asserting low on LS145(D). 172 Key state can be read on TP1684(4/KEY) while asserting low on LS145(D).
173 173
174 Usage of TP1684(5) is not clear. Controller seemed to output previous key state on this line.
175 However key state can be read without using this signal.
176
177 (HHKB_chart2.jpg) 174 (HHKB_chart2.jpg)
178 175
1795us after setting colA-C
180colA _~~~~~~~~~~~~~~~~~~
181prev _~~~~_____ 20us if previous key state is low
182colD ~~~__~~~~~ 10us column enabled
183key ~~~____~~~ 22us hold state of the key
184
185prev ____~~~~__________ 20us(JP)/17us(Pro2)
186key ~~~~~~_____~~~~~~~ 22us
187colD ~~~~~~__~~~~~~~~~~ 10us(LS175)
188
189colC ____~~~~____~~~~ 550/410us(JP)
190colB __~~__~~__~~__~~ 200/210us(JP)
191colA _~_~_~_~_~_~_~_~ 100/110us(JP) 200/210us(Pro2)
192 0123456701234567 selected column
193
194rowC ____~~~~____~~~~ 3.8/3.8ms(JP) S2 of HC4051
195rowB __~~__~~__~~__~~ 1.9/1.9ms(JP) S1 of HC4051
196rowA _~_~_~_~_~_~_~_~ 1.0/1.0ms(JP) S0 of HC4051
197 0123456701234567 selected row(Pro/Pro2)
198 0123456789ABCDEF selected row(JP)
199rowEn0 ________~~~~~~~~ 7.7/7.7ms ~Enable of Z2 HC4051(JP only)
200rowEn1 ~~~~~~~~________ 7.7/7.7ms ~Enable of Z3 HC4051(JP only)
201
202NOTE: JP scans twice fast as Pro2 does. So Pro2 scan 8x8 matrix in 15.4ms while JP can 16x8 in that time.
203
204
205
206
207Matrix scan pseudo code
208-----------------------
209 for (row: 0-7) {
210 SELECT_ROW(row); // set HC4051(A,B,C)
211
212 for (col: 0-7) {
213 SELECT_COL(col); // set LS145(A,B,C)
214
215 _delay_us(40);
216
217 if (prev_key_state(row, col)) {
218 KEY_PREV_ON;
219 }
220
221 _delay_us(7);
222 176
223 ENALBLE_COL(); // set LS145(D) to low 177 Signal of JP:
224 178
225 _delay_us(10); 179 1) Select row
180 rowC ____~~~~____~~~~ 3.8/3.8ms(JP) 7.7/7.7ms(Pro) S2 of HC4051
181 rowB __~~__~~__~~__~~ 1.9/1.9ms(JP) 3.8/3.8ms(Pro) S1 of HC4051
182 rowA _~_~_~_~_~_~_~_~ 1.0/1.0ms(JP) 1.9/1.9ms(Pro) S0 of HC4051
183 0123456701234567 selected row(Pro)
184 0123456789ABCDEF selected row(JP)
185 rowEn0 ________~~~~~~~~ 7.7/7.7ms(JP only) ~Enable of Z2 HC4051(JP only)
186 rowEn1 ~~~~~~~~________ 7.7/7.7ms(JP only) ~Enable of Z3 HC4051(JP only)
226 187
227 if (KEY == 0) { // read TP1684(KEY) 188 2) Select column
228 // key pressed 189 colC ____~~~~____~~~~ 550/410us(JP) / us(Pro)
229 } else { 190 colB __~~__~~__~~__~~ 200/210us(JP) 450/460us(Pro)
230 // not pressed 191 colA _~_~_~_~_~_~_~_~ 100/110us(JP) 220/230us(Pro)
231 } 192 0123456701234567 selected column
232 193
233 KEY_PREV_OFF; 194 3) Wait 5us after column select, then set prev, strobe colD to spit out key status and read it.
234 UNALBLE_COL(); // set LS145(D) to high 195 prev _~~~~_____ 20us if previous key state is low
196 colD ~~~__~~~~~ 10us strobe
197 key ~~~____~~~ 22us indicates current state of the key
235 198
236 _delay_us(150); 199 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.
237 }
238 }
239 200
240 201
241 202