void USB_ShutDown(void) { if (USB_IsConnected) RAISE_EVENT(USB_Disconnect); USB_INT_DisableAllInterrupts(); USB_INT_ClearAllInterrupts(); USB_IsConnected = false; USB_IsInitialized = false; #if defined(USB_CAN_BE_HOST) USB_HostState = HOST_STATE_Unattached; #endif #if defined(USB_CAN_BE_DEVICE) USB_ConfigurationNumber = 0; #endif #if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY)) USB_CurrentMode = USB_MODE_NONE; #endif #if !defined(USE_STATIC_OPTIONS) USB_Options = 0; #endif USB_Interface_Disable(); USB_PLL_Off(); #if defined(USB_FULL_CONTROLLER) || defined(USB_MODIFIED_FULL_CONTROLLER) USB_OTGPAD_Off(); #endif #if defined(USB_CAN_BE_BOTH) UHWCON &= ~(1 << UIDE); #endif }
void USB_Disable(void) { USB_INT_DisableAllInterrupts(); USB_INT_ClearAllInterrupts(); USB_Detach(); USB_Controller_Disable(); if (!(USB_Options & USB_OPT_MANUAL_PLL)) USB_PLL_Off(); USB_REG_Off(); #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) USB_OTGPAD_Off(); #endif #if defined(USB_CAN_BE_BOTH) USB_CurrentMode = USB_MODE_None; #endif USB_IsInitialized = false; }
void USB_ResetInterface(void) { #if defined(USB_DEVICE_OPT_FULLSPEED) if (USB_Options & USB_DEVICE_OPT_LOWSPEED) CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp); else CLK.USBCTRL = (((F_USB / 48000000) - 1) << CLK_USBPSDIV_gp); #else CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp); #endif if (USB_Options & USB_OPT_PLLCLKSRC) CLK.USBCTRL |= (CLK_USBSRC_PLL_gc | CLK_USBSEN_bm); else CLK.USBCTRL |= (CLK_USBSRC_RC32M_gc | CLK_USBSEN_bm); USB_Device_SetDeviceAddress(0); USB_INT_DisableAllInterrupts(); USB_INT_ClearAllInterrupts(); USB_Controller_Reset(); USB_Init_Device(); }
void USB_ResetInterface(void) { USB_INT_DisableAllInterrupts(); USB_INT_ClearAllInterrupts(); #if defined(USB_CAN_BE_HOST) USB_HostState = HOST_STATE_Unattached; #endif #if defined(USB_CAN_BE_DEVICE) USB_DeviceState = DEVICE_STATE_Unattached; USB_ConfigurationNumber = 0; #if !defined(NO_DEVICE_REMOTE_WAKEUP) USB_RemoteWakeupEnabled = false; #endif #if !defined(NO_DEVICE_SELF_POWER) USB_CurrentlySelfPowered = false; #endif #endif if (!(USB_Options & USB_OPT_MANUAL_PLL)) { #if defined(USB_SERIES_4_AVR) PLLFRQ = ((1 << PLLUSB) | (1 << PDIV3) | (1 << PDIV1)); #endif USB_PLL_On(); while (!(USB_PLL_IsReady())); } USB_Controller_Reset(); #if defined(USB_CAN_BE_BOTH) if (UHWCON & (1 << UIDE)) { USB_INT_Clear(USB_INT_IDTI); USB_INT_Enable(USB_INT_IDTI); USB_CurrentMode = USB_GetUSBModeFromUID(); } #endif if (!(USB_Options & USB_OPT_REG_DISABLED)) USB_REG_On(); else USB_REG_Off(); USB_CLK_Unfreeze(); #if (defined(USB_CAN_BE_DEVICE) && (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))) if (USB_CurrentMode == USB_MODE_DEVICE) { if (USB_Options & USB_DEVICE_OPT_LOWSPEED) USB_Device_SetLowSpeed(); else USB_Device_SetFullSpeed(); } #endif #if (defined(USB_CAN_BE_DEVICE) && !defined(FIXED_CONTROL_ENDPOINT_SIZE)) if (USB_CurrentMode == USB_MODE_DEVICE) { USB_Descriptor_Device_t* DeviceDescriptorPtr; if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR) { #if defined(USE_RAM_DESCRIPTORS) USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size; #elif defined(USE_EEPROM_DESCRIPTORS) USB_ControlEndpointSize = eeprom_read_byte(&DeviceDescriptorPtr->Endpoint0Size); #else USB_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size); #endif } } #endif USB_Attach(); #if defined(USB_DEVICE_ONLY) USB_INT_Clear(USB_INT_SUSPEND); USB_INT_Enable(USB_INT_SUSPEND); USB_INT_Clear(USB_INT_EORSTI); USB_INT_Enable(USB_INT_EORSTI); #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) USB_INT_Enable(USB_INT_VBUS); #endif #elif defined(USB_HOST_ONLY) USB_Host_HostMode_On(); USB_Host_VBUS_Auto_Off(); USB_OTGPAD_Off(); USB_Host_VBUS_Manual_Enable(); USB_Host_VBUS_Manual_On(); USB_INT_Enable(USB_INT_SRPI); USB_INT_Enable(USB_INT_BCERRI); #else if (USB_CurrentMode == USB_MODE_DEVICE) { USB_INT_Clear(USB_INT_SUSPEND); USB_INT_Enable(USB_INT_SUSPEND); USB_INT_Clear(USB_INT_EORSTI); USB_INT_Enable(USB_INT_EORSTI); #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) USB_INT_Enable(USB_INT_VBUS); #endif #if defined(CONTROL_ONLY_DEVICE) UENUM = ENDPOINT_CONTROLEP; #endif } else if (USB_CurrentMode == USB_MODE_HOST) { USB_Host_HostMode_On(); USB_Host_VBUS_Auto_Off(); USB_OTGPAD_Off(); USB_Host_VBUS_Manual_Enable(); USB_Host_VBUS_Manual_On(); USB_INT_Enable(USB_INT_SRPI); USB_INT_Enable(USB_INT_BCERRI); } #endif }
void USB_SetupInterface(void) { USB_INT_DisableAllInterrupts(); USB_INT_ClearAllInterrupts(); USB_IsConnected = false; #if defined(USB_CAN_BE_BOTH) USB_IsInitialized = false; #endif #if defined(USB_CAN_BE_HOST) USB_HostState = HOST_STATE_Unattached; #endif #if defined(USB_CAN_BE_DEVICE) USB_ConfigurationNumber = 0; USB_RemoteWakeupEnabled = false; USB_CurrentlySelfPowered = false; #endif #if defined(USB_MODIFIED_FULL_CONTROLLER) && !defined(MANUAL_PLL_CONTROL) PLLFRQ = ((1 << PLLUSB) | (1 << PDIV3) | (1 << PDIV1)); #endif #if !defined(MANUAL_PLL_CONTROL) USB_PLL_On(); #endif while (!(USB_PLL_IsReady())); USB_Interface_Reset(); #if defined(USB_CAN_BE_BOTH) if (UHWCON & (1 << UIDE)) { USB_INT_Clear(USB_INT_IDTI); USB_INT_Enable(USB_INT_IDTI); USB_CurrentMode = USB_GetUSBModeFromUID(); } #elif defined(USB_DEVICE_ONLY) #if defined(USB_FULL_CONTROLLER) || defined(USB_MODIFIED_FULL_CONTROLLER) USB_INT_Enable(USB_INT_VBUS); #endif #endif if (!(USB_Options & USB_OPT_REG_DISABLED)) USB_REG_On(); USB_CLK_Unfreeze(); #if (defined(USB_CAN_BE_DEVICE) && (defined(USB_FULL_CONTROLLER) || defined(USB_MODIFIED_FULL_CONTROLLER))) if (USB_CurrentMode == USB_MODE_DEVICE) { #ifdef CUL_V3 USB_Device_SetHighSpeed(); #else if (USB_Options & USB_DEVICE_OPT_LOWSPEED) USB_Device_SetLowSpeed(); else USB_Device_SetHighSpeed(); #endif USB_INT_Enable(USB_INT_VBUS); } #endif #if defined(USB_CAN_BE_HOST) USB_INT_Enable(USB_INT_VBERRI); if (USB_CurrentMode == USB_MODE_HOST) USB_Host_PrepareForDeviceConnect(); #endif #if defined(USB_CAN_BE_DEVICE) USB_Descriptor_Device_t* DeviceDescriptorPtr; uint16_t DeviceDescriptorSize; if (USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr, &DeviceDescriptorSize) == true) { #if defined(USE_RAM_DESCRIPTORS) USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size; #elif defined(USE_EEPROM_DESCRIPTORS) USB_ControlEndpointSize = eeprom_read_byte(&DeviceDescriptorPtr->Endpoint0Size); #else USB_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size); #endif } #endif USB_Attach(); #if defined(USB_DEVICE_ONLY) USB_INT_Enable(USB_INT_SUSPEND); USB_INT_Enable(USB_INT_EORSTI); #elif defined(USB_HOST_ONLY) USB_Host_HostMode_On(); #else if (USB_CurrentMode == USB_MODE_DEVICE) { USB_INT_Enable(USB_INT_SUSPEND); USB_INT_Enable(USB_INT_EORSTI); } else if (USB_CurrentMode == USB_MODE_HOST) { USB_Host_HostMode_On(); } #endif #if defined(USB_CAN_BE_BOTH) USB_InitTaskPointer(); #endif }