X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/eee252603be67c539f9986cde76454f756e55d95..6eaefff39bbf024df03cee382d028e8e24361bae:/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h diff --git a/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h index 56747704c..750db0dc4 100644 --- a/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h +++ b/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2012. + Copyright (C) Dean Camera, 2019. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2019 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 @@ -40,7 +40,7 @@ /** \ingroup Group_SPI * \defgroup Group_SPI_AVR8 SPI Peripheral Driver (AVR8) * - * \section Sec_ModDescription Module Description + * \section Sec_SPI_AVR8_ModDescription Module Description * Driver for the hardware SPI port available on most 8-bit AVR microcontroller models. This * module provides an easy to use driver for the setup and transfer of data over the * AVR's SPI port. @@ -48,7 +48,7 @@ * \note This file should not be included directly. It is automatically included as needed by the SPI driver * dispatch header located in LUFA/Drivers/Peripheral/SPI.h. * - * \section Sec_ExampleUsage Example Usage + * \section Sec_SPI_AVR8_ExampleUsage Example Usage * The following snippet is an example of how this module may be used within a typical * application. * @@ -56,17 +56,17 @@ * // Initialize the SPI driver before first use * SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | * SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); - * + * * // Send several bytes, ignoring the returned data * SPI_SendByte(0x01); * SPI_SendByte(0x02); * SPI_SendByte(0x03); - * + * * // Receive several bytes, sending a dummy 0x00 byte each time * uint8_t Byte1 = SPI_ReceiveByte(); * uint8_t Byte2 = SPI_ReceiveByte(); * uint8_t Byte3 = SPI_ReceiveByte(); - * + * * // Send a byte, and store the received byte from the same transaction * uint8_t ResponseByte = SPI_TransferByte(0xDC); * \endcode @@ -99,7 +99,7 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name SPI Prescaler Configuration Masks */ - //@{ + /**@{*/ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 2. */ #define SPI_SPEED_FCPU_DIV_2 SPI_USE_DOUBLESPEED @@ -120,43 +120,43 @@ /** SPI prescaler mask for \ref SPI_Init(). Divides the system clock by a factor of 128. */ #define SPI_SPEED_FCPU_DIV_128 ((1 << SPR1) | (1 << SPR0)) - //@} + /**@}*/ /** \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 SPI_SCK_LEAD_RISING (0 << CPOL) /** SPI clock polarity mask for \ref SPI_Init(). Indicates that the SCK should lead on the falling edge. */ #define SPI_SCK_LEAD_FALLING (1 << CPOL) - //@} + /**@}*/ /** \name SPI Sample Edge Configuration Masks */ - //@{ + /**@{*/ /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should sampled on the leading edge. */ #define SPI_SAMPLE_LEADING (0 << CPHA) /** SPI data sample mode mask for \ref SPI_Init(). Indicates that the data should be sampled on the trailing edge. */ #define SPI_SAMPLE_TRAILING (1 << CPHA) - //@} + /**@}*/ /** \name SPI Data Ordering Configuration Masks */ - //@{ + /**@{*/ /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out MSB first. */ #define SPI_ORDER_MSB_FIRST (0 << DORD) /** SPI data order mask for \ref SPI_Init(). Indicates that data should be shifted out LSB first. */ #define SPI_ORDER_LSB_FIRST (1 << DORD) - //@} + /**@}*/ /** \name SPI Mode Configuration Masks */ - //@{ + /**@{*/ /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */ #define SPI_MODE_SLAVE (0 << MSTR) /** SPI mode mask for \ref SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */ #define SPI_MODE_MASTER (1 << MSTR) - //@} + /**@}*/ /* Inline Functions: */ /** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other @@ -165,6 +165,7 @@ * \param[in] SPIOptions SPI Options, a mask consisting of one of each of the \c SPI_SPEED_*, * \c SPI_SCK_*, \c SPI_SAMPLE_*, \c SPI_ORDER_* and \c SPI_MODE_* masks. */ + static inline void SPI_Init(const uint8_t SPIOptions); static inline void SPI_Init(const uint8_t SPIOptions) { /* Prevent high rise times on PB.0 (/SS) from forcing a change to SPI slave mode */ @@ -187,6 +188,7 @@ } /** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */ + static inline void SPI_Disable(void); static inline void SPI_Disable(void) { DDRB &= ~((1 << 1) | (1 << 2));