X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/899df7d3318e478859d940ec8debe679888476a5..5b06886dab18711c33c884e8da81b66d0f3f1541:/LUFA/Drivers/USB/Core/DeviceStandardReq.c diff --git a/LUFA/Drivers/USB/Core/DeviceStandardReq.c b/LUFA/Drivers/USB/Core/DeviceStandardReq.c index e36820387..f9c64b6f8 100644 --- a/LUFA/Drivers/USB/Core/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/Core/DeviceStandardReq.c @@ -114,20 +114,20 @@ void USB_Device_ProcessControlRequest(void) static void USB_Device_SetAddress(void) { - uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Endpoint_ClearSETUP(); + uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); + uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); + GlobalInterruptDisable(); + + Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); + Endpoint_ClearStatusStage(); - while (!(Endpoint_IsINReady())); + while (!(Endpoint_IsINReady())); - USB_Device_SetDeviceAddress(DeviceAddress); - } - + USB_Device_SetDeviceAddress(DeviceAddress); USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; + + SetGlobalInterruptMask(CurrentGlobalInt); } static void USB_Device_SetConfiguration(void)