[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
This commit is contained in:
		
							parent
							
								
									7afae46ea6
								
							
						
					
					
						commit
						0da743d80b
					
				
					 10 changed files with 217 additions and 61 deletions
				
			
		
							
								
								
									
										31
									
								
								keyboards/handwired/splittest/teensy_2/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								keyboards/handwired/splittest/teensy_2/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										11
									
								
								keyboards/handwired/splittest/teensy_2/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								keyboards/handwired/splittest/teensy_2/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										58
									
								
								keyboards/handwired/splittest/teensy_2/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								keyboards/handwired/splittest/teensy_2/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										14
									
								
								keyboards/handwired/splittest/teensy_2/teensy_2.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								keyboards/handwired/splittest/teensy_2/teensy_2.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue