diff options
author | Eric Tang <e_l_tang@outlook.com> | 2016-05-23 20:42:21 -0700 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-05-23 23:42:21 -0400 |
commit | aaa758f1d3f97dda39879f2b055ad2da9680adfe (patch) | |
tree | cb0749cda23c0507dd2b230af3eb0ca81a97b8af /quantum/config_common.h | |
parent | d66aa0abf96b5e887250cf0a7fa5e575f18c5a91 (diff) | |
download | qmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.tar.gz qmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.zip |
Optimize matrix scanning (#343)
Diffstat (limited to 'quantum/config_common.h')
-rw-r--r-- | quantum/config_common.h | 125 |
1 files changed, 64 insertions, 61 deletions
diff --git a/quantum/config_common.h b/quantum/config_common.h index da53fce89..02f11d979 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h | |||
@@ -1,70 +1,74 @@ | |||
1 | #ifndef CONFIG_DEFINITIONS_H | 1 | #ifndef CONFIG_DEFINITIONS_H |
2 | #define CONFIG_DEFINITIONS_H | 2 | #define CONFIG_DEFINITIONS_H |
3 | 3 | ||
4 | #define B0 0x20 | 4 | /* diode directions */ |
5 | #define B1 0x21 | 5 | #define COL2ROW 0 |
6 | #define B2 0x22 | 6 | #define ROW2COL 1 |
7 | #define B3 0x23 | 7 | /* I/O pins */ |
8 | #define B4 0x24 | 8 | #define B0 { .input_addr = 3, .bit = 0 } |
9 | #define B5 0x25 | 9 | #define B1 { .input_addr = 3, .bit = 1 } |
10 | #define B6 0x26 | 10 | #define B2 { .input_addr = 3, .bit = 2 } |
11 | #define B7 0x27 | 11 | #define B3 { .input_addr = 3, .bit = 3 } |
12 | #define C0 0x30 | 12 | #define B4 { .input_addr = 3, .bit = 4 } |
13 | #define C1 0x31 | 13 | #define B5 { .input_addr = 3, .bit = 5 } |
14 | #define C2 0x32 | 14 | #define B6 { .input_addr = 3, .bit = 6 } |
15 | #define C3 0x33 | 15 | #define B7 { .input_addr = 3, .bit = 7 } |
16 | #define C4 0x34 | 16 | #define C0 { .input_addr = 6, .bit = 0 } |
17 | #define C5 0x35 | 17 | #define C1 { .input_addr = 6, .bit = 1 } |
18 | #define C6 0x36 | 18 | #define C2 { .input_addr = 6, .bit = 2 } |
19 | #define C7 0x37 | 19 | #define C3 { .input_addr = 6, .bit = 3 } |
20 | #define D0 0x40 | 20 | #define C4 { .input_addr = 6, .bit = 4 } |
21 | #define D1 0x41 | 21 | #define C5 { .input_addr = 6, .bit = 5 } |
22 | #define D2 0x42 | 22 | #define C6 { .input_addr = 6, .bit = 6 } |
23 | #define D3 0x43 | 23 | #define C7 { .input_addr = 6, .bit = 7 } |
24 | #define D4 0x44 | 24 | #define D0 { .input_addr = 9, .bit = 0 } |
25 | #define D5 0x45 | 25 | #define D1 { .input_addr = 9, .bit = 1 } |
26 | #define D6 0x46 | 26 | #define D2 { .input_addr = 9, .bit = 2 } |
27 | #define D7 0x47 | 27 | #define D3 { .input_addr = 9, .bit = 3 } |
28 | #define E0 0x50 | 28 | #define D4 { .input_addr = 9, .bit = 4 } |
29 | #define E1 0x51 | 29 | #define D5 { .input_addr = 9, .bit = 5 } |
30 | #define E2 0x52 | 30 | #define D6 { .input_addr = 9, .bit = 6 } |
31 | #define E3 0x53 | 31 | #define D7 { .input_addr = 9, .bit = 7 } |
32 | #define E4 0x54 | 32 | #define E0 { .input_addr = 0xC, .bit = 0 } |
33 | #define E5 0x55 | 33 | #define E1 { .input_addr = 0xC, .bit = 1 } |
34 | #define E6 0x56 | 34 | #define E2 { .input_addr = 0xC, .bit = 2 } |
35 | #define E7 0x57 | 35 | #define E3 { .input_addr = 0xC, .bit = 3 } |
36 | #define F0 0x60 | 36 | #define E4 { .input_addr = 0xC, .bit = 4 } |
37 | #define F1 0x61 | 37 | #define E5 { .input_addr = 0xC, .bit = 5 } |
38 | #define F2 0x62 | 38 | #define E6 { .input_addr = 0xC, .bit = 6 } |
39 | #define F3 0x63 | 39 | #define E7 { .input_addr = 0xC, .bit = 7 } |
40 | #define F4 0x64 | 40 | #define F0 { .input_addr = 0xF, .bit = 0 } |
41 | #define F5 0x65 | 41 | #define F1 { .input_addr = 0xF, .bit = 1 } |
42 | #define F6 0x66 | 42 | #define F2 { .input_addr = 0xF, .bit = 2 } |
43 | #define F7 0x67 | 43 | #define F3 { .input_addr = 0xF, .bit = 3 } |
44 | 44 | #define F4 { .input_addr = 0xF, .bit = 4 } | |
45 | #define COL2ROW 0x0 | 45 | #define F5 { .input_addr = 0xF, .bit = 5 } |
46 | #define ROW2COL 0x1 | 46 | #define F6 { .input_addr = 0xF, .bit = 6 } |
47 | #define F7 { .input_addr = 0xF, .bit = 7 } | ||
47 | 48 | ||
49 | /* USART configuration */ | ||
48 | #ifdef BLUETOOTH_ENABLE | 50 | #ifdef BLUETOOTH_ENABLE |
49 | #ifdef __AVR_ATmega32U4__ | 51 | # ifdef __AVR_ATmega32U4__ |
50 | #define SERIAL_UART_BAUD 9600 | 52 | # define SERIAL_UART_BAUD 9600 |
51 | #define SERIAL_UART_DATA UDR1 | 53 | # define SERIAL_UART_DATA UDR1 |
52 | #define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1) | 54 | # define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1) |
53 | #define SERIAL_UART_RXD_VECT USART1_RX_vect | 55 | # define SERIAL_UART_RXD_VECT USART1_RX_vect |
54 | #define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1)) | 56 | # define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1)) |
55 | #define SERIAL_UART_INIT() do { \ | 57 | # define SERIAL_UART_INIT() do { \ |
56 | UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \ | 58 | /* baud rate */ \ |
57 | UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \ | 59 | UBRR1L = SERIAL_UART_UBRR; \ |
58 | UCSR1B = (1<<TXEN1); /* TX: enable */ \ | 60 | /* baud rate */ \ |
59 | UCSR1C = (0<<UPM11) | (0<<UPM10) | /* parity: none(00), even(01), odd(11) */ \ | 61 | UBRR1H = SERIAL_UART_UBRR >> 8; \ |
60 | (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* data-8bit(011) */ \ | 62 | /* enable TX */ \ |
61 | sei(); \ | 63 | UCSR1B = _BV(TXEN1); \ |
62 | } while(0) | 64 | /* 8-bit data */ \ |
63 | #else | 65 | UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \ |
64 | # error "USART configuration is needed." | 66 | sei(); \ |
67 | } while(0) | ||
68 | # else | ||
69 | # error "USART configuration is needed." | ||
65 | #endif | 70 | #endif |
66 | 71 | ||
67 | |||
68 | // I'm fairly sure these aren't needed, but oh well - Jack | 72 | // I'm fairly sure these aren't needed, but oh well - Jack |
69 | 73 | ||
70 | /* | 74 | /* |
@@ -113,4 +117,3 @@ | |||
113 | #endif | 117 | #endif |
114 | 118 | ||
115 | #endif | 119 | #endif |
116 | |||