From 7d692c492ca999edd827477b914ae38ce43bf519 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 21 Sep 2013 22:47:03 +0900 Subject: Fix USB initilaize on LUFA - Add print messages of USB intialize procesure. - call out sei() in earlier stage. LUFA API doc of USB_Init() says: interrupts must be enabled within 500ms ... to ensure that the host does not time out whilst enumerating the device - remove matrix_init() from suspend_wakeup_init(). It is not needed in fact and if matrix_init() takes long time to initialize it prevents host emnumerating the device. --- protocol/lufa/lufa.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'protocol') diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c index c1617cd05a..a4e57b227d 100644 --- a/protocol/lufa/lufa.c +++ b/protocol/lufa/lufa.c @@ -531,19 +531,24 @@ static void SetupHardware(void) // for Console_Task USB_Device_EnableSOFEvents(); + print_set_sendchar(sendchar); } int main(void) __attribute__ ((weak)); int main(void) { SetupHardware(); + sei(); + while (USB_DeviceState != DEVICE_STATE_Configured) ; + print("USB configured.\n"); + keyboard_init(); host_set_driver(&lufa_driver); #ifdef SLEEP_LED_ENABLE sleep_led_init(); #endif - sei(); + print("Keyboard start.\n"); while (1) { while (USB_DeviceState == DEVICE_STATE_Suspended) { suspend_power_down(); -- cgit v1.2.3