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

📄 at90usb1287.h

📁 usbport-sl811usb主控器芯片usb程序实现
💻 H
字号:
// AT90USB/usb_drv.h// Macros for access to USB registers of Atmels AT90USB microcontrollers// This file contains low level register stuff as described in// Atmels AT90USB datasheet 7593D-AVR-07/06// S. Salewski 21-MAR-2007// B. Sauter (modified for usb host stack) 2007// A few macros for bit fiddling#define SetBit(adr, bit)                        (adr |=  (1<<bit))#define ClearBit(adr, bit)                      (adr &= ~(1<<bit))#define BitIsSet(adr, bit)                      (adr & (1<<bit))#define BitIsClear(adr, bit)                    (!(adr & (1<<bit)))// PLL clock for USB interface, section 6.11, page 50// PLLCSR (PLL Control and Status Register)// set PLL prescaler according to XTAL crystal frequency//#define UsbXTALFrequencyIs2MHz()              PLLCSR = (PLLCSR & ~(15<<1))//#define UsbXTALFrequencyIs4MHz()              PLLCSR = (PLLCSR & ~(15<<1)) | (1<<2)//#define UsbXTALFrequencyIs6MHz()              PLLCSR = (PLLCSR & ~(15<<1)) | (2<<2)//#define UsbXTALFrequencyIs8MHz()              PLLCSR = (PLLCSR & ~(15<<1)) | (3<<2)//#define UsbXTALFrequencyIs12MHz()             PLLCSR = (PLLCSR & ~(15<<1)) | (4<<2)//#define UsbXTALFrequencyIs16MHz()             PLLCSR = (PLLCSR & ~(15<<1)) | (5<<2)#if (F_CPU == 2000000)#define _pre_ 0#elif (F_CPU == 4000000)#define _pre_ 1#elif (F_CPU == 6000000)#define _pre_ 2#elif (F_CPU == 8000000)#define _pre_ 3#elif (F_CPU == 12000000)#define _pre_ 4#elif (F_CPU == 16000000)#define _pre_ 5#else  #error "XTAL-Frequency has to be 2, 4, 6, 8, 12 or 16 MHz for USB devices!"#endif#define UsbSetPLL_CPU_Frequency()              PLLCSR = (_pre_<<2)#define UsbEnablePLL()                          SetBit(PLLCSR, PLLE)#define UsbDisablePLL()                         ClearBit(PLLCSR, PLLE)#define UsbIsPLL_Locked()                       BitIsSet(PLLCSR, PLOCK)#define UsbWaitPLL_Locked()                     while (!(PLLCSR & (1<<PLOCK)));#define UsbEnableClock()                        ClearBit(USBCON, FRZCLK)//USB general registers, section 21.12.1, page 263 of datasheet// UHWCON (UsbHardWareCONfiguration)#define UsbSetDeviceMode()                SetBit(UHWCON, UIMOD)           // select host or device mode manually#define UsbSetHostMode()                  ClearBit(UHWCON, UIMOD)#define UsbEnableUID_ModeSelection()      SetBit(UHWCON, UIDE)            // enable mode selection by UID pin#define UsbDisableUID_ModeSelection()     ClearBit(UHWCON, UIDE)#define UsbEnableUVCON_PinControl()       SetBit(UHWCON, UVCONE)          // enable UVCON pin control, figure 21-7#define UsbDisableUVCON_PinControl()      ClearBit(UHWCON, UVCONE)#define UsbEnablePadsRegulator()          SetBit(UHWCON, UVREGE)          // USB pads (D+, D-) supply#define UsbDisablePadsRegulator()         ClearBit(UHWCON, UVREGE)// USBCON (USB CONfiguration)#define UsbEnableController()             SetBit(USBCON, USBE)            // USB controller enable#define UsbDisableController()            ClearBit(USBCON, USBE)          // reset and disable controller#define UsbIsControllerEnabled()          BitIsSet(USBCON, USBE)#define UsbSetHostModeReg()               SetBit(USBCON, HOST)            // select multiplexed controller registers#define UsbSetDeviceModeReg()             ClearBit(USBCON, HOST)          //#define UsbFreezeClock()                  SetBit(USBCON, FRZCLK)          // reduce power consumption#define UsbEnableClock()                  ClearBit(USBCON, FRZCLK)#define UsbIsClockFreezed()               BitIsSet(USBCON, FRZCLK)#define UsbEnableOTG_Pad()                SetBit(USBCON, OTGPADE)         // ??? is this the UID pad?#define UsbDisableOTG_Pad()               ClearBit(USBCON, OTGPADE)#define UsbEnableID_TransitionInt()       SetBit(USBCON, IDTE)            // enable ID transition interrupt generation#define UsbDisableID_TransitionInt()      ClearBit(USBCON, IDTE)#define UsbEnableVBUS_TransitionInt()     SetBit(USBCON, VBUSTE)          // enable VBUS transition interrupt#define UsbDisableVBUS_TransitionInt()    ClearBit(USBCON, VBUSTE)// USBSTA (USBSTAtus, read only)#define UsbIsFullSpeedMode()              BitIsSet(USBSTA, SPEED)         // set by hardware if controller is in fullspeed mode,#define UsbIsLowSpeedMode()               BitIsClear(USBSTA, SPEED)       // use in host mode only, indeterminate in device mode#define UsbIsUID_PinHigh()		  BitIsSet(USBSTA, ID)            // query UID pad/pin#define UsbIsVBUS_PinHigh()		  BitIsSet(USBSTA, VBUS)          // query VBUS pad/pin// USBINT (USBINTerrupt)#define UsbIsIDTI_FlagSet()		  BitIsSet(USBINT, IDTI)          // set by hardware if ID pin transition detected#define UsbClearIDTI_Flag()		  ClearBit(USBINT, IDTI)          // shall be cleared by software#define UsbIsVBUSTI_FlagSet()		  BitIsSet(USBINT, VBUSTI)        // set by hardware if transition on VBUS pad is detected#define UsbClearVBUSTI_Flag()		  ClearBit(USBINT, VBUSTI)        // shall be cleared by software

⌨️ 快捷键说明

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