]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Port DEBUG_MATRIX_SCAN_RATE to core (#7029)
authorJoel Challis <git@zvecr.com>
Tue, 15 Oct 2019 12:32:52 +0000 (13:32 +0100)
committerGitHub <noreply@github.com>
Tue, 15 Oct 2019 12:32:52 +0000 (13:32 +0100)
* 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

14 files changed:
keyboards/ergodone/matrix.c
keyboards/ergodox_ez/matrix.c
keyboards/ergodox_stm32/matrix.c
keyboards/ergotaco/matrix.c
keyboards/georgi/matrix.c
keyboards/gergo/matrix.c
keyboards/handwired/dactyl/matrix.c
keyboards/handwired/frenchdev/matrix.c
keyboards/handwired/xealous/matrix.c
keyboards/handwired/xealous/matrix_scanrate.c [deleted file]
keyboards/handwired/xealous/matrix_scanrate.h [deleted file]
keyboards/handwired/xealous/rules.mk
keyboards/hotdox/matrix.c
tmk_core/common/keyboard.c

index 4a8230aa81d778ca7519a468c896b4b069a21778..456f73c954d5aed442896fde7eace5ceb1ffdaee 100644 (file)
@@ -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.
index 3c9a2f43a7c69b38d502d4ca5fd47297cad58626..4f11a0ad521a6973149b6117c1d6448d3fd6a069 100644 (file)
@@ -32,15 +32,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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
index 5a280ee17dd5114192615cffc808e792dd7bab56..383bf9790a5b4b11b91eb7ac0be4c3afc0c2893d 100644 (file)
 #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];
index f7ceb194ad6170e3c97d60d0e56f9c0a77e1b8a2..e28f754e67eeba2e1c002844b71f4fb0fc862295 100644 (file)
@@ -26,9 +26,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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
index 58f0776c42529de372e9e832857cd6adad33ab42..f0b69c841abbe28ad6d2cc0710feff7d08723bbf 100644 (file)
@@ -27,10 +27,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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
index 9ef1f6b5cfa9e5939c8b8eddb03c63018e1e68b9..f659ed52c25634125dba550fea63e824d410ca25 100644 (file)
@@ -27,9 +27,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "util.h"
 #include "debounce.h"
 #include QMK_KEYBOARD_H
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#   include  "timer.h"
-#endif
 
 #ifdef BALLER
 #include <avr/interrupt.h>
@@ -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
index 28cf37522b0e772323fb3c94300d584a6b13d2d1..faa5c19cf259a5d65c91a57a25cea4dcd5417fb3 100644 (file)
@@ -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)
index 26c2b312609e98e4579e4d2fb30b870a2a372b40..c9c7e94aea768a73403f4f69978f7aec0bdf7a89 100644 (file)
@@ -35,9 +35,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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.
index e2d21993917ae90d5ed409c4867c4fa80f885a75..6d43db4d913552318e05ff92abde7f7801af0a2c 100644 (file)
@@ -30,18 +30,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #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 (file)
index f2c7cbe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#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 (file)
index 18d56cd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-__attribute__((weak))
-void matrix_check_scan_rate(void) {}
-__attribute__((weak))
-void matrix_time_between_scans(void) {}
index ef3357982ea4eb0c058764fe6de77493f6fe0ed0..adbbf1e103b292c76bbb2b574201cb9f34515ecb 100644 (file)
@@ -1,4 +1,4 @@
-SRC += matrix_scanrate.c matrix.c
+SRC += matrix.c
 
 # MCU name
 MCU = atmega32u4
index 11a1142d41a952819f491253674a33366390ecfe..605be30220e65669bedd4289165f5127261b0462 100644 (file)
@@ -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.
index f4d2cd73893c0f18a710045c0c9332ab27588dab..9806b5015f98c4df0d0aff467f33d11d6a9a5c58 100644 (file)
@@ -82,6 +82,26 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #    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