From bad56a4f2b91fc8591f6d33a1710ea0050abcfbf Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 12 Jun 2018 23:37:06 -0400 Subject: adds timeout to avr i2c --- drivers/avr/i2c_master.c | 89 +++++++++++++++++++++++++++++++++++++++++------- drivers/avr/i2c_master.h | 2 +- drivers/avr/is31fl3731.c | 56 +++++++++++++++++------------- drivers/avr/is31fl3731.h | 10 +++--- 4 files changed, 115 insertions(+), 42 deletions(-) (limited to 'drivers') diff --git a/drivers/avr/i2c_master.c b/drivers/avr/i2c_master.c index cd3c2e1c8..97f690043 100755 --- a/drivers/avr/i2c_master.c +++ b/drivers/avr/i2c_master.c @@ -6,6 +6,7 @@ #include #include "i2c_master.h" +#include "timer.h" #define F_SCL 400000UL // SCL frequency #define Prescaler 1 @@ -24,8 +25,18 @@ uint8_t i2c_start(uint8_t address) TWCR = 0; // transmit START condition TWCR = (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else + // wait for end of transmission + while( !(TWCR & (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else + // wait for end of transmission + while( !(TWCR & (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else // wait for end of transmission - while( !(TWCR & (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else + // wait for end of transmission + while( !(TWCR & (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else + // wait for end of transmission + while( !(TWCR & (1< I2C_TIMEOUT) { + return 2; // should make these codes standard + } + } + #else + // wait for end of transmission + while(TWCR & (1<