- Uses expiry timer to decide on when to allow a state change - Initial state transitions are unaffected - Use MinDebounceTime define in kll to configure - ms granularity
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
Name = MatrixArmCapabilities;
 | 
						|
Version = 0.1;
 | 
						|
Author = "HaaTa (Jacob Alexander) 2015";
 | 
						|
KLL = 0.3a;
 | 
						|
 | 
						|
# Modified Date
 | 
						|
Date = 2015-02-28;
 | 
						|
 | 
						|
# Defines available to the MatrixArm sub-module
 | 
						|
# This debounce scheme uses a rolling counter for press/unpress on each key
 | 
						|
# Each counter is incremented if pressed/unpressed and the opposite counter is divided by 2
 | 
						|
# Using the default division threshold (0xFFFF), there are approximately 13 cycles in a perfect cycle
 | 
						|
# If debounce is actually necessary, this will increase (better switches will debounce faster)
 | 
						|
#
 | 
						|
# The maximum threshold is 0xFFFFFFFF, which will give around ~32 -> 36 cycles per perfect cycle
 | 
						|
# Using a threshold higher than 0xFFFF will require 32 bit variables, and double the ram usage.
 | 
						|
DebounceDivThreshold => DebounceDivThreshold_define;
 | 
						|
DebounceDivThreshold = 0xFFFF; # Default debounce
 | 
						|
#DebounceDivThreshold = 0xFFFFFFFF; # Max debounce
 | 
						|
 | 
						|
# This defines how often the matrix is scanned
 | 
						|
# By, default the key matrix is scanned once per macro processing loop
 | 
						|
# For fast uCs and bouncy switches, this can be non-ideal
 | 
						|
# 0 - Bit-shift of 0
 | 
						|
# 1 - Bit-shift of 1 (i.e. divide by 2)
 | 
						|
# 2 - Bit-shift of 2 (i.e. divide by 4)
 | 
						|
# 3 - Bit-shift of 3 (i.e. divide by 8)
 | 
						|
# etc.
 | 
						|
# Depending on the architecture, this is either a maximum of 16 or 32
 | 
						|
# Increasing this value will increase switch latency
 | 
						|
DebounceThrottleDiv => DebounceThrottleDiv_define;
 | 
						|
DebounceThrottleDiv = 0; # Default
 | 
						|
#DebounceThrottleDiv = 2; # /4 divider
 | 
						|
 | 
						|
# This defines the minimum amount of time after a transition until allowing another transition
 | 
						|
# Generally switches require a minimum 5 ms debounce period
 | 
						|
# Since a decision can usually be made quite quickly, there is little latency on each press
 | 
						|
# However, this defines the latency at which the switch state can change
 | 
						|
MinDebounceTime => MinDebounceTime_define;
 | 
						|
MinDebounceTime = 5; # 5 ms
 | 
						|
 |