diff --git a/hardware/arduino/avr/cores/arduino/USBAPI.h b/hardware/arduino/avr/cores/arduino/USBAPI.h index 7f468a66c93..7eafcca5c90 100644 --- a/hardware/arduino/avr/cores/arduino/USBAPI.h +++ b/hardware/arduino/avr/cores/arduino/USBAPI.h @@ -67,6 +67,7 @@ class USBDevice_ bool wakeupHost(); // returns false, when wakeup cannot be processed }; extern USBDevice_ USBDevice; +void setupUSB(); //================================================================================ //================================================================================ diff --git a/hardware/arduino/avr/cores/arduino/USBCore.cpp b/hardware/arduino/avr/cores/arduino/USBCore.cpp index f12d3269afd..b2f2cdb2728 100644 --- a/hardware/arduino/avr/cores/arduino/USBCore.cpp +++ b/hardware/arduino/avr/cores/arduino/USBCore.cpp @@ -828,4 +828,8 @@ bool USBDevice_::wakeupHost() return false; } +void setupUSB() { + USBDevice.attach(); +} + #endif /* if defined(USBCON) */ diff --git a/hardware/arduino/avr/cores/arduino/main.cpp b/hardware/arduino/avr/cores/arduino/main.cpp index 434cd403c0d..cc1d1ced66d 100644 --- a/hardware/arduino/avr/cores/arduino/main.cpp +++ b/hardware/arduino/avr/cores/arduino/main.cpp @@ -28,7 +28,11 @@ void initVariant() __attribute__((weak)); void initVariant() { } void setupUSB() __attribute__((weak)); -void setupUSB() { } +void setupUSB() { +#if defined(USBCON) && defined(DYNAMIC_USB_CORE_INCLUDE)) + USBDevice.attach(); +#endif +} int main(void) { @@ -37,7 +41,7 @@ int main(void) initVariant(); #if defined(USBCON) - USBDevice.attach(); + setupUSB(); #endif setup();