From 9bd6d6112d698ea5823b268983809fe3b8d98b26 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Wed, 29 Aug 2018 10:08:07 +1000 Subject: 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 --- keyboards/handwired/xealous/matrix_scanrate.c | 39 +++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 keyboards/handwired/xealous/matrix_scanrate.c (limited to 'keyboards/handwired/xealous/matrix_scanrate.c') diff --git a/keyboards/handwired/xealous/matrix_scanrate.c b/keyboards/handwired/xealous/matrix_scanrate.c new file mode 100644 index 0000000000..f2c7cbe6e3 --- /dev/null +++ b/keyboards/handwired/xealous/matrix_scanrate.c @@ -0,0 +1,39 @@ +#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 -- cgit v1.2.3