This repository has been archived on 2025-01-28. You can view files and clone it, but cannot push or open issues or pull requests.

29 lines
1.0 KiB
Markdown
Raw Normal View History

Debounce algorithms belong in this folder.
Here are a few ideas
1) Global vs Per-Key vs Per-Row
* Global - one timer for all keys. Any key change state affects global timer
* Per key - one timer per key
* Per row - one timer per row
2019-03-05 01:44:46 +10:00
2) Eager vs symmetric vs asymmetric
* Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
* Symmetric - wait for no changes for DEBOUNCE ms before reporting change
2019-03-05 01:44:46 +10:00
* Asymmetric - wait for different times depending on key-down/key-up. E.g. Eager key-down, DEBOUNCE ms key up.
3) Timestamp vs cycles
* old old old code waits n cycles, decreasing count by one each matrix_scan
* newer code stores the millisecond the change occurred, and does subraction to figure out time elapsed.
* Timestamps are superior, i don't think cycles will ever be used again once upgraded.
The default algorithm is symmetric and global.
Here are a few that could be implemented:
2019-03-05 01:44:46 +10:00
sym_g.c
sym_pk.c
sym_pr.c
sym_pr_cycles.c
2019-03-05 01:44:46 +10:00
eager_g.c
eager_pk.c
eager_pr.c //could be used in ergo-dox!