Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:9ae9d1744fe4, 2017-03-18 (annotated)
- Committer:
- deton
- Date:
- Sat Mar 18 07:46:11 2017 +0000
- Revision:
- 0:9ae9d1744fe4
- Child:
- 1:00109a338de8
initial commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| deton | 0:9ae9d1744fe4 | 1 | // KeyMatrixAnalyzer for TrackPoint Keyboard USB English 0B47190 |
| deton | 0:9ae9d1744fe4 | 2 | #include "mbed.h" |
| deton | 0:9ae9d1744fe4 | 3 | |
| deton | 0:9ae9d1744fe4 | 4 | // R1 R7 R6 S9 R4 R5 S0 R2 R3 S5 S1 R0 S2 S4 S7 S8 S6 S3 S12 S13 S14 S11 S10 S15 M0 ML MM MR |
| deton | 0:9ae9d1744fe4 | 5 | /* |
| deton | 0:9ae9d1744fe4 | 6 | DigitalIn r1(p20); DigitalIn r7(p17); |
| deton | 0:9ae9d1744fe4 | 7 | DigitalIn r6(p19); DigitalOut s9(p16); |
| deton | 0:9ae9d1744fe4 | 8 | DigitalIn r4(p18); DigitalIn r5(p15); |
| deton | 0:9ae9d1744fe4 | 9 | DigitalOut s0(p21); DigitalIn r2(p14); |
| deton | 0:9ae9d1744fe4 | 10 | DigitalIn r3(p22); DigitalOut s5(p13); |
| deton | 0:9ae9d1744fe4 | 11 | DigitalOut s1(p23); DigitalIn r0(p12); |
| deton | 0:9ae9d1744fe4 | 12 | DigitalOut s2(p24); DigitalOut s4(p11); |
| deton | 0:9ae9d1744fe4 | 13 | DigitalOut s7(p25); DigitalOut s8(p10); |
| deton | 0:9ae9d1744fe4 | 14 | DigitalOut s6(p26); DigitalOut s3(p9); |
| deton | 0:9ae9d1744fe4 | 15 | DigitalOut s12(p27); DigitalOut s13(p8); |
| deton | 0:9ae9d1744fe4 | 16 | DigitalOut s14(p28); DigitalOut s11(p7); |
| deton | 0:9ae9d1744fe4 | 17 | DigitalOut s10(p29); DigitalOut s15(p6); |
| deton | 0:9ae9d1744fe4 | 18 | */ |
| deton | 0:9ae9d1744fe4 | 19 | const int RPINLEN = 8; |
| deton | 0:9ae9d1744fe4 | 20 | const int SPINLEN = 16; |
| deton | 0:9ae9d1744fe4 | 21 | DigitalIn rpin[RPINLEN] = {p12, p20, p14, p22, p18, p15, p19, p17}; |
| deton | 0:9ae9d1744fe4 | 22 | DigitalOut spin[SPINLEN] = {p21, p23, p24, p9, p11, p13, p26, p25, p10, p16, p29, p7, p27, p8, p28, p6}; |
| deton | 0:9ae9d1744fe4 | 23 | /* |
| deton | 0:9ae9d1744fe4 | 24 | // r0 r1 r2 r3 s0 s1 r4 r5 r6 r7 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 |
| deton | 0:9ae9d1744fe4 | 25 | // 20 17 19 16 18 15 21 14 22 13 23 12 24 11 25 10 26 9 27 8 28 7 29 6 30 5 |
| deton | 0:9ae9d1744fe4 | 26 | DigitalIn rpin[RPINLEN] = {p20, p17, p19, p16, p21, p14, p22, p13}; |
| deton | 0:9ae9d1744fe4 | 27 | DigitalOut spin[SPINLEN] = {p18, p15, p23, p12, p24, p11, p25, p10, p26, p9, p27, p8, p28, p7, p29, p6, p30, p5}; |
| deton | 0:9ae9d1744fe4 | 28 | */ |
| deton | 0:9ae9d1744fe4 | 29 | |
| deton | 0:9ae9d1744fe4 | 30 | Serial pc(USBTX, USBRX); |
| deton | 0:9ae9d1744fe4 | 31 | |
| deton | 0:9ae9d1744fe4 | 32 | int prevs = -1; |
| deton | 0:9ae9d1744fe4 | 33 | int prevr = -1; |
| deton | 0:9ae9d1744fe4 | 34 | |
| deton | 0:9ae9d1744fe4 | 35 | void loop() { |
| deton | 0:9ae9d1744fe4 | 36 | for (int s = 0; s < SPINLEN; s++) { |
| deton | 0:9ae9d1744fe4 | 37 | spin[s] = 0; |
| deton | 0:9ae9d1744fe4 | 38 | wait_ms(5); |
| deton | 0:9ae9d1744fe4 | 39 | for (int r = 0; r < RPINLEN; r++) { |
| deton | 0:9ae9d1744fe4 | 40 | if (rpin[r] == 0) { |
| deton | 0:9ae9d1744fe4 | 41 | if (prevs == s && prevr == r) { |
| deton | 0:9ae9d1744fe4 | 42 | continue; |
| deton | 0:9ae9d1744fe4 | 43 | } |
| deton | 0:9ae9d1744fe4 | 44 | prevs = s; |
| deton | 0:9ae9d1744fe4 | 45 | prevr = r; |
| deton | 0:9ae9d1744fe4 | 46 | pc.printf(" %d %d\r\n", s, r); |
| deton | 0:9ae9d1744fe4 | 47 | } |
| deton | 0:9ae9d1744fe4 | 48 | } |
| deton | 0:9ae9d1744fe4 | 49 | spin[s] = 1; |
| deton | 0:9ae9d1744fe4 | 50 | } |
| deton | 0:9ae9d1744fe4 | 51 | } |
| deton | 0:9ae9d1744fe4 | 52 | |
| deton | 0:9ae9d1744fe4 | 53 | int main() { |
| deton | 0:9ae9d1744fe4 | 54 | for (int r = 0; r < RPINLEN; r++) { |
| deton | 0:9ae9d1744fe4 | 55 | rpin[r].mode(PullUp); |
| deton | 0:9ae9d1744fe4 | 56 | } |
| deton | 0:9ae9d1744fe4 | 57 | for (int s = 0; s < SPINLEN; s++) { |
| deton | 0:9ae9d1744fe4 | 58 | spin[s] = 1; |
| deton | 0:9ae9d1744fe4 | 59 | } |
| deton | 0:9ae9d1744fe4 | 60 | |
| deton | 0:9ae9d1744fe4 | 61 | while (true) { |
| deton | 0:9ae9d1744fe4 | 62 | loop(); |
| deton | 0:9ae9d1744fe4 | 63 | } |
| deton | 0:9ae9d1744fe4 | 64 | } |