/*
LUFA Library
- Copyright (C) Dean Camera, 2012.
+ Copyright (C) Dean Camera, 2018.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2018 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
/** \ingroup Group_TWI
* \defgroup Group_TWI_AVR8 TWI Peripheral Driver (AVR8)
*
- * \section Sec_ModDescription Module Description
+ * \section Sec_TWI_AVR8_ModDescription Module Description
* Master mode TWI driver for the 8-bit AVR microcontrollers which contain a hardware TWI module.
*
* \note This file should not be included directly. It is automatically included as needed by the TWI driver
* dispatch header located in LUFA/Drivers/Peripheral/TWI.h.
*
- * \section Sec_ExampleUsage Example Usage
+ * \section Sec_TWI_AVR8_ExampleUsage Example Usage
* The following snippet is an example of how this module may be used within a typical
* application.
*
* \code
* // Initialize the TWI driver before first use at 200KHz
* TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 200000));
- *
+ *
* // Start a write session to device at device address 0xA0, internal address 0xDC with a 10ms timeout
* if (TWI_StartTransmission(0xA0 | TWI_ADDRESS_WRITE, 10) == TWI_ERROR_NoError)
* {
* TWI_SendByte(0xDC);
- *
+ *
* TWI_SendByte(0x01);
* TWI_SendByte(0x02);
* TWI_SendByte(0x03);
- *
+ *
* // Must stop transmission afterwards to release the bus
* TWI_StopTransmission();
* }
- *
+ *
* // Start a read session to device at address 0xA0, internal address 0xDC with a 10ms timeout
* if (TWI_StartTransmission(0xA0 | TWI_ADDRESS_WRITE, 10) == TWI_ERROR_NoError)
* {
* TWI_SendByte(0xDC);
* TWI_StopTransmission();
- *
+ *
* if (TWI_StartTransmission(0xA0 | TWI_ADDRESS_READ, 10) == TWI_ERROR_NoError)
* {
* uint8_t Byte1, Byte2, Byte3;
- *
+ *
* // Read three bytes, acknowledge after the third byte is received
* TWI_ReceiveByte(&Byte1, false);
* TWI_ReceiveByte(&Byte2, false);
* TWI_ReceiveByte(&Byte3, true);
- *
+ *
* // Must stop transmission afterwards to release the bus
* TWI_StopTransmission();
* }
* \code
* // Initialize the TWI driver before first use at 200KHz
* TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 200000));
- *
+ *
* // Start a write session to device at device address 0xA0, internal address 0xDC with a 10ms timeout
* uint8_t InternalWriteAddress = 0xDC;
* uint8_t WritePacket[3] = {0x01, 0x02, 0x03};
- *
+ *
* TWI_WritePacket(0xA0, 10, &InternalWriteAddress, sizeof(InternalWriteAddress),
* &WritePacket, sizeof(WritePacket);
- *
+ *
* // Start a read session to device at address 0xA0, internal address 0xDC with a 10ms timeout
* uint8_t InternalReadAddress = 0xDC;
* uint8_t ReadPacket[3];
- *
+ *
* TWI_ReadPacket(0xA0, 10, &InternalReadAddress, sizeof(InternalReadAddress),
* &ReadPacket, sizeof(ReadPacket);
* \endcode
#if !(defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \
defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \
- defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || \
- defined(__AVR_ATmega32U6__))
+ defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
#error The TWI peripheral driver is not currently available for your selected microcontroller model.
#endif
* \param[in] Prescale Prescaler to use when determining the bus frequency, a \c TWI_BIT_PRESCALE_* value.
* \param[in] BitLength Length of the bits sent on the bus.
*/
- static inline void TWI_Init(const uint8_t Prescale, const uint8_t BitLength) ATTR_ALWAYS_INLINE;
- static inline void TWI_Init(const uint8_t Prescale, const uint8_t BitLength)
+ static inline void TWI_Init(const uint8_t Prescale,
+ const uint8_t BitLength) ATTR_ALWAYS_INLINE;
+ static inline void TWI_Init(const uint8_t Prescale,
+ const uint8_t BitLength)
{
TWCR |= (1 << TWEN);
TWSR = Prescale;
const uint8_t* InternalAddress,
uint8_t InternalAddressLen,
uint8_t* Buffer,
- uint8_t Length) ATTR_NON_NULL_PTR_ARG(3);
+ uint16_t Length) ATTR_NON_NULL_PTR_ARG(3);
/** High level function to perform a complete packet transfer over the TWI bus from the specified
* device.
const uint8_t* InternalAddress,
uint8_t InternalAddressLen,
const uint8_t* Buffer,
- uint8_t Length) ATTR_NON_NULL_PTR_ARG(3);
+ uint16_t Length) ATTR_NON_NULL_PTR_ARG(3);
/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)