LPC1768 + HID клавиатура через USB OTG - не удается подключить "на горячую" Подключаю HID клавиатуру через USB OTG к LPC1768. Подаю питание на плату. На клавиатуре загорается светодиодик NumLock и если нажимать на клавиши - то видно клавиатура работает нормально (транслирую их на ПК через uart). Но если вытащить клавиатуру и снова вставить ее в usb, то она уже не включается, т.е. не происходит ее поднятие "на-горячую". Хотя по обработчику событий должна происходить энумерация вновь подключенного устройства.
Использую библиотеку от keil (скриншот во вложении) (uVision V5.16a) - пример взят от демо платы MCB1700. Код обработчика событий клавиатуры:
void USBH_Thread (void const *arg) {
  char con    =  0;                          /* Connection status of keyboard */
  char con_ex =  40;                         /* Previous connection status    
                                                + initial time in 100 ms   
                                                intervals for initial display */
  uint8_t out[64];                          /* Output to keyboard LEDs       */
         out[0]=1;               
  USBH_Initialize (0);                       /* Initialize USB Host 0         */
	
  while (1) { 
    con = USBH_HID_GetDeviceStatus(0) == usbOK;  /* Get kbd connection status */
    if ((con ^ con_ex) & 1) {                /* If connection status changed  */
      if (con) {
        USBH_HID_Write (0,(uint8_t *)&out,1);/* Turn on NUM LED               */
        printf ("\nKeyboard connected\n");
      } else {
        printf ("\nKeyboard disconnected ...\n");
      }
      con_ex = con;
    } else if (con_ex > 1) {                 /* If initial time active        */
      con_ex -= 2;                           /* Decrement initial time        */
      if ((con_ex <= 1) && (!con)) {         /* If initial time expired       */
        printf ("\nNo keyboard connected ... \n");
        con_ex = con;
      } else {
        osDelay(200);
      }
    }
    osDelay(100);
  }
}
osThreadDef(USBH_Thread, osPriorityNormal, 1, NULL);

