⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lowlevel.h

📁 userial is an Free project building an USB to I2C/SPI/GPIO bridge, using the Atmel AT90USB647 chip.
💻 H
📖 第 1 页 / 共 2 页
字号:
			 */			#define USB_Detach()                    MACROS{ UDCON  |=  (1 << DETACH);  }MACROE			/** Attaches the device to the USB bus. This announces the device's presence to any attached			 *  USB host, starting the enumeration process. If no host is present, attaching the device			 *  will allow for enumeration once a host is connected to the device.			 *			 *  This is inexplicably also required for proper operation while in host mode, to enable the			 *  attachment of a device to the host. This is despite the bit being located in the device-mode			 *  register and despite the datasheet making no mention of its requirement in host mode.			 */			#define USB_Attach()                    MACROS{ UDCON  &= ~(1 << DETACH);  }MACROE						#if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__)				/** Constant for the maximum software timeout period of the USB data stream transfer functions				 *  (both control and standard) when in either device or host mode. If the next packet of a stream				 *  is not received or acknowedged within this time period, the stream function will fail.				 *				 *  This value may be overridden in the user project makefile as the value of the 				 *  USB_STREAM_TIMEOUT_MS token, and passed to the compiler using the -D switch.				 */				#define USB_STREAM_TIMEOUT_MS       100			#endif		/* Function Prototypes: */			/** Main function to initialize and start the USB interface. Once active, the USB interface will			 *  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.			 *			 *  Calling this function when the USB interface is already initialized will cause a complete USB			 *  interface reset and re-enumeration.			 *			 *  \param Mode     This is a mask indicating what mode the USB interface is to be initialized to.			 *                  Valid mode masks are USB_MODE_DEVICE, USB_MODE_HOST or USB_MODE_UID.			 *			 *  \param Options  Mask indicating the options which should be used when initializing the USB			 *                  interface to control the USB interface's behaviour. This should be comprised of			 *                  a USB_OPT_REG_* mask to control the regulator, a USB_OPT_*_PLL mask to control the			 *                  PLL, and a USB_DEVICE_OPT_* mask (when the device mode is enabled) to set the device			 *                  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 			 *        via the -D switch. If the mode is statically set, this parameter does not exist in the			 *        function prototype.			 *			 *  \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.			 *        			 *  \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.			 *			 *  \see Device.h for the USB_DEVICE_OPT_* masks.			 */			void USB_Init(			               #if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)			               const uint8_t Mode						   #endif			               #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS)) || defined(__DOXYGEN__)			               ,						   #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))						   void			               #endif						   			               #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)			               const uint8_t Options			               #endif			               );						/** Shuts down the USB interface. This turns off the USB interface after deallocating all USB FIFO			 *  memory, endpoints and pipes. When turned off, no USB functionality can be used until the interface			 *  is restarted with the USB_Init() function.			 */			void USB_ShutDown(void);			/** Resets the interface, when already initialized. This will re-enumerate the device if already connected			 *  to a host, or re-enumerate an already attached device when in host mode.			 */			void USB_ResetInterface(void);		/* Enums: */			/** Enum for error codes relating to the powering on of the USB interface. These error codes are			 *  used in the ErrorCode parameter value of the USB_PowerOnFail event.			 */			enum USB_PowerOnErrorCodes_t			{				POWERON_ERROR_NoUSBModeSpecified       = 0, /**< Indicates that USB_Init() was called with an			                                                 *   invalid or missing Mode parameter.			                                                 */			};		/* Global Variables: */			#if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY)) || defined(__DOXYGEN__)				/** Indicates the mode that the USB interface is currently initialized to. This value will be				 *  one of the USB_MODE_* masks defined elsewhere in this module.				 *				 *  \note This variable should be treated as read-only in the user application, and never manually				 *        changed in value.				 */				extern volatile uint8_t USB_CurrentMode;			#endif						#if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)				extern volatile uint8_t USB_Options;				/** Indicates the current USB options that the USB interface was initialized with when USB_Init()				 *  was called. This value will be one of the USB_MODE_* masks defined elsewhere in this module.				 *				 *  \note This variable should be treated as read-only in the user application, and never manually				 *        changed in value.				 */			#endif		/* Throwable Events: */			/** This module raises the USB_Disconnect event if the USB interface is reset (such as during a mode			 *  change while in UID mode) while the USB interface is connected to a device when in host mode, or			 *  a host while in device mode.			 *			 *  \see Events.h for more information on this event.			 */			RAISES_EVENT(USB_Disconnect);						#if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)				/** This module raises the Power On Failure event when an error occurs while initializing the USB				 *  interface.				 *				 *  \see Events.h for more information on this event.				 */				RAISES_EVENT(USB_PowerOnFail);			#endif				/* Private Interface - For use in library only: */	#if !defined(__DOXYGEN__)		/* Macros: */			#define USB_PLL_On()               MACROS{ PLLCSR   =  USB_PLL_PSC; PLLCSR |= (1 << PLLE); }MACROE			#define USB_PLL_Off()              MACROS{ PLLCSR   =  0;                           }MACROE			#define USB_PLL_IsReady()                ((PLLCSR  &   (1 << PLOCK)) ? true : false)			#if defined(USB_FULL_CONTROLLER) || defined(USB_MODIFIED_FULL_CONTROLLER)						#define USB_REG_On()           MACROS{ UHWCON  |=  (1 << UVREGE);               }MACROE				#define USB_REG_Off()          MACROS{ UHWCON  &= ~(1 << UVREGE);               }MACROE			#else				#define USB_REG_On()           MACROS{ REGCR   &= ~(1 << REGDIS);               }MACROE				#define USB_REG_Off()          MACROS{ REGCR   |=  (1 << REGDIS);               }MACROE						#endif						#define USB_OTGPAD_On()            MACROS{ USBCON  |=  (1 << OTGPADE);              }MACROE			#define USB_OTGPAD_Off()           MACROS{ USBCON  &= ~(1 << OTGPADE);              }MACROE			#define USB_CLK_Freeze()           MACROS{ USBCON  |=  (1 << FRZCLK);               }MACROE			#define USB_CLK_Unfreeze()         MACROS{ USBCON  &= ~(1 << FRZCLK);               }MACROE			#define USB_Interface_Enable()     MACROS{ USBCON  |=  (1 << USBE);                 }MACROE			#define USB_Interface_Disable()    MACROS{ USBCON  &= ~(1 << USBE);                 }MACROE			#define USB_Interface_Reset()      MACROS{ uint8_t Temp = USBCON; USBCON = (Temp & ~(1 << USBE)); \			                                           USBCON = (Temp | (1 << USBE));           }MACROE			/* Inline Functions: */					static inline uint8_t USB_GetUSBModeFromUID(void) ATTR_WARN_UNUSED_RESULT;			static inline uint8_t USB_GetUSBModeFromUID(void)			{				#if (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__))				if (USBSTA & (1 << ID))				  return USB_MODE_DEVICE;				else				  return USB_MODE_HOST;				#else				return USB_MODE_DEVICE;				#endif			}	#endif		/* Disable C linkage for C++ Compilers: */		#if defined(__cplusplus)			}		#endif			#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -