Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size.

Fixed Programmer's Notepad project file to reflect new location of AVRISP project.
pull/1469/head
Dean Camera 16 years ago
parent 17d06b8494
commit f547eb3608

File diff suppressed because one or more lines are too long

@ -511,12 +511,16 @@
static inline uint16_t Endpoint_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Endpoint_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_Word_LE(void) static inline uint16_t Endpoint_Read_Word_LE(void)
{ {
uint16_t Data; union
{
uint16_t Word;
uint8_t Bytes[2];
} Data;
Data = UEDATX; Data.Bytes[0] = UEDATX;
Data |= (((uint16_t)UEDATX) << 8); Data.Bytes[1] = UEDATX;
return Data; return Data.Word;
} }
/** 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
@ -529,12 +533,16 @@
static inline uint16_t Endpoint_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Endpoint_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Endpoint_Read_Word_BE(void) static inline uint16_t Endpoint_Read_Word_BE(void)
{ {
uint16_t Data; union
{
uint16_t Word;
uint8_t Bytes[2];
} Data;
Data = (((uint16_t)UEDATX) << 8); Data.Bytes[1] = UEDATX;
Data |= UEDATX; Data.Bytes[0] = UEDATX;
return Data; return Data.Word;
} }
/** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN /** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN

@ -566,12 +566,16 @@
static inline uint16_t Pipe_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Pipe_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Pipe_Read_Word_LE(void) static inline uint16_t Pipe_Read_Word_LE(void)
{ {
uint16_t Data; union
{
uint16_t Word;
uint8_t Bytes[2];
} Data;
Data = UPDATX; Data.Bytes[0] = UPDATX;
Data |= (((uint16_t)UPDATX) << 8); Data.Bytes[1] = UPDATX;
return Data; return Data.Word;
} }
/** 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
@ -584,12 +588,16 @@
static inline uint16_t Pipe_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint16_t Pipe_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint16_t Pipe_Read_Word_BE(void) static inline uint16_t Pipe_Read_Word_BE(void)
{ {
uint16_t Data; union
{
uint16_t Word;
uint8_t Bytes[2];
} Data;
Data = (((uint16_t)UPDATX) << 8); Data.Bytes[1] = UPDATX;
Data |= UPDATX; Data.Bytes[0] = UPDATX;
return Data; return Data.Word;
} }
/** Writes two bytes to the currently selected pipe's bank in little endian format, for IN /** Writes two bytes to the currently selected pipe's bank in little endian format, for IN

@ -24,6 +24,7 @@
* - Added explicit attribute masks to the device mode demos' descriptors * - Added explicit attribute masks to the device mode demos' descriptors
* - Added return values to the CDC and MIDI class driver transmit functions * - Added return values to the CDC and MIDI class driver transmit functions
* - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set * - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set
* - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size
* *
* <b>Fixed:</b> * <b>Fixed:</b>
* - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the * - Fixed possible lockup in the CDC device class driver, when the host sends data that is a multiple of the

@ -84,7 +84,7 @@ void SetupHardware(void)
ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC); ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC);
#endif #endif
/* Millisecond timer initialization for timeout checking */ /* Millisecond timer initialization for timeouts and delays */
OCR0A = ((F_CPU / 64) / 1000); OCR0A = ((F_CPU / 64) / 1000);
TCCR0A = (1 << WGM01); TCCR0A = (1 << WGM01);
TCCR0B = ((1 << CS01) | (1 << CS00)); TCCR0B = ((1 << CS01) | (1 << CS00));

Loading…
Cancel
Save