X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=drivers%2Favr%2Fi2c_master.c;h=4e76e2e7c60ece674ad49630984c9f365a09b5e3;hb=08283f61244479743c4ff5ecba39bd0264979d77;hp=30ea760c9ff00bc7e4fb9e8c9837f555d9b2180c;hpb=6380f8319057d33bb6d07c66789867e49c634504;p=qmk_firmware.git diff --git a/drivers/avr/i2c_master.c b/drivers/avr/i2c_master.c index 30ea760c9..4e76e2e7c 100755 --- a/drivers/avr/i2c_master.c +++ b/drivers/avr/i2c_master.c @@ -16,7 +16,6 @@ void i2c_init(void) { TWSR = 0; /* no prescaler */ TWBR = (uint8_t)TWBR_val; - //TWBR = 10; } i2c_status_t i2c_start(uint8_t address, uint16_t timeout) @@ -28,7 +27,7 @@ i2c_status_t i2c_start(uint8_t address, uint16_t timeout) uint16_t timeout_timer = timer_read(); while( !(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } } @@ -43,7 +42,7 @@ i2c_status_t i2c_start(uint8_t address, uint16_t timeout) timeout_timer = timer_read(); while( !(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } } @@ -64,7 +63,7 @@ i2c_status_t i2c_write(uint8_t data, uint16_t timeout) uint16_t timeout_timer = timer_read(); while( !(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } } @@ -82,7 +81,7 @@ int16_t i2c_read_ack(uint16_t timeout) uint16_t timeout_timer = timer_read(); while( !(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } } @@ -99,7 +98,7 @@ int16_t i2c_read_nack(uint16_t timeout) uint16_t timeout_timer = timer_read(); while( !(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } } @@ -210,7 +209,7 @@ i2c_status_t i2c_stop(uint16_t timeout) uint16_t timeout_timer = timer_read(); while(TWCR & (1< timeout)) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { return I2C_STATUS_TIMEOUT; } }