From cc5edb9eeb2d30400dee278a6f20991389f68afe Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 15 Oct 2019 13:32:52 +0100 Subject: [PATCH] Port DEBUG_MATRIX_SCAN_RATE to core (#7029) * Port DEBUG_MATRIX_SCAN_RATE to core * Remove duplicate DEBUG_MATRIX_SCAN_RATE implementations * Remove duplicate DEBUG_MATRIX_SCAN_RATE implementation from handwired/xealous * Add console logic from ergodox_ez --- keyboards/ergodone/matrix.c | 35 ----------------- keyboards/ergodox_ez/matrix.c | 37 ------------------ keyboards/ergodox_stm32/matrix.c | 7 ---- keyboards/ergotaco/matrix.c | 31 --------------- keyboards/georgi/matrix.c | 32 --------------- keyboards/gergo/matrix.c | 33 ---------------- keyboards/handwired/dactyl/matrix.c | 24 ------------ keyboards/handwired/frenchdev/matrix.c | 35 ----------------- keyboards/handwired/xealous/matrix.c | 12 ------ keyboards/handwired/xealous/matrix_scanrate.c | 39 ------------------- keyboards/handwired/xealous/matrix_scanrate.h | 4 -- keyboards/handwired/xealous/rules.mk | 2 +- keyboards/hotdox/matrix.c | 34 ---------------- tmk_core/common/keyboard.c | 24 ++++++++++++ 14 files changed, 25 insertions(+), 324 deletions(-) delete mode 100644 keyboards/handwired/xealous/matrix_scanrate.c delete mode 100644 keyboards/handwired/xealous/matrix_scanrate.h diff --git a/keyboards/ergodone/matrix.c b/keyboards/ergodone/matrix.c index 4a8230aa81d778ca7519a468c896b4b069a21778..456f73c954d5aed442896fde7eace5ceb1ffdaee 100644 --- a/keyboards/ergodone/matrix.c +++ b/keyboards/ergodone/matrix.c @@ -9,9 +9,6 @@ #include "matrix.h" #include "ergodone.h" #include "expander.h" -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif /* * This constant define not debouncing time in msecs, but amount of matrix @@ -41,12 +38,6 @@ static void init_cols(void); static void unselect_rows(void); static void select_row(uint8_t row); -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} @@ -88,13 +79,7 @@ void matrix_init(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - matrix_init_quantum(); - } void matrix_power_up(void) { @@ -105,11 +90,6 @@ void matrix_power_up(void) { for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif } // Returns a matrix_row_t whose bits are set if the corresponding key should be @@ -140,21 +120,6 @@ uint8_t matrix_scan(void) { expander_scan(); -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - matrix_print(); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); wait_us(30); // without this wait read unstable value. diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c index 3c9a2f43a7c69b38d502d4ca5fd47297cad58626..4f11a0ad521a6973149b6117c1d6448d3fd6a069 100644 --- a/keyboards/ergodox_ez/matrix.c +++ b/keyboards/ergodox_ez/matrix.c @@ -32,15 +32,6 @@ along with this program. If not, see . #include "debounce.h" #include QMK_KEYBOARD_H -// Only enable this if console is enabled to print to -#if defined(DEBUG_MATRIX_SCAN_RATE) && !defined(CONSOLE_ENABLE) -# undef DEBUG_MATRIX_SCAN_RATE -#endif - -#ifdef DEBUG_MATRIX_SCAN_RATE -# include "timer.h" -#endif - /* * This constant define not debouncing time in msecs, assuming eager_pr. * @@ -65,11 +56,6 @@ static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; // static uint16_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - __attribute__((weak)) void matrix_init_user(void) {} __attribute__((weak)) void matrix_scan_user(void) {} @@ -96,10 +82,6 @@ void matrix_init(void) { raw_matrix[i] = 0; } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif debounce_init(MATRIX_ROWS); matrix_init_quantum(); } @@ -114,11 +96,6 @@ void matrix_power_up(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif } // Reads and stores a row, returning @@ -149,20 +126,6 @@ uint8_t matrix_scan(void) { } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - #ifdef LEFT_LEDS mcp23018_status = ergodox_left_leds_update(); #endif // LEFT_LEDS diff --git a/keyboards/ergodox_stm32/matrix.c b/keyboards/ergodox_stm32/matrix.c index 5a280ee17dd5114192615cffc808e792dd7bab56..383bf9790a5b4b11b91eb7ac0be4c3afc0c2893d 100644 --- a/keyboards/ergodox_stm32/matrix.c +++ b/keyboards/ergodox_stm32/matrix.c @@ -13,13 +13,6 @@ #define DEBOUNCE 10 #endif -//#define DEBUG_MATRIX_SCAN_RATE - -//#ifdef DEBUG_MATRIX_SCAN_RATE -//uint32_t matrix_timer; -//uint32_t matrix_scan_count; -//#endif - static uint8_t mcp23017_reset_loop = 0; volatile matrix_row_t matrix[MATRIX_ROWS]; diff --git a/keyboards/ergotaco/matrix.c b/keyboards/ergotaco/matrix.c index f7ceb194ad6170e3c97d60d0e56f9c0a77e1b8a2..e28f754e67eeba2e1c002844b71f4fb0fc862295 100644 --- a/keyboards/ergotaco/matrix.c +++ b/keyboards/ergotaco/matrix.c @@ -26,9 +26,6 @@ along with this program. If not, see . #include "debug.h" #include "util.h" #include QMK_KEYBOARD_H -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif #ifndef DEBOUNCE # define DEBOUNCE 5 @@ -70,12 +67,6 @@ static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; // static uint16_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} @@ -121,10 +112,6 @@ void matrix_init(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif matrix_init_quantum(); } @@ -138,12 +125,6 @@ void matrix_power_up(void) { for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - } // Returns a matrix_row_t whose bits are set if the corresponding key should be @@ -192,18 +173,6 @@ uint8_t matrix_scan(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { select_row(i); // and select on left hand diff --git a/keyboards/georgi/matrix.c b/keyboards/georgi/matrix.c index 58f0776c42529de372e9e832857cd6adad33ab42..f0b69c841abbe28ad6d2cc0710feff7d08723bbf 100644 --- a/keyboards/georgi/matrix.c +++ b/keyboards/georgi/matrix.c @@ -27,10 +27,6 @@ along with this program. If not, see . #include "util.h" #include "keymap_steno.h" #include QMK_KEYBOARD_H -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif - #ifndef DEBOUNCE # define DEBOUNCE 5 @@ -92,12 +88,6 @@ static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; // static uint16_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} @@ -143,10 +133,6 @@ void matrix_init(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif matrix_init_quantum(); } @@ -160,12 +146,6 @@ void matrix_power_up(void) { for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - } // Returns a matrix_row_t whose bits are set if the corresponding key should be @@ -214,18 +194,6 @@ uint8_t matrix_scan(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { select_row(i); // and select on left hand diff --git a/keyboards/gergo/matrix.c b/keyboards/gergo/matrix.c index 9ef1f6b5cfa9e5939c8b8eddb03c63018e1e68b9..f659ed52c25634125dba550fea63e824d410ca25 100644 --- a/keyboards/gergo/matrix.c +++ b/keyboards/gergo/matrix.c @@ -27,9 +27,6 @@ along with this program. If not, see . #include "util.h" #include "debounce.h" #include QMK_KEYBOARD_H -#ifdef DEBUG_MATRIX_SCAN_RATE -# include "timer.h" -#endif #ifdef BALLER #include @@ -124,12 +121,6 @@ static void enableInterrupts(void); static uint8_t mcp23018_reset_loop; // static uint16_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} __attribute__ ((weak)) void matrix_scan_user(void) {} @@ -161,10 +152,6 @@ void matrix_init(void) { raw_matrix[i] = 0; } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif debounce_init(MATRIX_ROWS); matrix_init_quantum(); } @@ -179,12 +166,6 @@ void matrix_power_up(void) { for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - } // Reads and stores a row, returning @@ -261,20 +242,6 @@ uint8_t matrix_scan(void) { } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - bool changed = false; for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { // select rows from left and right hands diff --git a/keyboards/handwired/dactyl/matrix.c b/keyboards/handwired/dactyl/matrix.c index 28cf37522b0e772323fb3c94300d584a6b13d2d1..faa5c19cf259a5d65c91a57a25cea4dcd5417fb3 100644 --- a/keyboards/handwired/dactyl/matrix.c +++ b/keyboards/handwired/dactyl/matrix.c @@ -76,11 +76,6 @@ uint8_t expander_status; uint8_t expander_input_pin_mask; bool i2c_initialized = false; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - #define ROW_SHIFTER ((matrix_row_t)1) __attribute__ ((weak)) @@ -129,11 +124,6 @@ void matrix_init(void) matrix_debouncing[i] = 0; } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - matrix_init_quantum(); } @@ -236,20 +226,6 @@ uint8_t matrix_scan(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - #if (DIODE_DIRECTION == COL2ROW) for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { # if (DEBOUNCE > 0) diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c index 26c2b312609e98e4579e4d2fb30b870a2a372b40..c9c7e94aea768a73403f4f69978f7aec0bdf7a89 100644 --- a/keyboards/handwired/frenchdev/matrix.c +++ b/keyboards/handwired/frenchdev/matrix.c @@ -35,9 +35,6 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" #include "frenchdev.h" -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif /* * This constant define not debouncing time in msecs, but amount of matrix @@ -66,12 +63,6 @@ static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} @@ -120,13 +111,7 @@ void matrix_init(void) matrix_debouncing[i] = 0; } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - matrix_init_quantum(); - } void matrix_power_up(void) { @@ -140,12 +125,6 @@ void matrix_power_up(void) { matrix[i] = 0; matrix_debouncing[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - } uint8_t matrix_scan(void) @@ -165,20 +144,6 @@ uint8_t matrix_scan(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); wait_us(30); // without this wait read unstable value. diff --git a/keyboards/handwired/xealous/matrix.c b/keyboards/handwired/xealous/matrix.c index e2d21993917ae90d5ed409c4867c4fa80f885a75..6d43db4d913552318e05ff92abde7f7801af0a2c 100644 --- a/keyboards/handwired/xealous/matrix.c +++ b/keyboards/handwired/xealous/matrix.c @@ -30,18 +30,6 @@ along with this program. If not, see . #include "pro_micro.h" #include "config.h" #include "timer.h" -#ifdef DEBUG_MATRIX_SCAN_RATE - #include "matrix_scanrate.h" -#endif - -void matrix_scan_user(void) -{ -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_check_scan_rate(); - matrix_time_between_scans(); -#endif - -} // Copy this code to split_common/matrix.c, // and call it instead of the unoptimized col_reader. Scan-rate jumps from 1200->1920 diff --git a/keyboards/handwired/xealous/matrix_scanrate.c b/keyboards/handwired/xealous/matrix_scanrate.c deleted file mode 100644 index f2c7cbe6e36ccffa91fd1ba2a657fc2cdf046780..0000000000000000000000000000000000000000 --- a/keyboards/handwired/xealous/matrix_scanrate.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include -#include -#include "wait.h" -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" -#include "timer.h" - -#ifdef CONSOLE_ENABLE -static uint16_t matrix_scan_count = 0; -static uint32_t matrix_timer = 0; -void matrix_check_scan_rate(void) { - matrix_scan_count++; - if (matrix_scan_count > 1000) { - uint32_t timer_now = timer_read32(); - uint16_t ms_per_thousand = TIMER_DIFF_32(timer_now, matrix_timer); - uint16_t rate_per_second = 1000000UL / ms_per_thousand; - print("scan_rate: "); - pdec(rate_per_second); - print("\n"); - matrix_timer = timer_now; - matrix_scan_count = 0; - } -} - -static uint32_t last_scan_time = 0; -void matrix_time_between_scans(void) { - if (timer_elapsed(last_scan_time) > 1) - { - print(">1ms elapsed since last scan: "); - pdec(timer_elapsed(last_scan_time)); - print("\n"); - } - last_scan_time = timer_read(); - -} -#endif diff --git a/keyboards/handwired/xealous/matrix_scanrate.h b/keyboards/handwired/xealous/matrix_scanrate.h deleted file mode 100644 index 18d56cd5b4b6f0a143fc1f6d23e970b529008c0e..0000000000000000000000000000000000000000 --- a/keyboards/handwired/xealous/matrix_scanrate.h +++ /dev/null @@ -1,4 +0,0 @@ -__attribute__((weak)) -void matrix_check_scan_rate(void) {} -__attribute__((weak)) -void matrix_time_between_scans(void) {} diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk index ef3357982ea4eb0c058764fe6de77493f6fe0ed0..adbbf1e103b292c76bbb2b574201cb9f34515ecb 100644 --- a/keyboards/handwired/xealous/rules.mk +++ b/keyboards/handwired/xealous/rules.mk @@ -1,4 +1,4 @@ -SRC += matrix_scanrate.c matrix.c +SRC += matrix.c # MCU name MCU = atmega32u4 diff --git a/keyboards/hotdox/matrix.c b/keyboards/hotdox/matrix.c index 11a1142d41a952819f491253674a33366390ecfe..605be30220e65669bedd4289165f5127261b0462 100644 --- a/keyboards/hotdox/matrix.c +++ b/keyboards/hotdox/matrix.c @@ -9,9 +9,6 @@ #include "matrix.h" #include "hotdox.h" #include "left.h" -#ifdef DEBUG_MATRIX_SCAN_RATE -#include "timer.h" -#endif /* * This constant define not debouncing time in msecs, but amount of matrix @@ -41,12 +38,6 @@ static void init_cols(void); static void unselect_rows(void); static void select_row(uint8_t row); -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - - __attribute__ ((weak)) void matrix_init_user(void) {} @@ -90,13 +81,7 @@ void matrix_init(void) } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif - matrix_init_quantum(); - } void matrix_power_up(void) { @@ -107,11 +92,6 @@ void matrix_power_up(void) { for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif } // Returns a matrix_row_t whose bits are set if the corresponding key should be @@ -142,20 +122,6 @@ uint8_t matrix_scan(void) { left_scan(); -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - matrix_print(); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); wait_us(30); // without this wait read unstable value. diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index f4d2cd73893c0f18a710045c0c9332ab27588dab..9806b5015f98c4df0d0aff467f33d11d6a9a5c58 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -82,6 +82,26 @@ along with this program. If not, see . # include "velocikey.h" #endif +// Only enable this if console is enabled to print to +#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE) +static uint32_t matrix_timer = 0; +static uint32_t matrix_scan_count = 0; + +void matrix_scan_perf_task(void) { + matrix_scan_count++; + + uint32_t timer_now = timer_read32(); + if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { + dprintf("matrix scan frequency: %d\n", matrix_scan_count); + + matrix_timer = timer_now; + matrix_scan_count = 0; + } +} +#else +# define matrix_scan_perf_task() +#endif + #ifdef MATRIX_HAS_GHOST extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata) { @@ -301,6 +321,10 @@ void keyboard_task(void) { MATRIX_LOOP_END: +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_scan_perf_task(); +#endif + #ifdef QWIIC_ENABLE qwiic_task(); #endif