1
0
Fork 0

[Keyboard] Use new matrix_output_select_delay api (#13861)

* Use new matrix_output_select_delay api

* Updated delay to 15 after more spamming
This commit is contained in:
Alex Ong 2021-08-07 16:51:38 +10:00 committed by GitHub
parent 9d88786b6f
commit 8a9688bc64
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 10 deletions

View file

@ -32,6 +32,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USB_POLLING_INTERVAL_MS 1 #define USB_POLLING_INTERVAL_MS 1
/* layer optimization */ /* layer optimization */
#define LAYER_STATE_8BIT #define LAYER_STATE_8BIT
#define MAX_LAYER 2
//debug scanrate
//#define DEBUG_MATRIX_SCAN_RATE
//debug scans taking longer than one ms
//#define BENCHMARK_MATRIX
#define MATRIX_IO_DELAY 15
/* /*
* Keyboard Matrix Assignments * Keyboard Matrix Assignments
* *

View file

@ -28,7 +28,7 @@ extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
// matrix code // matrix code
// super fast read_cols code. // super fast read_cols code.
static matrix_row_t read_cols(void) { static inline matrix_row_t read_cols(void) {
return (PINC & (1 << 6) ? 0 : (1UL << 0)) | return (PINC & (1 << 6) ? 0 : (1UL << 0)) |
(PIND & (1 << 7) ? 0 : (1UL << 1)) | (PIND & (1 << 7) ? 0 : (1UL << 1)) |
(PINE & (1 << 6) ? 0 : (1UL << 2)) | (PINE & (1 << 6) ? 0 : (1UL << 2)) |
@ -100,13 +100,17 @@ uint8_t matrix_scan_custom(matrix_row_t current_matrix[]) {
// Set row, read cols // Set row, read cols
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
select_row(current_row); select_row(current_row);
asm volatile("nop"); matrix_output_select_delay();
asm volatile("nop");
matrix_row_t cols = read_cols(); matrix_row_t cols = read_cols();
changed |= (current_matrix[current_row] != cols); changed |= (current_matrix[current_row] != cols);
current_matrix[current_row] = cols; current_matrix[current_row] = cols;
unselect_rows(); unselect_rows();
//this internally calls matrix_io_delay()
matrix_output_unselect_delay();
} }
return changed; return changed;
} }

View file

@ -19,4 +19,7 @@ The brief list of speedhacks to make this keyboard blazing fast:
3) Eager-per-key Debouncing algorithm (no 5ms delay before message is sent) 3) Eager-per-key Debouncing algorithm (no 5ms delay before message is sent)
4) 1000hz polling 4) 1000hz polling
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the
[make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View file

@ -25,7 +25,7 @@ SPACE_CADET_ENABLE = no # Unneeded feature.
LAYOUTS = 60_ansi LAYOUTS = 60_ansi
# special sauce for this keyboard # special sauce for this keyboard
DEBOUNCE_TYPE = eager_pk # Debounce using eager_pk. DEBOUNCE_TYPE = sym_eager_pk # Debounce using eager_pk.
CUSTOM_MATRIX = lite # Custom matrix that polls at 7000hz instead of a measly 2000hz. CUSTOM_MATRIX = lite # Custom matrix that polls at 7000hz instead of a measly 2000hz.
LTO_ENABLE = yes # smaller binary LTO_ENABLE = yes # smaller binary
SRC += matrix.c SRC += matrix.c

View file

@ -50,13 +50,9 @@ void matrix_scan_user(void) {
last_timer = timer; last_timer = timer;
if ((timer % 1000 == 0) && (timer != last_print_out)) { if ((timer % 1000 == 0) && (timer != last_print_out)) {
print("Benchmark:"); print("Scans: ");
print("\n");
print_dec(timer);
print("\n");
print_dec(scans); print_dec(scans);
print("\n"); print("\n");
print("-------");
scans = 0; scans = 0;
last_print_out = timer; last_print_out = timer;
} }