X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/7f9f97c792dee6875fbca9806422bdd7d6c5a657..e331b531c6e6d93eb0eee42b9002074e8090ad18:/LUFA/Drivers/USB/LowLevel/LowLevel.h diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h index f20cb72bc..efa605b72 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.h +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h @@ -28,6 +28,16 @@ this software. */ +/** \file + * \brief USB low level USB controller definitions. + * + * This file contains structures, function prototypes and macros related to the low level configutation of the + * USB controller, to start, stop and reset the USB library core. + * + * \note This file should not be included directly. It is automatically included as needed by the USB driver + * dispatch header located in LUFA/Drivers/USB/USB.h. + */ + /** \ingroup Group_USB * @defgroup Group_USBManagement USB Interface Management * @@ -50,7 +60,7 @@ #include "../HighLevel/USBMode.h" #include "../HighLevel/Events.h" #include "../HighLevel/USBTask.h" - #include "../HighLevel/USBInterrupt.h" + #include "USBInterrupt.h" #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__) #include "Host.h" @@ -70,13 +80,18 @@ #endif /* Preprocessor Checks and Defines: */ + #if !defined(__INCLUDE_FROM_USB_DRIVER) + #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. + #endif + #if !defined(F_CLOCK) #error F_CLOCK is not defined. You must define F_CLOCK to the frequency of the unprescaled input clock in your project makefile. #endif #if (F_CLOCK == 8000000) #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \ - defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__)) + defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \ + defined(__AVR_ATmega32U2__)) #define USB_PLL_PSC 0 #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) #define USB_PLL_PSC 0 @@ -87,7 +102,8 @@ #endif #elif (F_CLOCK == 16000000) #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \ - defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__)) + defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \ + defined(__AVR_ATmega32U2__)) #define USB_PLL_PSC (1 << PLLP0) #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) #define USB_PLL_PSC (1 << PINDIV) @@ -220,8 +236,12 @@ * allow for device connection to a host when in device mode, or for device enumeration while in * host mode. * - * As the USB library relies on USB interrupts for some of its functionality, this routine will - * enable global interrupts. + * As the USB library relies on interrupts for the device and host mode enumeration processes, + * the user must enable global interrupts before or shortly after this function is called. In + * device mode, interrupts must be enabled within 500ms of this function being called to ensure + * that the host does not time out whilst enumerating the device. In host mode, interrupts may be + * enabled at the application's leisure however enumeration will not begin of an attached device + * until after this has occurred. * * Calling this function when the USB interface is already initialized will cause a complete USB * interface reset and re-enumeration. @@ -236,16 +256,18 @@ * mode speed. * * \note To reduce the FLASH requirements of the library if only device or host mode is required, - * this can be statically set via defining the token USB_DEVICE_ONLY for device mode or - * USB_HOST_ONLY for host mode in the use project makefile, passing the token to the compiler + * the mode can be statically set in the project makefile by defining the token USB_DEVICE_ONLY + * (for device mode) or USB_HOST_ONLY (for host mode), passing the token to the compiler * via the -D switch. If the mode is statically set, this parameter does not exist in the * function prototype. + * \n\n * * \note To reduce the FLASH requirements of the library if only fixed settings are are required, * the options may be set statically in the same manner as the mode (see the Mode parameter of * this function). To statically set the USB options, pass in the USE_STATIC_OPTIONS token, * defined to the appropriate options masks. When the options are statically set, this * parameter does not exist in the function prototype. + * \n\n * * \note The mode parameter does not exist on devices where only one mode is possible, such as USB * AVR models which only implement the USB device mode in hardware.