diff --git a/keyboards/ergodone/matrix.c b/keyboards/ergodone/matrix.c
index 4a8230aa8..456f73c95 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 3c9a2f43a..4f11a0ad5 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 5a280ee17..383bf9790 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 f7ceb194a..e28f754e6 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 58f0776c4..f0b69c841 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 9ef1f6b5c..f659ed52c 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 28cf37522..faa5c19cf 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 26c2b3126..c9c7e94ae 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 e2d219939..6d43db4d9 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 f2c7cbe6e..000000000
--- 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 18d56cd5b..000000000
--- 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 ef3357982..adbbf1e10 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 11a1142d4..605be3022 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 f4d2cd738..9806b5015 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