aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/Peripheral/TWI.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-02-19 18:37:22 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-02-19 18:37:22 +0000
commit3d4d8e7f628f9dc9981242f69b097333faa9940d (patch)
treecb05a02ad225b632d2d345da362687c9d199061a /LUFA/Drivers/Peripheral/TWI.c
parent100a197d0efa177b9f514cbf5292a6a333b03de9 (diff)
downloadlufa-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.c143
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;
-}