aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2014-09-13 16:29:29 +1000
committerDean Camera <dean@fourwalledcubicle.com>2014-09-13 16:29:29 +1000
commit6c8ebd70c763790c3550be9b9e8b81aa1e225415 (patch)
tree0f680e5186e6112d7efb9a4265e86106af443b8a
parent025e57bd7246128636bda9760b654cc5f0d10a58 (diff)
downloadlufa-6c8ebd70c763790c3550be9b9e8b81aa1e225415.tar.gz
lufa-6c8ebd70c763790c3550be9b9e8b81aa1e225415.tar.bz2
lufa-6c8ebd70c763790c3550be9b9e8b81aa1e225415.zip
Fixed broken AVR8 USART-SPI peripheral driver (thanks to Phil Zakielarz).
-rw-r--r--BuildTests/ModuleTest/Modules.h14
-rw-r--r--LUFA/DoxygenPages/ChangeLog.txt1
-rw-r--r--LUFA/Drivers/Peripheral/AVR8/SerialSPI_AVR8.h28
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 <LUFA/Drivers/Misc/TerminalCodes.h>
#if (ARCH == ARCH_AVR8)
- #if defined(TWCR)
- #include <LUFA/Drivers/Peripheral/TWI.h>
- #endif
-
#if defined(ADC)
#include <LUFA/Drivers/Peripheral/ADC.h>
#endif
#include <LUFA/Drivers/Peripheral/Serial.h>
- #include <LUFA/Drivers/Peripheral/SPI.h>
#include <LUFA/Drivers/Peripheral/SerialSPI.h>
+ #include <LUFA/Drivers/Peripheral/SPI.h>
+
+ #if defined(TWCR)
+ #include <LUFA/Drivers/Peripheral/TWI.h>
+ #endif
#elif (ARCH == ARCH_XMEGA)
- #include <LUFA/Drivers/Peripheral/TWI.h>
#include <LUFA/Drivers/Peripheral/Serial.h>
- #include <LUFA/Drivers/Peripheral/SPI.h>
#include <LUFA/Drivers/Peripheral/SerialSPI.h>
+ #include <LUFA/Drivers/Peripheral/SPI.h>
+ #include <LUFA/Drivers/Peripheral/TWI.h>
#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: */