- 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.
void keyboard_init(void)
{
- // TODO: configuration of sendchar impl
- print_set_sendchar(sendchar);
-
timer_init();
matrix_init();
#ifdef PS2_MOUSE_ENABLE
// 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();
// 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();