diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2012-05-05 19:46:20 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2012-05-05 19:46:20 +0000 |
commit | 0e434c8f8fc1e33230a9b9c54583d59a232553e5 (patch) | |
tree | cd0812d13511928f5d7df6ac78fb51356c753890 | |
parent | 2d98e5499b42ca4feda390d5bd867aa956bf7f11 (diff) | |
download | lufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.tar.gz lufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.tar.bz2 lufa-0e434c8f8fc1e33230a9b9c54583d59a232553e5.zip |
Add additional preprocessor sanity checks for the XMEGA platform based on the USB controller input clock speed.
-rw-r--r-- | LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h | 10 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c | 6 | ||||
-rw-r--r-- | LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h index 268fe95c0..4d75cc2a2 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h +++ b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h @@ -92,10 +92,12 @@ */ #define USB_DEVICE_OPT_LOWSPEED (1 << 0) - /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the - * USB interface should be initialized in full speed (12Mb/s) mode. - */ - #define USB_DEVICE_OPT_FULLSPEED (0 << 0) + #if (F_USB > 6000000) + /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the + * USB interface should be initialized in full speed (12Mb/s) mode. + */ + #define USB_DEVICE_OPT_FULLSPEED (0 << 0) + #endif //@} #if (!defined(NO_INTERNAL_SERIAL) || defined(__DOXYGEN__)) diff --git a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c index ffdca3adf..844ef650f 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c +++ b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.c @@ -105,11 +105,15 @@ void USB_Disable(void) 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 diff --git a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h index 1cdb6f03c..25402e855 100644 --- a/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h +++ b/LUFA/Drivers/USB/Core/XMEGA/USBController_XMEGA.h @@ -95,7 +95,7 @@ #error F_USB is not defined. You must define F_USB to the frequency of the unprescaled USB controller clock in your project makefile. #endif - #if (F_USB % 6000000) + #if ((F_USB % 6000000) || (F_USB < 6000000)) #error Invalid F_USB specified. F_USB must be a multiple of 6MHz for USB Low Speed operation, and a multiple of 48MHz for Full Speed operation. #endif |