X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/09d2be0dc1630b2ae2403d555c0360f1c4379322..03cdb09071c5c9ed9dd0f851a0980d360a4492d0:/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h diff --git a/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h b/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h index 7d1e6c1f3..7042e9c7b 100644 --- a/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h +++ b/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2012. + Copyright (C) Dean Camera, 2013. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -18,7 +18,7 @@ advertising or publicity pertaining to distribution of the software without specific, written prior permission. - The author disclaim all warranties with regard to this + The author disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the author be liable for any special, indirect or consequential damages or any damages @@ -29,7 +29,7 @@ */ /** \file - * \brief Serial USART Master SPI Mode Peripheral Driver (XMEGA) + * \brief Master SPI Mode Serial USART Peripheral Driver (XMEGA) * * On-chip Master SPI mode USART driver for the XMEGA AVR microcontrollers. * @@ -38,7 +38,7 @@ */ /** \ingroup Group_SerialSPI - * \defgroup Group_SerialSPI_XMEGA Serial USART Peripheral Driver (XMEGA) + * \defgroup Group_SerialSPI_XMEGA Master SPI Mode Serial USART Peripheral Driver (XMEGA) * * \section Sec_ModDescription Module Description * On-chip serial USART driver for the XMEGA AVR microcontrollers. @@ -52,20 +52,20 @@ * * \code * // Initialize the Master SPI mode USART driver before first use, with 1Mbit baud - * SerialSPI_Init(&USARTD, (USART_SPI_SCK_LEAD_RISING | SPI_SAMPLE_LEADING | SPI_ORDER_MSB_FIRST), 1000000); - * + * SerialSPI_Init(&USARTD0, (USART_SPI_SCK_LEAD_RISING | USART_SPI_SAMPLE_LEADING | USART_SPI_ORDER_MSB_FIRST), 1000000); + * * // Send several bytes, ignoring the returned data - * SerialSPI_SendByte(&USARTD, 0x01); - * SerialSPI_SendByte(&USARTD, 0x02); - * SerialSPI_SendByte(&USARTD, 0x03); - * + * SerialSPI_SendByte(&USARTD0, 0x01); + * SerialSPI_SendByte(&USARTD0, 0x02); + * SerialSPI_SendByte(&USARTD0, 0x03); + * * // Receive several bytes, sending a dummy 0x00 byte each time * uint8_t Byte1 = SerialSPI_ReceiveByte(&USARTD); * uint8_t Byte2 = SerialSPI_ReceiveByte(&USARTD); * uint8_t Byte3 = SerialSPI_ReceiveByte(&USARTD); - * + * * // Send a byte, and store the received byte from the same transaction - * uint8_t ResponseByte = SerialSPI_TransferByte(&USARTD, 0xDC); + * uint8_t ResponseByte = SerialSPI_TransferByte(&USARTD0, 0xDC); * \endcode * * @{ @@ -98,25 +98,25 @@ /* Macros: */ /** \name SPI SCK Polarity Configuration Masks */ //@{ - /** SPI clock polarity mask for \c SerialSPI_Init(). Indicates that the SCK should lead on the rising edge. */ + /** SPI clock polarity mask for \ref SerialSPI_Init(). Indicates that the SCK should lead on the rising edge. */ #define USART_SPI_SCK_LEAD_RISING 0 //@} /** \name SPI Sample Edge Configuration Masks */ //@{ - /** SPI data sample mode mask for \c SerialSPI_Init(). Indicates that the data should sampled on the leading edge. */ + /** 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 - /** SPI data sample mode mask for \c SerialSPI_Init(). Indicates that the data should be sampled on the trailing edge. */ + /** 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 USART_UPCHA_bm //@} /** \name SPI Data Ordering Configuration Masks */ //@{ - /** SPI data order mask for \c Serial_SPIInit(). Indicates that data should be shifted out MSB first. */ + /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out MSB first. */ #define USART_SPI_ORDER_MSB_FIRST 0 - /** SPI data order mask for \c Serial_SPIInit(). Indicates that data should be shifted out LSB first. */ + /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out LSB first. */ #define USART_SPI_ORDER_LSB_FIRST USART_UDORD_bm //@} @@ -177,9 +177,7 @@ static inline void SerialSPI_SendByte(USART_t* const USART, const uint8_t DataByte) { - USART->DATA = DataByte; - while (!(USART->STATUS & USART_TXCIF_bm)); - USART->STATUS = USART_TXCIF_bm; + SerialSPI_TransferByte(USART, DataByte); } /** Sends a dummy byte through the USART SPI interface, blocking until the transfer is complete. The response @@ -191,10 +189,7 @@ */ static inline uint8_t SerialSPI_ReceiveByte(USART_t* const USART) { - USART->DATA = 0; - while (!(USART->STATUS & USART_TXCIF_bm)); - USART->STATUS = USART_TXCIF_bm; - return USART->DATA; + return SerialSPI_TransferByte(USART, 0); } /* Disable C linkage for C++ Compilers: */