aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2019-07-20 21:35:30 +0100
committerDrashna Jaelre <drashna@live.com>2019-07-20 13:35:30 -0700
commit0da743d80ba9c8dc913f46f91e16354883ac27ac (patch)
treecd0dddf90b9e7967050cff71b4ef024b66411b00
parent7afae46ea6075a5410d230fb8c35eaacd1872ba2 (diff)
downloadqmk_firmware-0da743d80ba9c8dc913f46f91e16354883ac27ac.tar.gz
qmk_firmware-0da743d80ba9c8dc913f46f91e16354883ac27ac.zip
[Keyboard] Refactor handwired/splittest to support multiple boards (#6373)
* Refactor splittest to support multiple dev boards * Refactor splittest to support multiple dev boards - revert change to number of RGB led * Refactor splittest to support multiple dev boards - update docs * Refactor splittest to support multiple dev boards - correct docs * Refactor splittest to support multiple dev boards - update teensy master logic
-rw-r--r--keyboards/handwired/splittest/config.h7
-rw-r--r--keyboards/handwired/splittest/promicro/config.h28
-rw-r--r--keyboards/handwired/splittest/promicro/readme.md11
-rw-r--r--keyboards/handwired/splittest/promicro/rules.mk58
-rw-r--r--keyboards/handwired/splittest/readme.md14
-rw-r--r--keyboards/handwired/splittest/rules.mk46
-rw-r--r--keyboards/handwired/splittest/teensy_2/config.h31
-rw-r--r--keyboards/handwired/splittest/teensy_2/readme.md11
-rw-r--r--keyboards/handwired/splittest/teensy_2/rules.mk58
-rw-r--r--keyboards/handwired/splittest/teensy_2/teensy_2.c14
10 files changed, 217 insertions, 61 deletions
diff --git a/keyboards/handwired/splittest/config.h b/keyboards/handwired/splittest/config.h
index a502d1238..56574f752 100644
--- a/keyboards/handwired/splittest/config.h
+++ b/keyboards/handwired/splittest/config.h
@@ -33,12 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33#define MATRIX_ROWS 2 33#define MATRIX_ROWS 2
34#define MATRIX_COLS 1 34#define MATRIX_COLS 1
35 35
36// wiring of each half
37#define MATRIX_ROW_PINS { B3 }
38#define MATRIX_COL_PINS { B6 }
39#define SPLIT_HAND_PIN F6
40#define SOFT_SERIAL_PIN D1
41
42/* define if matrix has ghost */ 36/* define if matrix has ghost */
43//#define MATRIX_HAS_GHOST 37//#define MATRIX_HAS_GHOST
44 38
@@ -51,7 +45,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
51#define LOCKING_RESYNC_ENABLE 45#define LOCKING_RESYNC_ENABLE
52 46
53/* ws2812 RGB LED */ 47/* ws2812 RGB LED */
54#define RGB_DI_PIN D3
55#define RGBLIGHT_ANIMATIONS 48#define RGBLIGHT_ANIMATIONS
56#define RGBLED_NUM 12 49#define RGBLED_NUM 12
57#define RGBLED_SPLIT { 6, 6 } 50#define RGBLED_SPLIT { 6, 6 }
diff --git a/keyboards/handwired/splittest/promicro/config.h b/keyboards/handwired/splittest/promicro/config.h
new file mode 100644
index 000000000..c2a9c6002
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/config.h
@@ -0,0 +1,28 @@
1/* Copyright 2019
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21// wiring of each half
22#define MATRIX_ROW_PINS { B3 }
23#define MATRIX_COL_PINS { B6 }
24#define SPLIT_HAND_PIN F6
25#define SOFT_SERIAL_PIN D1
26
27/* ws2812 RGB LED */
28#define RGB_DI_PIN D3
diff --git a/keyboards/handwired/splittest/promicro/readme.md b/keyboards/handwired/splittest/promicro/readme.md
new file mode 100644
index 000000000..64a6f4c24
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/readme.md
@@ -0,0 +1,11 @@
1# Pro Micro splittest
2
3To trigger keypress, short together pins *B3* and *B6* (marked on the PCB as *14* and *10*).
4
5## Wiring
6- Add switches to both Pro Micros across B3 and B6 pins
7- Add pull-up resistor to left side between VCC and F6
8- Add pull-down resistors to right side between GND and F6
9- Connect the following pins on both sides together: D0, D1, GND, VCC
10- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
11- Wire Di of RGB strip for each half to D3
diff --git a/keyboards/handwired/splittest/promicro/rules.mk b/keyboards/handwired/splittest/promicro/rules.mk
new file mode 100644
index 000000000..dc6f19623
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/rules.mk
@@ -0,0 +1,58 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Bootloader selection
42# Teensy halfkay
43# Pro Micro caterina
44# Atmel DFU atmel-dfu
45# LUFA DFU lufa-dfu
46# QMK DFU qmk-dfu
47# atmega32a bootloadHID
48BOOTLOADER = caterina
49
50
51# If you don't know the bootloader type, then you can specify the
52# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
53# Teensy halfKay 512
54# Teensy++ halfKay 1024
55# Atmel DFU loader 4096
56# LUFA bootloader 4096
57# USBaspLoader 2048
58# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/splittest/readme.md b/keyboards/handwired/splittest/readme.md
index 3dbff32ed..33dbc6e80 100644
--- a/keyboards/handwired/splittest/readme.md
+++ b/keyboards/handwired/splittest/readme.md
@@ -4,7 +4,10 @@ Split Tester
4A two-switch tester built using two Pro Micros, mainly intended to test RGB on split keyboards. Seen here: https://www.instagram.com/p/BvCPNzynwrV/ 4A two-switch tester built using two Pro Micros, mainly intended to test RGB on split keyboards. Seen here: https://www.instagram.com/p/BvCPNzynwrV/
5 5
6Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) 6Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
7Hardware Supported: Pro Micro 7Hardware Supported: Pro Micro, Teensy 2.0
8Hardware Availability:
9
10**See each individual board for pin infomation**
8 11
9Make example for this keyboard (after setting up your build environment): 12Make example for this keyboard (after setting up your build environment):
10 13
@@ -15,12 +18,3 @@ Example of flashing this keyboard:
15 make handwired/splittest:default:avrdude 18 make handwired/splittest:default:avrdude
16 19
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 20See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
18
19Wiring
20------
21- Add switches to both Pro Micros across B3 and B6 pins
22- Add pull-up resistor to left side between VCC and F6
23- Add pull-down resistors to right side between GND and F6
24- Connect the following pins on both sides together: D0, D1, GND, VCC
25- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
26- Wire Di of RGB strip for each half to D2
diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk
index 9512c0f64..2aa484db0 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -1,47 +1,3 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17#
18# LUFA specific
19#
20# Target architecture (see library "Board Types" documentation).
21ARCH = AVR8
22
23# Input clock frequency.
24# This will define a symbol, F_USB, in all source code files equal to the
25# input clock frequency (before any prescaling is performed) in Hz. This value may
26# differ from F_CPU if prescaling is used on the latter, and is required as the
27# raw input clock is fed directly to the PLL sections of the AVR for high speed
28# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
29# at the end, this will be done automatically to create a 32-bit value in your
30# source code.
31#
32# If no clock division is performed on the input clock inside the AVR (via the
33# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
34F_USB = $(F_CPU)
35
36# Bootloader
37# This definition is optional, and if your keyboard supports multiple bootloaders of
38# different sizes, comment this out, and the correct address will be loaded
39# automatically (+60). See bootloader.mk for all options.
40BOOTLOADER = caterina
41
42# Interrupt driven control endpoint task(+60)
43OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
44
45# Build Options 1# Build Options
46# change to "no" to disable the options, or define them in the Makefile in 2# change to "no" to disable the options, or define them in the Makefile in
47# the appropriate keymap folder that will get included automatically 3# the appropriate keymap folder that will get included automatically
@@ -63,3 +19,5 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
63SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
64 20
65SPLIT_KEYBOARD = yes 21SPLIT_KEYBOARD = yes
22
23DEFAULT_FOLDER = handwired/splittest/promicro
diff --git a/keyboards/handwired/splittest/teensy_2/config.h b/keyboards/handwired/splittest/teensy_2/config.h
new file mode 100644
index 000000000..3d0b0346e
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/config.h
@@ -0,0 +1,31 @@
1/* Copyright 2019
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21// wiring of each half
22#define MATRIX_ROW_PINS { F5 }
23#define MATRIX_COL_PINS { F7 }
24#define SPLIT_HAND_PIN F0
25#define SOFT_SERIAL_PIN D1
26
27/* ws2812 RGB LED */
28#define RGB_DI_PIN D3
29
30// required for teensy slave otherwise it "locks up" during startup
31#define NO_USB_STARTUP_CHECK
diff --git a/keyboards/handwired/splittest/teensy_2/readme.md b/keyboards/handwired/splittest/teensy_2/readme.md
new file mode 100644
index 000000000..ed5f845d2
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/readme.md
@@ -0,0 +1,11 @@
1# Teensy 2.0 splittest
2
3To trigger keypress, short together pins *F5* and *F7*
4
5## Wiring
6- Add switches to both Teensy 2s across F5 and F7 pins
7- Add pull-up resistor to left side between VCC and F0
8- Add pull-down resistors to right side between GND and F0
9- Connect the following pins on both sides together: D0, D1, GND, VCC
10- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
11- Wire Di of RGB strip for each half to D3
diff --git a/keyboards/handwired/splittest/teensy_2/rules.mk b/keyboards/handwired/splittest/teensy_2/rules.mk
new file mode 100644
index 000000000..3fb7c7e5a
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/rules.mk
@@ -0,0 +1,58 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Bootloader selection
42# Teensy halfkay
43# Pro Micro caterina
44# Atmel DFU atmel-dfu
45# LUFA DFU lufa-dfu
46# QMK DFU qmk-dfu
47# atmega32a bootloadHID
48BOOTLOADER = halfkay
49
50
51# If you don't know the bootloader type, then you can specify the
52# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
53# Teensy halfKay 512
54# Teensy++ halfKay 1024
55# Atmel DFU loader 4096
56# LUFA bootloader 4096
57# USBaspLoader 2048
58# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/splittest/teensy_2/teensy_2.c b/keyboards/handwired/splittest/teensy_2/teensy_2.c
new file mode 100644
index 000000000..bcc2a437b
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/teensy_2.c
@@ -0,0 +1,14 @@
1#include QMK_KEYBOARD_H
2
3bool is_keyboard_master(void) {
4 // TODO: replace this override once USB host detection is implemented
5 // SPLIT_HAND_PIN Combined with MASTER_LEFT or MASTER_RIGHT, gives a crude
6 // way to force teensy to run as slave/master
7 setPinInput(SPLIT_HAND_PIN);
8
9#if defined(MASTER_RIGHT)
10 return !readPin(SPLIT_HAND_PIN);
11#else
12 return readPin(SPLIT_HAND_PIN);
13#endif
14}