Adding DebounceThrottleDiv define to slow down the debounce rate.
By default: DebounceThrottleDiv = 0; This is the default infinity behaviour right now (may be changed in the future). Increasing DebounceThrottleDiv will increase the scan rate divider. DebounceThrottleDiv = 1; # Scans half as much DebounceThrottleDiv = 2; # Scans a quarter as much DebounceThrottleDiv = 3; # Scans an eigth as much etc. For ARM based uCs (like the Infinity) the maximum divider is 32.
This commit is contained in:
parent
a959011faa
commit
ae6daa0e5c
2 changed files with 32 additions and 0 deletions
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
// Project Includes
|
||||
#include <cli.h>
|
||||
#include <kll.h>
|
||||
#include <led.h>
|
||||
#include <print.h>
|
||||
#include <macro.h>
|
||||
|
|
@ -38,6 +39,14 @@
|
|||
|
||||
|
||||
|
||||
// ----- Defines -----
|
||||
|
||||
#if ( DebounceThrottleDiv_define > 0 )
|
||||
nat_ptr_t Matrix_divCounter = 0;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// ----- Function Declarations -----
|
||||
|
||||
// CLI Functions
|
||||
|
|
@ -232,6 +241,15 @@ void Matrix_keyPositionDebug( KeyPosition pos )
|
|||
// NOTE: scanNum should be reset to 0 after a USB send (to reset all the counters)
|
||||
void Matrix_scan( uint16_t scanNum )
|
||||
{
|
||||
#if ( DebounceThrottleDiv_define > 0 )
|
||||
// Scan-rate throttling
|
||||
// By scanning using a divider, the scan rate slowed down
|
||||
// DebounceThrottleDiv_define == 1 means -> /2 or half scan rate
|
||||
// This helps with bouncy switches on fast uCs
|
||||
if ( !( Matrix_divCounter++ & (1 << ( DebounceThrottleDiv_define - 1 )) ) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
// Increment stats counters
|
||||
if ( scanNum > matrixMaxScans ) matrixMaxScans = scanNum;
|
||||
if ( scanNum == 0 )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue