diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2011-02-19 18:37:22 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2011-02-19 18:37:22 +0000 |
commit | 3d4d8e7f628f9dc9981242f69b097333faa9940d (patch) | |
tree | cb05a02ad225b632d2d345da362687c9d199061a /LUFA/Drivers/Peripheral/TWI.c | |
parent | 100a197d0efa177b9f514cbf5292a6a333b03de9 (diff) | |
download | lufa-3d4d8e7f628f9dc9981242f69b097333faa9940d.tar.gz lufa-3d4d8e7f628f9dc9981242f69b097333faa9940d.tar.bz2 lufa-3d4d8e7f628f9dc9981242f69b097333faa9940d.zip |
Add new ARCH option to the makefiles to (eventually) specify the target device architecture. Update non-usb peripheral drivers to reflect future multiple architecture support.
Diffstat (limited to 'LUFA/Drivers/Peripheral/TWI.c')
-rw-r--r-- | LUFA/Drivers/Peripheral/TWI.c | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/LUFA/Drivers/Peripheral/TWI.c b/LUFA/Drivers/Peripheral/TWI.c deleted file mode 100644 index 2f4e4ed42..000000000 --- a/LUFA/Drivers/Peripheral/TWI.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - Copyright (C) Dean Camera, 2011. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -#include "TWI.h" - -uint8_t TWI_StartTransmission(const uint8_t SlaveAddress, - const uint8_t TimeoutMS) -{ - for (;;) - { - bool BusCaptured = false; - uint16_t TimeoutRemaining; - - TWCR = ((1 << TWINT) | (1 << TWSTA) | (1 << TWEN)); - - TimeoutRemaining = (TimeoutMS * 100); - while (TimeoutRemaining-- && !(BusCaptured)) - { - if (TWCR & (1 << TWINT)) - { - switch (TWSR & TW_STATUS_MASK) - { - case TW_START: - case TW_REP_START: - BusCaptured = true; - break; - case TW_MT_ARB_LOST: - TWCR = ((1 << TWINT) | (1 << TWSTA) | (1 << TWEN)); - continue; - default: - TWCR = (1 << TWEN); - return TWI_ERROR_BusFault; - } - } - - _delay_us(10); - } - - if (!(TimeoutRemaining)) - { - TWCR = (1 << TWEN); - return TWI_ERROR_BusCaptureTimeout; - } - - TWDR = SlaveAddress; - TWCR = ((1 << TWINT) | (1 << TWEN)); - - TimeoutRemaining = (TimeoutMS * 100); - while (TimeoutRemaining--) - { - if (TWCR & (1 << TWINT)) - break; - - _delay_us(10); - } - - if (!(TimeoutRemaining)) - return TWI_ERROR_SlaveResponseTimeout; - - switch (TWSR & TW_STATUS_MASK) - { - case TW_MT_SLA_ACK: - case TW_MR_SLA_ACK: - return TWI_ERROR_NoError; - default: - TWCR = ((1 << TWINT) | (1 << TWSTO) | (1 << TWEN)); - return TWI_ERROR_SlaveNotReady; - } - } -} - -uint8_t TWI_ReadPacket(const uint8_t SlaveAddress, - const uint8_t TimeoutMS, - const uint8_t* InternalAddress, - uint8_t InternalAddressLen, - uint8_t* Buffer, - uint8_t Length) -{ - uint8_t ErrorCode; - - if ((ErrorCode = TWI_WritePacket(SlaveAddress, TimeoutMS, InternalAddress, InternalAddressLen, - NULL, 0)) != TWI_ERROR_NoError) - { - return ErrorCode; - } - - if ((ErrorCode = TWI_StartTransmission((SlaveAddress & TWI_DEVICE_ADDRESS_MASK) | TWI_ADDRESS_READ, - TimeoutMS)) == TWI_ERROR_NoError) - { - while (Length--) - { - if (!(TWI_ReceiveByte(Buffer++, (Length == 0)))) - { - ErrorCode = TWI_ERROR_SlaveNAK; - break; - } - } - - TWI_StopTransmission(); - } - - return ErrorCode; -} - -uint8_t TWI_WritePacket(const uint8_t SlaveAddress, - const uint8_t TimeoutMS, - const uint8_t* InternalAddress, - uint8_t InternalAddressLen, - const uint8_t* Buffer, - uint8_t Length) -{ - uint8_t ErrorCode; - - if ((ErrorCode = TWI_StartTransmission((SlaveAddress & TWI_DEVICE_ADDRESS_MASK) | TWI_ADDRESS_WRITE, - TimeoutMS)) == TWI_ERROR_NoError) - { - while (InternalAddressLen--) - { - if (!(TWI_SendByte(*(InternalAddress++)))) - { - ErrorCode = TWI_ERROR_SlaveNAK; - break; - } - } - - while (Length--) - { - if (!(TWI_SendByte(*(Buffer++)))) - { - ErrorCode = TWI_ERROR_SlaveNAK; - break; - } - } - - TWI_StopTransmission(); - } - - return ErrorCode; -} |