X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=tmk.c;h=2248a7d71296d2be2c2ca09f2f14a63b995bc5fd;hb=2a562a4191a5b9e88731efb5eabd921821f25f7e;hp=c01972514d36527a98a450c251503ca94c3e9ffd;hpb=54b5bafaacf0d7863b7bdb84dd69cbc80db77956;p=max%2Ftmk_keyboard.git diff --git a/tmk.c b/tmk.c index c0197251..2248a7d7 100644 --- a/tmk.c +++ b/tmk.c @@ -24,36 +24,38 @@ * THE SOFTWARE. */ -// TODO: clean unused headers #include #include -#include #include #include #include "usb.h" -#include "usb_keyboard.h" -#include "usb_mouse.h" +#include "matrix_skel.h" +#include "key_process.h" #include "print.h" -#include "matrix.h" -#include "keymap.h" +#include "debug.h" +#include "util.h" +#include "timer.h" #include "jump_bootloader.h" +#ifdef PS2_MOUSE_ENABLE +# include "ps2.h" +# include "ps2_mouse.h" +#endif -#include "key_process.h" #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -// TODO: should go to hardware dependent file -// for Teensy/Teensy++ 2.0 -#define LED_CONFIG (DDRD |= (1<<6)) -#define LED_ON (PORTD |= (1<<6)) -#define LED_OFF (PORTD &= ~(1<<6)) - -uint16_t idle_count=0; +bool debug_enable = false; +bool debug_matrix = false; +bool debug_keyboard = false; +bool debug_mouse = false; int main(void) { + DEBUG_LED_CONFIG; + DEBUG_LED_OFF; + // set for 16 MHz clock CPU_PRESCALE(0); @@ -63,41 +65,41 @@ 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); - } + timer_init(); - // 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 - // inactivity timeout. - TCCR0A = 0x00; - TCCR0B = 0x05; - TIMSK0 = (1<= 3) { +#ifdef DEBUG_LED + for (int i = 0; i < 6; i++) { + DEBUG_LED_CONFIG; + DEBUG_LED_ON; + _delay_ms(500); + DEBUG_LED_OFF; + _delay_ms(500); + } +#else + _delay_ms(5000); +#endif + print_enable = true; + debug_enable = true; + debug_matrix = true; + debug_keyboard = true; + debug_mouse = true; + print("debug enabled.\n"); + } + if (matrix_key_count() >= 4) { + print("jump to bootloader...\n"); + _delay_ms(1000); + jump_bootloader(); // not return + } +#ifdef PS2_MOUSE_ENABLE + ps2_host_init(); + ps2_mouse_init(); +#endif - matrix_init(); - print("\nt.m.k. keyboard 1.2\n"); while (1) { proc_matrix(); - _delay_ms(2); } } - - -// This interrupt routine is run approx 61 times per second. -// A very simple inactivity timeout is implemented, where we -// will send a space character and print a message to the -// hid_listen debug message window. -ISR(TIMER0_OVF_vect) -{ - idle_count++; -}