mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-01 05:07:26 +06:00
9bd6d6112d
* 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
40 lines
1013 B
C
40 lines
1013 B
C
#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
|