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)