summaryrefslogtreecommitdiff
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 a502d12382..56574f7529 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/>.
#define MATRIX_ROWS 2
#define MATRIX_COLS 1
-// wiring of each half
-#define MATRIX_ROW_PINS { B3 }
-#define MATRIX_COL_PINS { B6 }
-#define SPLIT_HAND_PIN F6
-#define SOFT_SERIAL_PIN D1
-
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
@@ -51,7 +45,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
/* ws2812 RGB LED */
-#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12
#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 0000000000..c2a9c6002e
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B3 }
+#define MATRIX_COL_PINS { B6 }
+#define SPLIT_HAND_PIN F6
+#define SOFT_SERIAL_PIN D1
+
+/* ws2812 RGB LED */
+#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 0000000000..64a6f4c249
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/readme.md
@@ -0,0 +1,11 @@
+# Pro Micro splittest
+
+To trigger keypress, short together pins *B3* and *B6* (marked on the PCB as *14* and *10*).
+
+## Wiring
+- Add switches to both Pro Micros across B3 and B6 pins
+- Add pull-up resistor to left side between VCC and F6
+- Add pull-down resistors to right side between GND and F6
+- Connect the following pins on both sides together: D0, D1, GND, VCC
+- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
+- 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 0000000000..dc6f196237
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/rules.mk
@@ -0,0 +1,58 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+BOOTLOADER = caterina
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/splittest/readme.md b/keyboards/handwired/splittest/readme.md
index 3dbff32ed4..33dbc6e805 100644
--- a/keyboards/handwired/splittest/readme.md
+++ b/keyboards/handwired/splittest/readme.md
@@ -4,7 +4,10 @@ Split Tester
A two-switch tester built using two Pro Micros, mainly intended to test RGB on split keyboards. Seen here: https://www.instagram.com/p/BvCPNzynwrV/
Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
-Hardware Supported: Pro Micro
+Hardware Supported: Pro Micro, Teensy 2.0
+Hardware Availability:
+
+**See each individual board for pin infomation**
Make example for this keyboard (after setting up your build environment):
@@ -15,12 +18,3 @@ Example of flashing this keyboard:
make handwired/splittest:default:avrdude
See 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).
-
-Wiring
-------
-- Add switches to both Pro Micros across B3 and B6 pins
-- Add pull-up resistor to left side between VCC and F6
-- Add pull-down resistors to right side between GND and F6
-- Connect the following pins on both sides together: D0, D1, GND, VCC
-- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
-- 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 9512c0f648..2aa484db0b 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -1,47 +1,3 @@
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
-BOOTLOADER = caterina
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
@@ -63,3 +19,5 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
+
+DEFAULT_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 0000000000..3d0b0346ed
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+// wiring of each half
+#define MATRIX_ROW_PINS { F5 }
+#define MATRIX_COL_PINS { F7 }
+#define SPLIT_HAND_PIN F0
+#define SOFT_SERIAL_PIN D1
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+// required for teensy slave otherwise it "locks up" during startup
+#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 0000000000..ed5f845d20
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/readme.md
@@ -0,0 +1,11 @@
+# Teensy 2.0 splittest
+
+To trigger keypress, short together pins *F5* and *F7*
+
+## Wiring
+- Add switches to both Teensy 2s across F5 and F7 pins
+- Add pull-up resistor to left side between VCC and F0
+- Add pull-down resistors to right side between GND and F0
+- Connect the following pins on both sides together: D0, D1, GND, VCC
+- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
+- 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 0000000000..3fb7c7e5a7
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/rules.mk
@@ -0,0 +1,58 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+BOOTLOADER = halfkay
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# 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 0000000000..bcc2a437bd
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/teensy_2.c
@@ -0,0 +1,14 @@
+#include QMK_KEYBOARD_H
+
+bool is_keyboard_master(void) {
+ // TODO: replace this override once USB host detection is implemented
+ // SPLIT_HAND_PIN Combined with MASTER_LEFT or MASTER_RIGHT, gives a crude
+ // way to force teensy to run as slave/master
+ setPinInput(SPLIT_HAND_PIN);
+
+#if defined(MASTER_RIGHT)
+ return !readPin(SPLIT_HAND_PIN);
+#else
+ return readPin(SPLIT_HAND_PIN);
+#endif
+}