Bringing Massdrop keyboard hardware configuration to keyboard level (#4593)
MCU Pins for debugging, LED, boot tracing, and shift registers are now configurable at keyboard level. Macros led_* replaced by DBG_LED_* Macros m15_* replaced by DBG_1_* Macros m27_* replaced by DBG_2_* Macros m28_* replaced by DBG_3_* For CTRL and ALT keyboards, debug boot tracing pin default now set to pad M27 instead of M28 since although M28 is not being used, it is technically a signal for USB port detection. m15_print(...) renamed to dbg_print(...) to get away from hard coded port names. dbg_print function now follows similar pattern to debug led output.
This commit is contained in:
		
							parent
							
								
									e99615b2ac
								
							
						
					
					
						commit
						4a5e68f4f2
					
				
					 12 changed files with 374 additions and 185 deletions
				
			
		| 
						 | 
				
			
			@ -32,17 +32,64 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
#define MATRIX_ROWS 5
 | 
			
		||||
#define MATRIX_COLS 15
 | 
			
		||||
 | 
			
		||||
/* MCU Port name definitions */
 | 
			
		||||
#define PA 0
 | 
			
		||||
#define PB 1
 | 
			
		||||
 | 
			
		||||
/* Port and Pin definition of key row hardware configuration */
 | 
			
		||||
#define MATRIX_ROW_PORTS PA, PA, PA, PA, PA
 | 
			
		||||
#define MATRIX_ROW_PINS   0,  1,  2,  3,  4
 | 
			
		||||
 | 
			
		||||
/* Port and Pin definition of key column hardware configuration */
 | 
			
		||||
#define MATRIX_COL_PORTS PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PA, PA, PA, PA, PA
 | 
			
		||||
#define MATRIX_COL_PINS   4,  5,  6,  7,  8,  9, 10, 11, 12, 13,  5,  6,  7, 10, 11
 | 
			
		||||
 | 
			
		||||
/* Print boot debug codes using debug LED when M28 and M30 shorted */
 | 
			
		||||
#define DEBUG_BOOT_TRACING
 | 
			
		||||
/* This Shift Register expands available hardware output lines to control additional peripherals */
 | 
			
		||||
/* It uses four lines from the MCU to provide 16 output lines */
 | 
			
		||||
/* Shift Register Clock configuration (MCU to ShiftRegister.RCLK) */
 | 
			
		||||
#define SR_EXP_RCLK_PORT            PB
 | 
			
		||||
#define SR_EXP_RCLK_PIN             14
 | 
			
		||||
/* Shift Register Output Enable configuration (MCU to ShiftRegister.OE_N) */
 | 
			
		||||
#define SR_EXP_OE_N_PORT            PB
 | 
			
		||||
#define SR_EXP_OE_N_PIN             15
 | 
			
		||||
/* SERCOM port to use for Shift Register SPI */
 | 
			
		||||
/* DATAOUT and SCLK must be configured to use hardware pins of this port */
 | 
			
		||||
#define SR_EXP_SERCOM               SERCOM2
 | 
			
		||||
/* Shift Register SPI Data Out configuration (MCU.SERCOMx.PAD[0] to ShiftRegister.SER) */
 | 
			
		||||
#define SR_EXP_DATAOUT_PORT         PA
 | 
			
		||||
#define SR_EXP_DATAOUT_PIN          12
 | 
			
		||||
#define SR_EXP_DATAOUT_MUX          2
 | 
			
		||||
/* Shift Register SPI Serial Clock configuration (MCU.SERCOMx.PAD[1] to ShiftRegister.SRCLK) */
 | 
			
		||||
#define SR_EXP_SCLK_PORT            PA
 | 
			
		||||
#define SR_EXP_SCLK_PIN             13
 | 
			
		||||
#define SR_EXP_SCLK_MUX             2
 | 
			
		||||
 | 
			
		||||
/* Debug LED (Small LED Located near MCU) */
 | 
			
		||||
#define DEBUG_LED_ENABLE            1
 | 
			
		||||
#define DEBUG_LED_PORT              PA
 | 
			
		||||
#define DEBUG_LED_PIN               27
 | 
			
		||||
 | 
			
		||||
/* Additional debugging ports */
 | 
			
		||||
/* PCB M21 */
 | 
			
		||||
#define DEBUG_PORT1_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT1_PORT            PB
 | 
			
		||||
#define DEBUG_PORT1_PIN             3
 | 
			
		||||
/* PCB M23 */
 | 
			
		||||
#define DEBUG_PORT2_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT2_PORT            PB
 | 
			
		||||
#define DEBUG_PORT2_PIN             17
 | 
			
		||||
/* PCB M25 */
 | 
			
		||||
#define DEBUG_PORT3_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT3_PORT            PA
 | 
			
		||||
#define DEBUG_PORT3_PIN             20
 | 
			
		||||
 | 
			
		||||
/* Debug Boot Tracing - During boot sequence, ground this pin to halt and display debug code using Debug LED */
 | 
			
		||||
/* This is useful in determining which hardware device may have malfunctioned or is improperly configured */
 | 
			
		||||
/* Feature is automatically disabled after successful boot */
 | 
			
		||||
/* PCB M27 */
 | 
			
		||||
#define DEBUG_BOOT_TRACING_ENABLE   1
 | 
			
		||||
#define DEBUG_BOOT_TRACING_PORT     PB
 | 
			
		||||
#define DEBUG_BOOT_TRACING_PIN      23
 | 
			
		||||
 | 
			
		||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 | 
			
		||||
#define DEBOUNCING_DELAY 5
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ void matrix_init(void)
 | 
			
		|||
        PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output
 | 
			
		||||
        PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    matrix_init_quantum();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ uint8_t matrix_scan(void)
 | 
			
		|||
 | 
			
		||||
    if (CLK_get_ms() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
 | 
			
		||||
 | 
			
		||||
    //m15_off; //Profiling scans
 | 
			
		||||
    //DBG_1_OFF; //Profiling scans
 | 
			
		||||
 | 
			
		||||
    memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +135,7 @@ uint8_t matrix_scan(void)
 | 
			
		|||
        mdebouncing = CLK_get_ms() + DEBOUNCING_DELAY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //m15_on; //Profiling scans
 | 
			
		||||
    //DBG_1_ON; //Profiling scans
 | 
			
		||||
 | 
			
		||||
    matrix_scan_quantum();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,17 +32,64 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
#define MATRIX_ROWS 11
 | 
			
		||||
#define MATRIX_COLS 8
 | 
			
		||||
 | 
			
		||||
/* MCU Port name definitions */
 | 
			
		||||
#define PA 0
 | 
			
		||||
#define PB 1
 | 
			
		||||
 | 
			
		||||
/* Port and Pin definition of key row hardware configuration */
 | 
			
		||||
#define MATRIX_ROW_PORTS PB, PB, PB, PB, PB, PB, PA, PA, PB, PB, PB
 | 
			
		||||
#define MATRIX_ROW_PINS   4,  5,  6,  7,  8,  9, 10, 11, 10, 11, 12
 | 
			
		||||
 | 
			
		||||
/* Port and Pin definition of key column hardware configuration */
 | 
			
		||||
#define MATRIX_COL_PORTS PA, PA, PA, PA, PA, PA, PA, PA
 | 
			
		||||
#define MATRIX_COL_PINS   0,  1,  2,  3,  4,  5,  6,  7
 | 
			
		||||
 | 
			
		||||
/* Print boot debug codes using debug LED when M28 and M30 shorted */
 | 
			
		||||
#define DEBUG_BOOT_TRACING
 | 
			
		||||
/* This Shift Register expands available hardware output lines to control additional peripherals */
 | 
			
		||||
/* It uses four lines from the MCU to provide 16 output lines */
 | 
			
		||||
/* Shift Register Clock configuration (MCU to ShiftRegister.RCLK) */
 | 
			
		||||
#define SR_EXP_RCLK_PORT            PB
 | 
			
		||||
#define SR_EXP_RCLK_PIN             14
 | 
			
		||||
/* Shift Register Output Enable configuration (MCU to ShiftRegister.OE_N) */
 | 
			
		||||
#define SR_EXP_OE_N_PORT            PB
 | 
			
		||||
#define SR_EXP_OE_N_PIN             15
 | 
			
		||||
/* SERCOM port to use for Shift Register SPI */
 | 
			
		||||
/* DATAOUT and SCLK must be configured to use hardware pins of this port */
 | 
			
		||||
#define SR_EXP_SERCOM               SERCOM2
 | 
			
		||||
/* Shift Register SPI Data Out configuration (MCU.SERCOMx.PAD[0] to ShiftRegister.SER) */
 | 
			
		||||
#define SR_EXP_DATAOUT_PORT         PA
 | 
			
		||||
#define SR_EXP_DATAOUT_PIN          12
 | 
			
		||||
#define SR_EXP_DATAOUT_MUX          2
 | 
			
		||||
/* Shift Register SPI Serial Clock configuration (MCU.SERCOMx.PAD[1] to ShiftRegister.SRCLK) */
 | 
			
		||||
#define SR_EXP_SCLK_PORT            PA
 | 
			
		||||
#define SR_EXP_SCLK_PIN             13
 | 
			
		||||
#define SR_EXP_SCLK_MUX             2
 | 
			
		||||
 | 
			
		||||
/* Debug LED (Small LED Located near MCU) */
 | 
			
		||||
#define DEBUG_LED_ENABLE            1
 | 
			
		||||
#define DEBUG_LED_PORT              PA
 | 
			
		||||
#define DEBUG_LED_PIN               27
 | 
			
		||||
 | 
			
		||||
/* Additional debugging ports */
 | 
			
		||||
/* PCB M21 */
 | 
			
		||||
#define DEBUG_PORT1_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT1_PORT            PB
 | 
			
		||||
#define DEBUG_PORT1_PIN             3
 | 
			
		||||
/* PCB M23 */
 | 
			
		||||
#define DEBUG_PORT2_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT2_PORT            PB
 | 
			
		||||
#define DEBUG_PORT2_PIN             17
 | 
			
		||||
/* PCB M25 */
 | 
			
		||||
#define DEBUG_PORT3_ENABLE          1
 | 
			
		||||
#define DEBUG_PORT3_PORT            PA
 | 
			
		||||
#define DEBUG_PORT3_PIN             20
 | 
			
		||||
 | 
			
		||||
/* Debug Boot Tracing - During boot sequence, ground this pin to halt and display debug code using Debug LED */
 | 
			
		||||
/* This is useful in determining which hardware device may have malfunctioned or is improperly configured */
 | 
			
		||||
/* Feature is automatically disabled after successful boot */
 | 
			
		||||
/* PCB M27 */
 | 
			
		||||
#define DEBUG_BOOT_TRACING_ENABLE   1
 | 
			
		||||
#define DEBUG_BOOT_TRACING_PORT     PB
 | 
			
		||||
#define DEBUG_BOOT_TRACING_PIN      23
 | 
			
		||||
 | 
			
		||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 | 
			
		||||
#define DEBOUNCING_DELAY 5
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ void matrix_init(void)
 | 
			
		|||
        PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output
 | 
			
		||||
        PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    matrix_init_quantum();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ uint8_t matrix_scan(void)
 | 
			
		|||
 | 
			
		||||
    if (CLK_get_ms() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
 | 
			
		||||
 | 
			
		||||
    //m15_off; //Profiling scans
 | 
			
		||||
    //DBG_1_OFF; //Profiling scans
 | 
			
		||||
 | 
			
		||||
    memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +135,7 @@ uint8_t matrix_scan(void)
 | 
			
		|||
        mdebouncing = CLK_get_ms() + DEBOUNCING_DELAY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //m15_on; //Profiling scans
 | 
			
		||||
    //DBG_1_ON; //Profiling scans
 | 
			
		||||
 | 
			
		||||
    matrix_scan_quantum();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue