Changed over the AVR8 USB controller interrupt management macros to be inlined functions instead, for better compile-time validity checking and to keep the per-architecture source files as uniform as possible.
This commit is contained in:
		
							parent
							
								
									92b3553a07
								
							
						
					
					
						commit
						04526d284d
					
				
					 7 changed files with 317 additions and 96 deletions
				
			
		|  | @ -197,7 +197,7 @@ static void USB_Init_Device(void) | |||
| 	else | ||||
| 	  USB_Device_SetFullSpeed(); | ||||
| 
 | ||||
| 	USB_INT_Enable(USB_INT_VBUS); | ||||
| 	USB_INT_Enable(USB_INT_VBUSTI); | ||||
| 	#endif | ||||
| 
 | ||||
| 	Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL, | ||||
|  |  | |||
|  | @ -84,9 +84,9 @@ ISR(USB_GEN_vect, ISR_BLOCK) | |||
| 	#endif | ||||
| 
 | ||||
| 	#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) | ||||
| 	if (USB_INT_HasOccurred(USB_INT_VBUS) && USB_INT_IsEnabled(USB_INT_VBUS)) | ||||
| 	if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI)) | ||||
| 	{ | ||||
| 		USB_INT_Clear(USB_INT_VBUS); | ||||
| 		USB_INT_Clear(USB_INT_VBUSTI); | ||||
| 
 | ||||
| 		if (USB_VBUS_GetStatus()) | ||||
| 		{ | ||||
|  |  | |||
|  | @ -56,32 +56,252 @@ | |||
| 
 | ||||
| 	/* Private Interface - For use in library only: */ | ||||
| 	#if !defined(__DOXYGEN__) | ||||
| 		/* Macros: */ | ||||
| 			#define USB_INT_Enable(int)       MACROS{ USB_INT_GET_EN_REG(int)   |=   USB_INT_GET_EN_MASK(int);   }MACROE | ||||
| 			#define USB_INT_Disable(int)      MACROS{ USB_INT_GET_EN_REG(int)   &= ~(USB_INT_GET_EN_MASK(int));  }MACROE | ||||
| 			#define USB_INT_Clear(int)        MACROS{ USB_INT_GET_INT_REG(int)  &= ~(USB_INT_GET_INT_MASK(int)); }MACROE | ||||
| 			#define USB_INT_IsEnabled(int)          ((USB_INT_GET_EN_REG(int)   &    USB_INT_GET_EN_MASK(int))  ? true : false) | ||||
| 			#define USB_INT_HasOccurred(int)        ((USB_INT_GET_INT_REG(int)  &    USB_INT_GET_INT_MASK(int)) ? true : false) | ||||
| 		/* Enums: */ | ||||
| 			enum USB_Interrupts_t | ||||
| 			{ | ||||
| 				USB_INT_VBUSTI  = 0, | ||||
| 				USB_INT_IDTI    = 1, | ||||
| 				USB_INT_WAKEUPI = 2, | ||||
| 				USB_INT_SUSPI   = 3, | ||||
| 				USB_INT_EORSTI  = 4, | ||||
| 				USB_INT_SOFI    = 5, | ||||
| 				USB_INT_HSOFI   = 6, | ||||
| 				USB_INT_DCONNI  = 7, | ||||
| 				USB_INT_DDISCI  = 8, | ||||
| 				USB_INT_RSTI    = 9, | ||||
| 				USB_INT_BCERRI  = 10, | ||||
| 				USB_INT_VBERRI  = 11, | ||||
| 				USB_INT_SRPI    = 12, | ||||
| 				USB_INT_RXSTPI  = 13, | ||||
| 			}; | ||||
| 
 | ||||
| 			#define USB_INT_GET_EN_REG(EnableReg, EnableMask, FlagReg, FlagMask)    EnableReg | ||||
| 			#define USB_INT_GET_EN_MASK(EnableReg, EnableMask, FlagReg, FlagMask)   EnableMask | ||||
| 			#define USB_INT_GET_INT_REG(EnableReg, EnableMask, FlagReg, FlagMask)   FlagReg | ||||
| 			#define USB_INT_GET_INT_MASK(EnableReg, EnableMask, FlagReg, FlagMask)  FlagMask | ||||
| 		/* Inline Functions: */ | ||||
| 			static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE; | ||||
| 			static inline void USB_INT_Enable(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						USBCON |= (1 << VBUSTE); | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
| 						USBCON |= (1 << IDTE); | ||||
| 						break; | ||||
| 					case USB_INT_WAKEUPI: | ||||
| 						UDIEN  |= (1 << WAKEUPE); | ||||
| 						break; | ||||
| 					case USB_INT_SUSPI: | ||||
| 						UDIEN  |= (1 << SUSPE); | ||||
| 						break; | ||||
| 					case USB_INT_EORSTI: | ||||
| 						UDIEN  |= (1 << EORSTE); | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						UDIEN  |= (1 << SOFE); | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						UHIEN  |= (1 << HSOFE); | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						UHIEN  |= (1 << DCONNE); | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						UHIEN  |= (1 << DDISCE); | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						UHIEN  |= (1 << RSTE); | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						OTGIEN |= (1 << BCERRE); | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						OTGIEN |= (1 << VBERRE); | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 						OTGIEN |= (1 << SRPE);						 | ||||
| 						break; | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						UEIENX |= (1 << RXSTPE); | ||||
| 						break; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			static inline void USB_INT_Disable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE; | ||||
| 			static inline void USB_INT_Disable(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						USBCON &= ~(1 << VBUSTE); | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
| 						USBCON &= ~(1 << IDTE); | ||||
| 						break; | ||||
| 					case USB_INT_WAKEUPI: | ||||
| 						UDIEN  &= ~(1 << WAKEUPE); | ||||
| 						break; | ||||
| 					case USB_INT_SUSPI: | ||||
| 						UDIEN  &= ~(1 << SUSPE); | ||||
| 						break; | ||||
| 					case USB_INT_EORSTI: | ||||
| 						UDIEN  &= ~(1 << EORSTE); | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						UDIEN  &= ~(1 << SOFE); | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						UHIEN  &= ~(1 << HSOFE); | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						UHIEN  &= ~(1 << DCONNE); | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						UHIEN  &= ~(1 << DDISCE); | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						UHIEN  &= ~(1 << RSTE); | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						OTGIEN &= ~(1 << BCERRE); | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						OTGIEN &= ~(1 << VBERRE); | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 						OTGIEN &= ~(1 << SRPE);						 | ||||
| 						break; | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						UEIENX &= ~(1 << RXSTPE); | ||||
| 						break; | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 			#define USB_INT_VBUS     USBCON, (1 << VBUSTE) , USBINT, (1 << VBUSTI) | ||||
| 			#define USB_INT_IDTI     USBCON, (1 << IDTE)   , USBINT, (1 << IDTI) | ||||
| 			#define USB_INT_WAKEUPI  UDIEN , (1 << WAKEUPE), UDINT , (1 << WAKEUPI) | ||||
| 			#define USB_INT_SUSPI    UDIEN , (1 << SUSPE)  , UDINT , (1 << SUSPI) | ||||
| 			#define USB_INT_EORSTI   UDIEN , (1 << EORSTE) , UDINT , (1 << EORSTI) | ||||
| 			#define USB_INT_DCONNI   UHIEN , (1 << DCONNE) , UHINT , (1 << DCONNI) | ||||
| 			#define USB_INT_DDISCI   UHIEN , (1 << DDISCE) , UHINT , (1 << DDISCI) | ||||
| 			#define USB_INT_BCERRI   OTGIEN, (1 << BCERRE) , OTGINT, (1 << BCERRI) | ||||
| 			#define USB_INT_VBERRI   OTGIEN, (1 << VBERRE) , OTGINT, (1 << VBERRI) | ||||
| 			#define USB_INT_SOFI     UDIEN,  (1 << SOFE)   , UDINT , (1 << SOFI) | ||||
| 			#define USB_INT_HSOFI    UHIEN,  (1 << HSOFE)  , UHINT , (1 << HSOFI) | ||||
| 			#define USB_INT_RSTI     UHIEN , (1 << RSTE)   , UHINT , (1 << RSTI) | ||||
| 			#define USB_INT_SRPI     OTGIEN, (1 << SRPE)   , OTGINT, (1 << SRPI) | ||||
| 			#define USB_INT_RXSTPI   UEIENX, (1 << RXSTPE) , UEINTX, (1 << RXSTPI) | ||||
| 			static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE; | ||||
| 			static inline void USB_INT_Clear(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						USBINT &= ~(1 << VBUSTI); | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
| 						USBINT &= ~(1 << IDTI); | ||||
| 						break; | ||||
| 					case USB_INT_WAKEUPI: | ||||
| 						UDINT  &= ~(1 << WAKEUPI); | ||||
| 						break; | ||||
| 					case USB_INT_SUSPI: | ||||
| 						UDINT  &= ~(1 << SUSPI); | ||||
| 						break; | ||||
| 					case USB_INT_EORSTI: | ||||
| 						UDINT  &= ~(1 << EORSTI); | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						UDINT  &= ~(1 << SOFI); | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						UHINT  &= ~(1 << HSOFI); | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						UHINT  &= ~(1 << DCONNI); | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						UHINT  &= ~(1 << DDISCI); | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						UHINT  &= ~(1 << RSTI); | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						OTGINT &= ~(1 << BCERRI); | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						OTGINT &= ~(1 << VBERRI); | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 						OTGINT &= ~(1 << SRPI); | ||||
| 						break; | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						UEINTX &= ~(1 << RXSTPI); | ||||
| 						break; | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 			static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; | ||||
| 			static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						return (USBCON & (1 << VBUSTE)); | ||||
| 					case USB_INT_IDTI: | ||||
| 						return (USBCON & (1 << IDTE)); | ||||
| 					case USB_INT_WAKEUPI: | ||||
| 						return (UDIEN  & (1 << WAKEUPE)); | ||||
| 					case USB_INT_SUSPI: | ||||
| 						return (UDIEN  & (1 << SUSPE)); | ||||
| 					case USB_INT_EORSTI: | ||||
| 						return (UDIEN  & (1 << EORSTE)); | ||||
| 					case USB_INT_SOFI: | ||||
| 						return (UDIEN  & (1 << SOFE)); | ||||
| 					case USB_INT_HSOFI: | ||||
| 						return (UHIEN  & (1 << HSOFE)); | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return (UHIEN  & (1 << DCONNE)); | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return (UHIEN  & (1 << DDISCE)); | ||||
| 					case USB_INT_RSTI: | ||||
| 						return (UHIEN  & (1 << RSTE)); | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return (OTGIEN & (1 << BCERRE)); | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return (OTGIEN & (1 << VBERRE)); | ||||
| 					case USB_INT_SRPI: | ||||
| 						return (OTGIEN & (1 << SRPE)); | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						return (UEIENX & (1 << RXSTPE)); | ||||
| 						break; | ||||
| 				} | ||||
| 				 | ||||
| 				return false; | ||||
| 			} | ||||
| 		 | ||||
| 			static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; | ||||
| 			static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						return (USBINT & (1 << VBUSTI)); | ||||
| 					case USB_INT_IDTI: | ||||
| 						return (USBINT & (1 << IDTI)); | ||||
| 					case USB_INT_WAKEUPI: | ||||
| 						return (UDINT  & (1 << WAKEUPI)); | ||||
| 					case USB_INT_SUSPI: | ||||
| 						return (UDINT  & (1 << SUSPI)); | ||||
| 					case USB_INT_EORSTI: | ||||
| 						return (UDINT  & (1 << EORSTI)); | ||||
| 					case USB_INT_SOFI: | ||||
| 						return (UDINT  & (1 << SOFI)); | ||||
| 					case USB_INT_HSOFI: | ||||
| 						return (UHINT  & (1 << HSOFI)); | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return (UHINT  & (1 << DCONNI)); | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return (UHINT  & (1 << DDISCI)); | ||||
| 					case USB_INT_RSTI: | ||||
| 						return (UHINT  & (1 << RSTI)); | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return (OTGINT & (1 << BCERRI)); | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return (OTGINT & (1 << VBERRI)); | ||||
| 					case USB_INT_SRPI: | ||||
| 						return (OTGINT & (1 << SRPI)); | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						return (UEINTX & (1 << RXSTPI)); | ||||
| 				} | ||||
| 
 | ||||
| 				return false; | ||||
| 			} | ||||
| 
 | ||||
| 		/* Includes: */ | ||||
| 			#include "../USBMode.h" | ||||
|  |  | |||
|  | @ -160,7 +160,7 @@ static void USB_Init_Device(void) | |||
| 	else | ||||
| 	  USB_Device_SetFullSpeed(); | ||||
| 
 | ||||
| 	USB_INT_Enable(USB_INT_VBUS); | ||||
| 	USB_INT_Enable(USB_INT_VBUSTI); | ||||
| 
 | ||||
| 	Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL, | ||||
| 							   ENDPOINT_DIR_OUT, USB_ControlEndpointSize, | ||||
|  |  | |||
|  | @ -61,9 +61,9 @@ ISR(USB_GEN_vect) | |||
| 	} | ||||
| 	#endif | ||||
| 
 | ||||
| 	if (USB_INT_HasOccurred(USB_INT_VBUS) && USB_INT_IsEnabled(USB_INT_VBUS)) | ||||
| 	if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI)) | ||||
| 	{ | ||||
| 		USB_INT_Clear(USB_INT_VBUS); | ||||
| 		USB_INT_Clear(USB_INT_VBUSTI); | ||||
| 
 | ||||
| 		if (USB_VBUS_GetStatus()) | ||||
| 		{ | ||||
|  |  | |||
|  | @ -59,28 +59,29 @@ | |||
| 		/* Macros: */ | ||||
| 			enum USB_Interrupts_t | ||||
| 			{ | ||||
| 				USB_INT_VBUS    = 0, | ||||
| 				USB_INT_VBUSTI  = 0, | ||||
| 				USB_INT_IDTI    = 1, | ||||
| 				USB_INT_WAKEUPI = 2, | ||||
| 				USB_INT_SUSPI   = 3, | ||||
| 				USB_INT_EORSTI  = 4, | ||||
| 				USB_INT_DCONNI  = 5, | ||||
| 				USB_INT_DDISCI  = 6, | ||||
| 				USB_INT_BCERRI  = 7, | ||||
| 				USB_INT_VBERRI  = 8, | ||||
| 				USB_INT_SOFI    = 9, | ||||
| 				USB_INT_HSOFI   = 10, | ||||
| 				USB_INT_RSTI    = 11, | ||||
| 				USB_INT_SOFI    = 5, | ||||
| 				USB_INT_HSOFI   = 6, | ||||
| 				USB_INT_DCONNI  = 7, | ||||
| 				USB_INT_DDISCI  = 8, | ||||
| 				USB_INT_RSTI    = 9, | ||||
| 				USB_INT_BCERRI  = 10, | ||||
| 				USB_INT_VBERRI  = 11, | ||||
| 				USB_INT_SRPI    = 12, | ||||
| 				USB_INT_RXSTPI  = 13, | ||||
| 			}; | ||||
| 			 | ||||
| 		/* Inline Functions: */ | ||||
| 			static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE; | ||||
| 			static inline void USB_INT_Enable(const uint8_t Interrupt) | ||||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUS: | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						AVR32_USBB.USBCON.vbuste      = true; | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
|  | @ -95,27 +96,27 @@ | |||
| 					case USB_INT_EORSTI: | ||||
| 						AVR32_USBB.UDINTESET.eorstes  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTESET.dconnies = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTESET.ddiscies = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBCON.bcerre      = true; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBCON.vberre      = true; | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						AVR32_USBB.UDINTESET.sofes    = true; | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						AVR32_USBB.UHINTESET.hsofies  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTESET.dconnies = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTESET.ddiscies = true; | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						AVR32_USBB.UHINTESET.rsties   = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBCON.bcerre      = true; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBCON.vberre      = true; | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						// TODO
 | ||||
|  | @ -128,7 +129,7 @@ | |||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUS: | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						AVR32_USBB.USBCON.vbuste      = false; | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
|  | @ -143,27 +144,27 @@ | |||
| 					case USB_INT_EORSTI: | ||||
| 						AVR32_USBB.UDINTECLR.eorstec  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTECLR.dconniec = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTECLR.ddisciec = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBCON.bcerre      = false; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBCON.vberre      = false; | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						AVR32_USBB.UDINTECLR.sofec    = true; | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						AVR32_USBB.UHINTECLR.hsofiec  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTECLR.dconniec = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTECLR.ddisciec = true; | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						AVR32_USBB.UHINTECLR.rstiec   = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBCON.bcerre      = false; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBCON.vberre      = false; | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						// TODO
 | ||||
|  | @ -176,7 +177,7 @@ | |||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUS: | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						AVR32_USBB.USBSTACLR.vbustic = true; | ||||
| 						break; | ||||
| 					case USB_INT_IDTI: | ||||
|  | @ -191,27 +192,27 @@ | |||
| 					case USB_INT_EORSTI: | ||||
| 						AVR32_USBB.UDINTCLR.eorstc   = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTCLR.dconnic  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTCLR.ddiscic  = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBSTACLR.bcerric = true; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBSTACLR.vberric = true; | ||||
| 						break; | ||||
| 					case USB_INT_SOFI: | ||||
| 						AVR32_USBB.UDINTCLR.sofc     = true; | ||||
| 						break; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						AVR32_USBB.UHINTCLR.hsofic   = true; | ||||
| 						break; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						AVR32_USBB.UHINTCLR.dconnic  = true; | ||||
| 						break; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						AVR32_USBB.UHINTCLR.ddiscic  = true; | ||||
| 						break; | ||||
| 					case USB_INT_RSTI: | ||||
| 						AVR32_USBB.UHINTCLR.rstic    = true; | ||||
| 						break; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						AVR32_USBB.USBSTACLR.bcerric = true; | ||||
| 						break; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						AVR32_USBB.USBSTACLR.vberric = true; | ||||
| 						break; | ||||
| 					case USB_INT_SRPI: | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						// TODO
 | ||||
|  | @ -224,7 +225,7 @@ | |||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUS: | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						return AVR32_USBB.USBCON.vbuste; | ||||
| 					case USB_INT_IDTI: | ||||
| 						return AVR32_USBB.USBCON.idte; | ||||
|  | @ -234,20 +235,20 @@ | |||
| 						return AVR32_USBB.UDINTE.suspe; | ||||
| 					case USB_INT_EORSTI: | ||||
| 						return AVR32_USBB.UDINTE.eorste; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return AVR32_USBB.UHINTE.dconnie; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return AVR32_USBB.UHINTE.ddiscie; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return AVR32_USBB.USBCON.bcerre; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return AVR32_USBB.USBCON.vberre; | ||||
| 					case USB_INT_SOFI: | ||||
| 						return AVR32_USBB.UDINTE.sofe; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						return AVR32_USBB.UHINTE.hsofie; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return AVR32_USBB.UHINTE.dconnie; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return AVR32_USBB.UHINTE.ddiscie; | ||||
| 					case USB_INT_RSTI: | ||||
| 						return AVR32_USBB.UHINTE.rstie; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return AVR32_USBB.USBCON.bcerre; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return AVR32_USBB.USBCON.vberre; | ||||
| 					case USB_INT_SRPI: | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						// TODO
 | ||||
|  | @ -262,7 +263,7 @@ | |||
| 			{ | ||||
| 				switch (Interrupt) | ||||
| 				{ | ||||
| 					case USB_INT_VBUS: | ||||
| 					case USB_INT_VBUSTI: | ||||
| 						return AVR32_USBB.USBSTA.vbusti; | ||||
| 					case USB_INT_IDTI: | ||||
| 						return AVR32_USBB.USBSTA.idti; | ||||
|  | @ -272,20 +273,20 @@ | |||
| 						return AVR32_USBB.UDINT.susp; | ||||
| 					case USB_INT_EORSTI: | ||||
| 						return AVR32_USBB.UDINT.eorst; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return AVR32_USBB.UHINT.dconni; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return AVR32_USBB.UHINT.ddisci; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return AVR32_USBB.USBSTA.bcerri; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return AVR32_USBB.USBSTA.vberri; | ||||
| 					case USB_INT_SOFI: | ||||
| 						return AVR32_USBB.UDINT.sof; | ||||
| 					case USB_INT_HSOFI: | ||||
| 						return AVR32_USBB.UHINT.hsofi; | ||||
| 					case USB_INT_DCONNI: | ||||
| 						return AVR32_USBB.UHINT.dconni; | ||||
| 					case USB_INT_DDISCI: | ||||
| 						return AVR32_USBB.UHINT.ddisci; | ||||
| 					case USB_INT_RSTI: | ||||
| 						return AVR32_USBB.UHINT.rsti; | ||||
| 					case USB_INT_BCERRI: | ||||
| 						return AVR32_USBB.USBSTA.bcerri; | ||||
| 					case USB_INT_VBERRI: | ||||
| 						return AVR32_USBB.USBSTA.vberri; | ||||
| 					case USB_INT_SRPI: | ||||
| 					case USB_INT_RXSTPI: | ||||
| 						// TODO
 | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ | |||
|  *    into difficulties or need some advice. In addition, you can also email the library author to receive personalized | ||||
|  *    support when you need it (subject to author's schedule). | ||||
|  * | ||||
|  *   <small>* Atmel Stack Mouse Device Demo 4218 bytes, LUFA Mouse Low Level Device Demo 3472 bytes, under identical build | ||||
|  *   <small>* Atmel Stack Mouse Device Demo 4218 bytes, LUFA Mouse Low Level Device Demo 3526 bytes, under identical build | ||||
|  *   environments</small> | ||||
|  */ | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dean Camera
						Dean Camera