Update XMEGA platform clock management example code to suit the currently released silicon.

Cleanups to the UC3 endpoint/pipe multi byte read code.
pull/1469/head
Dean Camera 13 years ago
parent e9029d49d5
commit bc14c1a7f6

@ -668,10 +668,10 @@
static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Endpoint_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_16_LE(void) static inline uint16_t Endpoint_Read_16_LE(void)
{ {
uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++); uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
return ((Byte0 << 8) | Byte1); return ((Byte1 << 8) | Byte0);
} }
/** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT /** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT
@ -743,12 +743,12 @@
static inline uint32_t Endpoint_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint32_t Endpoint_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint32_t Endpoint_Read_32_LE(void) static inline uint32_t Endpoint_Read_32_LE(void)
{ {
uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++); uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);
return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3); return ((Byte3 << 24) | (Byte2 << 16) | (Byte1 << 8) | Byte0);
} }
/** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT /** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT

@ -662,10 +662,10 @@
static inline uint16_t Pipe_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Pipe_Read_16_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Pipe_Read_16_LE(void) static inline uint16_t Pipe_Read_16_LE(void)
{ {
uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++); uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
return ((Byte0 << 8) | Byte1); return ((Byte1 << 8) | Byte0);
} }
/** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT /** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT
@ -737,12 +737,12 @@
static inline uint32_t Pipe_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint32_t Pipe_Read_32_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint32_t Pipe_Read_32_LE(void) static inline uint32_t Pipe_Read_32_LE(void)
{ {
uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++); uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);
return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3); return ((Byte3 << 24) | (Byte2 << 16) | (Byte1 << 8) | Byte0);
} }
/** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT /** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT

@ -49,18 +49,18 @@
* *
* Usage Example: * Usage Example:
* \code * \code
* #include <LUFA/Platform/XMEGA/ClockManagement.h> * #include <LUFA/Platform/XMEGA/ClockManagement.h>
* *
* void main(void) * void main(void)
* { * {
* // Start the internal 32MHz RC oscillator and switch the CPU core to run from it * // Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it
* XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ); * XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, 32000000);
* XMEGACLK_SetCPUClockSource(CLOCK_SRC_INT_RC32MHZ, F_CPU); * XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL, F_CPU);
* *
* // Start the external oscillator and multiply up the frequency * // Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference
* XMEGACLK_StartExternalOscillator(EXOSC_FREQ_9MHZ_MAX, EXOSC_START_1KCLK); * XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
* XMEGACLK_StartPLL(CLOCK_SRC_XOSC, 8000000, F_USB); * XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, 48000000);
* } * }
* \endcode * \endcode
* *
* @{ * @{

Loading…
Cancel
Save