qmk_firmware/tmk_core/common
Simon Arlott b829a1d264
Avoid 8-bit timer overflows in debounce algorithms (#12240)
* Add fast_timer_t that is 16-bit or 32-bit based on architecture

A 16-bit timer will overflow sooner but be faster to compare on AVR.

* Avoid 8-bit timer overflows in debounce algorithms

Count down remaining elapsed time instead of trying to do 8-bit timer
comparisons.

Add a "none" implementation that is automatically used if DEBOUNCE is
0 otherwise it will break the _pk/_pr count down.

* Avoid unnecessary polling of the entire matrix in sym_eager_pk

The matrix only needs to be updated when a debounce timer expires.

* Avoid unnecessary polling of the entire matrix in sym_eager_pr

The matrix only needs to be updated when a debounce timer expires.

The use of the "needed_update" variable is trying to do what
"matrix_need_update" was added to fix but didn't work because it only
applied when all keys finished debouncing.

* Fix sym_defer_g timing inconsistency compared to other debounce algorithms

DEBOUNCE=5 should process the key after 5ms, not 6ms

* Add debounce tests
2021-06-09 17:23:21 +10:00
..
arm_atsam Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
avr Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
chibios Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
test
action.c run: qmk cformat --core-only 2021-05-29 13:53:10 -07:00
action.h run: qmk cformat --core-only 2021-05-29 13:53:10 -07:00
action_code.h
action_layer.c
action_layer.h
action_macro.c
action_macro.h
action_tapping.c Format code according to conventions (#12380) 2021-03-25 23:18:59 +11:00
action_tapping.h
action_util.c
action_util.h
atomic_util.h
bootloader.h
debug.c
debug.h
eeconfig.c Backlight: add defines for default level and breathing state (#12560) 2021-05-26 22:21:15 -07:00
eeconfig.h Backlight: add defines for default level and breathing state (#12560) 2021-05-26 22:21:15 -07:00
eeprom.h
gpio.h
host.c
host.h
host_driver.h
keyboard.c Fixup housekeeping from being invoked twice per loop. (#12933) 2021-05-18 17:02:28 +10:00
keyboard.h run: qmk cformat --core-only 2021-05-29 13:53:10 -07:00
keycode.h Format code according to conventions (#12244) 2021-03-15 12:21:14 +11:00
lib_printf.mk
nodebug.h
pin_defs.h
print.h
printf.c
progmem.h
raw_hid.h
report.c
report.h Add a handful of consumer/gendesk page usages (#12811) 2021-05-06 17:16:07 +01:00
sendchar.h
sendchar_null.c
sendchar_uart.c
sleep_led.h
suspend.h
sync_timer.c
sync_timer.h
timer.h Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
usb_util.c
usb_util.h
virtser.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
wait.h