aboutsummaryrefslogtreecommitdiff
path: root/quantum/config_common.h
diff options
context:
space:
mode:
authorEric Tang <e_l_tang@outlook.com>2016-05-23 20:42:21 -0700
committerJack Humbert <jack.humb@gmail.com>2016-05-23 23:42:21 -0400
commitaaa758f1d3f97dda39879f2b055ad2da9680adfe (patch)
treecb0749cda23c0507dd2b230af3eb0ca81a97b8af /quantum/config_common.h
parentd66aa0abf96b5e887250cf0a7fa5e575f18c5a91 (diff)
downloadqmk_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.h125
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