keychron_qmk_firmware/keyboards/handwired/xealous/matrix_scanrate.c

40 lines
1013 B
C
Raw Normal View History

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
2018-08-29 06:08:07 +06:00
#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