X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/cce8760b9169dffe1a126e221f4b4c48c83192b9..01fecac0a70b02ccb197091935052fcfc9955b26:/LUFA/Drivers/USB/LowLevel/Host.c?ds=inline diff --git a/LUFA/Drivers/USB/LowLevel/Host.c b/LUFA/Drivers/USB/LowLevel/Host.c index 2b66e28b4..6c66083a8 100644 --- a/LUFA/Drivers/USB/LowLevel/Host.c +++ b/LUFA/Drivers/USB/LowLevel/Host.c @@ -194,19 +194,21 @@ void USB_Host_ProcessNextHostState(void) uint8_t USB_Host_WaitMS(uint8_t MS) { - bool BusSuspended = USB_Host_IsBusSuspended(); - uint8_t ErrorCode = HOST_WAITERROR_Successful; - uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber(); + bool BusSuspended = USB_Host_IsBusSuspended(); + uint8_t ErrorCode = HOST_WAITERROR_Successful; USB_Host_ResumeBus(); + bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI); + + USB_INT_Disable(USB_INT_HSOFI); + USB_INT_Clear(USB_INT_HSOFI); + while (MS) { - uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber(); - - if (CurrentFrameNumber != PreviousFrameNumber) + if (USB_INT_HasOccurred(USB_INT_HSOFI)) { - PreviousFrameNumber = CurrentFrameNumber; + USB_INT_Clear(USB_INT_HSOFI); MS--; } @@ -234,6 +236,9 @@ uint8_t USB_Host_WaitMS(uint8_t MS) } } + if (HSOFIEnabled) + USB_INT_Enable(USB_INT_HSOFI); + if (BusSuspended) USB_Host_SuspendBus();