qmk-keychron-q3-colemak-dh/tmk_core/common/chibios
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
..
_timer.h Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
_wait.h Move gpio wait logic to wait.h (#12067) 2021-03-10 22:47:36 +00:00
atomic_util.h Split gpio and atomic to platform (#11792) 2021-02-14 11:51:06 +11:00
bootloader.c Format code according to conventions (#12682) 2021-04-25 19:00:22 +10:00
chibios_config.h core: add support for MK66F18 (Teensy 3.6) micro controller (#12258) 2021-03-17 06:45:21 +11:00
eeprom_stm32.c Add customisable EEPROM driver selection (#7274) 2020-01-24 12:45:58 +11:00
eeprom_stm32.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
eeprom_teensy.c Fix for gcc10 teensy_lc eeprom build warning (#12587) 2021-04-20 10:51:55 -07:00
flash_stm32.c Added EEPROM emulation for STM32F042x6 series processors (#10685) 2020-10-22 21:05:01 +11:00
flash_stm32.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
gpio.h Add readPort() and some API to 'tmk_core/common/*/gpio.h' (#12754) 2021-06-07 18:23:21 +09:00
pin_defs.h core: add pin_defs for MK66F18 (#12419) 2021-03-30 21:11:40 +11:00
sleep_led.c run: qmk cformat --core-only 2021-05-29 13:53:10 -07:00
suspend.c Add missing LED Matrix suspend code to suspend.c (#12878) 2021-05-13 11:24:44 +10:00
syscall-fallbacks.c Fixup declaration for _kill, add other missing syscalls, populate errno. (#11608) 2021-01-19 14:23:03 +00:00
timer.c Normalise include statements in core code (#11153) 2020-12-11 13:45:24 +11:00
wait.c Move gpio wait logic to wait.h (#12067) 2021-03-10 22:47:36 +00:00