X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/eee252603be67c539f9986cde76454f756e55d95..106f0eee17bbe837c9f94bdcf13d28e2952f1aef:/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h?ds=sidebyside diff --git a/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h index d699ccb8d..1e382f5ce 100644 --- a/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h +++ b/LUFA/Drivers/Peripheral/AVR8/TWI_AVR8.h @@ -1,13 +1,13 @@ /* 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 @@ -40,13 +40,13 @@ /** \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. * @@ -54,35 +54,35 @@ * \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(); * } @@ -93,18 +93,18 @@ * \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 @@ -133,8 +133,7 @@ #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 @@ -202,8 +201,10 @@ * \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; @@ -272,7 +273,7 @@ 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. @@ -291,7 +292,7 @@ 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)