Skip to content

Commit

Permalink
Fix USB initilaize on LUFA
Browse files Browse the repository at this point in the history
- 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.
  • Loading branch information
yashikno committed Sep 21, 2013
1 parent 6ccea74 commit 7d692c4
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 6 deletions.
3 changes: 0 additions & 3 deletions common/keyboard.c
Expand Up @@ -54,9 +54,6 @@ static bool has_ghost_in_row(uint8_t row)

void keyboard_init(void)
{
// TODO: configuration of sendchar impl
print_set_sendchar(sendchar);

timer_init();
matrix_init();
#ifdef PS2_MOUSE_ENABLE
Expand Down
3 changes: 1 addition & 2 deletions common/suspend.c
Expand Up @@ -51,8 +51,7 @@ bool suspend_wakeup_condition(void)
// run immediately after wakeup
void suspend_wakeup_init(void)
{
// clear matrix and keyboard state
matrix_init();
// clear keyboard state
clear_keyboard();
#ifdef BACKLIGHT_ENABLE
backlight_init();
Expand Down
7 changes: 6 additions & 1 deletion protocol/lufa/lufa.c
Expand Up @@ -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();
Expand Down

0 comments on commit 7d692c4

Please sign in to comment.