USB_ResetInterface();
        }
+
+       if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
+       {
+               USB_INT_Clear(USB_INT_HSOFI);
+               
+               EVENT_USB_Host_StartOfFrame();
+       }
        #endif
 
        #if defined(USB_CAN_BE_BOTH)
 
        Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
        USB_INT_Disable(USB_INT_RXSTPI);
-       sei();
 
-       USB_USBTask();
+       NONATOMIC_BLOCK(NONATOMIC_FORCEOFF)
+       {
+               USB_Device_ProcessControlRequest();
+       }
 
+       Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
        USB_INT_Enable(USB_INT_RXSTPI);
        Endpoint_SelectEndpoint(PrevSelectedEndpoint);
 }