qmk_firmware/tmk_core/common/arm_atsam
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
..
_print.h Fix USER_PRINT on avr/atsam (#12269) 2021-03-25 22:33:53 +11: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
bootloader.c clang-format changes 2019-08-30 15:01:52 -07:00
eeprom.c format code according to conventions [skip ci] 2020-01-24 02:15:29 +00:00
printf.c Refactor platform logic within print.h (#11863) 2021-02-14 01:44:22 +00:00
printf.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
printf.mk Refactor platform logic within print.h (#11863) 2021-02-14 01:44:22 +00:00
suspend.c 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
timer.c clang-format changes 2019-08-30 15:01:52 -07:00