From 6c8ebd70c763790c3550be9b9e8b81aa1e225415 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 13 Sep 2014 16:29:29 +1000 Subject: Fixed broken AVR8 USART-SPI peripheral driver (thanks to Phil Zakielarz). --- BuildTests/ModuleTest/Modules.h | 14 +++++++------- LUFA/DoxygenPages/ChangeLog.txt | 1 + LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h | 28 +++++++++++++++++---------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/BuildTests/ModuleTest/Modules.h b/BuildTests/ModuleTest/Modules.h index a027f8083..cc16fd6b9 100644 --- a/BuildTests/ModuleTest/Modules.h +++ b/BuildTests/ModuleTest/Modules.h @@ -37,20 +37,20 @@ #include #if (ARCH == ARCH_AVR8) - #if defined(TWCR) - #include - #endif - #if defined(ADC) #include #endif #include - #include #include + #include + + #if defined(TWCR) + #include + #endif #elif (ARCH == ARCH_XMEGA) - #include #include - #include #include + #include + #include #endif diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 075fb253b..ef1fe6cce 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -33,6 +33,7 @@ * FLASH memory devices (thanks to demultiplexer) * - Fixed missing parenthesis in the MIDI_EVENT() macro which could cause incorrect results (thanks to hexwab) * - Fixed mixed capitalization of TWI in the XMEGA TWI driver causing compilation failures (thanks to Jacob Schloss) + * - Fixed broken AVR8 USART-SPI peripheral driver (thanks to Phil Zakielarz) * - Library Applications: * - Fixed spurious 0xFE USART byte sent in the USBtoSerial project when the baud rate is changed (thanks to Carl Kjeldsen) * - Fixed blocking USART reads causing low throughput on slow baud rates in the USBtoSerial project (thanks to Nevada Smith) diff --git a/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h index 7afaf1bd4..8d58369a1 100644 --- a/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h +++ b/LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h @@ -52,7 +52,7 @@ * * \code * // Initialize the Master SPI mode USART driver before first use, with 1Mbit baud - * SerialSPI_Init((USART_SPI_SCK_LEAD_RISING | SPI_SAMPLE_LEADING | SPI_ORDER_MSB_FIRST), 1000000); + * SerialSPI_Init((USART_SPI_SCK_LEAD_RISING | USART_SPI_SAMPLE_LEADING | USART_SPI_ORDER_MSB_FIRST), 1000000); * * // Send several bytes, ignoring the returned data * SerialSPI_SendByte(0x01); @@ -90,37 +90,45 @@ #endif /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - #define SERIAL_SPI_UBBRVAL(Baud) ((Baud < (F_CPU / 2)) ? ((F_CPU / (2 * Baud)) - 1) : 0) - #endif + #if !defined(__DOXYGEN__) + #define SERIAL_SPI_UBBRVAL(Baud) ((Baud < (F_CPU / 2)) ? ((F_CPU / (2 * Baud)) - 1) : 0) + + /* Master USART SPI mode flag definitions missing in the AVR8 toolchain */ + #if !defined(UCPHA1) + #define UCPHA1 1 + #endif + #if !defined(UDORD1) + #define UDORD1 2 + #endif + #endif /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI SCK Polarity Configuration Masks */ //@{ /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the rising edge. */ - #define USART_SPI_SCK_LEAD_RISING (0 << UCPOL) + #define USART_SPI_SCK_LEAD_RISING (0 << UCPOL1) /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the falling edge. */ - #define USART_SPI_SCK_LEAD_FALLING (1 << UCPOL) + #define USART_SPI_SCK_LEAD_FALLING (1 << UCPOL1) //@} /** \name SPI Sample Edge Configuration Masks */ //@{ /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should sampled on the leading edge. */ - #define USART_SPI_SAMPLE_LEADING (0 << UPCHA) + #define USART_SPI_SAMPLE_LEADING (0 << UCPHA1) /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should be sampled on the trailing edge. */ - #define USART_SPI_SAMPLE_TRAILING (1 << UPCHA) + #define USART_SPI_SAMPLE_TRAILING (1 << UCPHA1) //@} /** \name SPI Data Ordering Configuration Masks */ //@{ /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out MSB first. */ - #define USART_SPI_ORDER_MSB_FIRST (0 << UDORD) + #define USART_SPI_ORDER_MSB_FIRST (0 << UDORD1) /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out LSB first. */ - #define USART_SPI_ORDER_LSB_FIRST (1 << UDORD) + #define USART_SPI_ORDER_LSB_FIRST (1 << UDORD1) //@} /* Inline Functions: */ -- cgit v1.2.3