summaryrefslogtreecommitdiffstats
path: root/keyboards/handwired/xealous/matrix_scanrate.c
diff options
context:
space:
mode:
authorAlex Ong <the.onga@gmail.com>2018-08-29 02:08:07 +0200
committerDrashna Jaelre <drashna@live.com>2018-08-29 02:08:07 +0200
commit9bd6d6112d698ea5823b268983809fe3b8d98b26 (patch)
treea47b90c36bc7c976bd57b5d69bdba0e905bcfd66 /keyboards/handwired/xealous/matrix_scanrate.c
parentaf5f59636eea83f66db6510f61510d31ee9dade4 (diff)
downloadqmk_firmware-9bd6d6112d698ea5823b268983809fe3b8d98b26.tar.gz
qmk_firmware-9bd6d6112d698ea5823b268983809fe3b8d98b26.tar.xz
Keyboard: xealous (#3731)
* Keyboard: HandWired/XeaL60 * Updated rules.mk * Mapping for layout was flipped * Figured out how to re-map bad pins. * Updated Keymap * Enabled audio, Forced NKRO * Added QMK_KEYS_PER_SCAN * Removed more unnecessary files, since split_keyboards are in main QMK branch already. * Simplified rules.mk in rev1 * Removed i2c from matrix.c * Re-formatted to 4 spaces per tab, * Changed note for NUMPAD * Added I2C support back! * Fixed keyboard mappings. Both sides work * Moved i2c configuration from keymaps/default/config.h to config.h * Changed SCL_CLOCK to 400000L * Added DEBUG_MATRIX_SCAN_RATE for future optimization efforts * Removed row2col code to clean up matrix.c * Scan rate from 2100 -> 4200 by using Nop instead of waiting 30us between columns. * Further optimized column reading via optimized_col_reader. * Immediate key-recognition * Switched back to own implementation of SPLIT_KEYBOARD. Will optimize so that slave interrupts master. * Moved scanrate debug messages to another file. * Made matrix_scanrate.c compile if CONSOLE_ENABLE is off. Updated to latest i2c.c * Latest i2c uses a few bytes for lighting information * Optimizations in i2c.h to determine buffer size. * Disabled a whole bunch of features. TODO: Test that keyboard still works fine. * Minimum #define NO_ACTION's with still working keyboard * Fixed matrix not working due to offsets not being respected * Added numlock button for keymap. * Use I2C_KEYMAP_START offset * Removed serial, Backlight and RGB support * Removed need for split_flags. * Added audio on and off for numlock. * Renamed from xeal60 to xealous, simplified build system. * Used more shared split_common code. * Updated audio code. * moved tone_qwerty and tone_numpad to config.h. Removed keymaps/default/config.h * Added more shortcut keys in _FN layer. Increased debounce to 6ms due to fencepost error. * DF used with incorrect argument. Custom_keycodes no longer required. * Fixed bug in update_debounce_counters which was resulting in no debouncing! * Removed unnecessary #include
Diffstat (limited to 'keyboards/handwired/xealous/matrix_scanrate.c')
-rw-r--r--keyboards/handwired/xealous/matrix_scanrate.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/keyboards/handwired/xealous/matrix_scanrate.c b/keyboards/handwired/xealous/matrix_scanrate.c
new file mode 100644
index 000000000..f2c7cbe6e
--- /dev/null
+++ b/keyboards/handwired/xealous/matrix_scanrate.c
@@ -0,0 +1,39 @@
+#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