From 4acc38751e9c8e90921773e6e5f5a100b0729d98 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 24 Oct 2010 03:27:43 +0900 Subject: [PATCH] switch debug on/off by pressing 4 keys on booting time --- README | 17 ++++++++++++++++- hhkb/matrix.c | 18 +++++++++++++++++- key_process.c | 1 + print.c | 9 +++++++++ print.h | 4 ++++ tmk.c | 26 ++++++++++++++------------ 6 files changed, 61 insertions(+), 14 deletions(-) diff --git a/README b/README index 74a5014af..9bc883410 100644 --- a/README +++ b/README @@ -45,6 +45,12 @@ $ cd (hhkb or macway) $ make +Debuging +-------- +Debug print is on if 4 keys are pressed during booting. +Use PJRC's hid_listen.exe to see debug messages. + + AVR Target board ---------------- Teensy/Teensy++ @@ -84,9 +90,14 @@ debouncing logic will be coded when bouncing occurs. bouncing doesnt occur on my ALPS switch so far. scan rate is too slow?(to be measure) -layer switch +layer switching time before switching timeout when not used during specific time +debug on/off + Fn key conbination during normal operation + matrix print on/off + key print on/off + mouse print on/off Trackpoint(PS/2) receive PS/2 signal from TrackPoint @@ -116,6 +127,10 @@ keymap 2010/10/23 souce code cleaning 2010/10/23 +debug on/off + debug off by default + pressing keys during booting + 2010/10/23 EOF diff --git a/hhkb/matrix.c b/hhkb/matrix.c index a1917793e..a425439cc 100644 --- a/hhkb/matrix.c +++ b/hhkb/matrix.c @@ -32,6 +32,7 @@ static uint8_t _matrix1[MATRIX_ROWS]; static bool matrix_has_ghost_in_row(int row); +static int bit_pop(uint8_t bits); inline @@ -88,7 +89,7 @@ int matrix_scan(void) } bool matrix_is_modified(void) { - for (int i=0; i #include "print.h" + +bool print_enable = false; + void print_P(const char *s) { + if (!print_enable) return; char c; while (1) { @@ -41,17 +45,20 @@ void print_P(const char *s) void phex1(unsigned char c) { + if (!print_enable) return; usb_debug_putchar(c + ((c < 10) ? '0' : 'A' - 10)); } void phex(unsigned char c) { + if (!print_enable) return; phex1(c >> 4); phex1(c & 15); } void phex16(unsigned int i) { + if (!print_enable) return; phex(i >> 8); phex(i); } @@ -59,6 +66,7 @@ void phex16(unsigned int i) void pbin(unsigned char c) { + if (!print_enable) return; for (int i = 7; i >= 0; i--) { usb_debug_putchar((c & (1< #include #include "usb_debug.h" + +bool print_enable; + // this macro allows you to write print("some text") and // the string is automatically placed into flash memory :) #define print(s) print_P(PSTR(s)) diff --git a/tmk.c b/tmk.c index cd52d318e..54b02fcbc 100644 --- a/tmk.c +++ b/tmk.c @@ -63,18 +63,6 @@ int main(void) usb_init(); while (!usb_configured()) /* wait */ ; - // Wait an extra second for the PC's operating system to load drivers - // and do whatever it does to actually be ready for input - // needs such long time in my PC. - /* wait for debug print. no need for normal use */ - for (int i =0; i < 6; i++) { - LED_CONFIG; - LED_ON; - _delay_ms(500); - LED_OFF; - _delay_ms(500); - } - // Configure timer 0 to generate a timer overflow interrupt every // 256*1024 clock cycles, or approx 61 Hz when using 16 MHz clock // This demonstrates how to use interrupts to implement a simple @@ -85,6 +73,20 @@ int main(void) matrix_init(); + matrix_scan(); + // debug on when 4 keys are pressed + if (matrix_key_count() == 4) print_enable = true; + + /* wait for debug pipe to print greetings. */ + if (print_enable) { + for (int i =0; i < 6; i++) { + LED_CONFIG; + LED_ON; + _delay_ms(500); + LED_OFF; + _delay_ms(500); + } + } print("\nt.m.k. keyboard 1.2\n"); while (1) { proc_matrix();