|
|
|
|
@ -55,7 +55,7 @@ uint8_t i2c_read(uint8_t addr, uint8_t len, uint8_t *data)
|
|
|
|
|
return done;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t i2c_write(uint8_t addr, uint8_t len, uint8_t *data)
|
|
|
|
|
uint8_t i2c_write_i(uint8_t addr, uint8_t len, uint8_t *data, uint8_t stop)
|
|
|
|
|
{
|
|
|
|
|
TWCR &= ~TWSTO;
|
|
|
|
|
TWCR |= TWINT | TWSTA;
|
|
|
|
|
@ -90,11 +90,17 @@ uint8_t i2c_write(uint8_t addr, uint8_t len, uint8_t *data)
|
|
|
|
|
done++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TWCR |= TWINT | TWSTO;
|
|
|
|
|
if(stop) {TWCR |= TWINT | TWSTO;}
|
|
|
|
|
return done;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline uint8_t i2c_write(uint8_t addr, uint8_t len, uint8_t *data)
|
|
|
|
|
{
|
|
|
|
|
return i2c_write(addr, len, data, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t i2c_write_read(uint8_t addr, uint8_t writelen, uint8_t *writedata, uint8_t readlen, uint8_t *readdata)
|
|
|
|
|
{
|
|
|
|
|
return 0; //TODO: implement
|
|
|
|
|
if(writelen == i2c_write_i(addr, writelen, writedata, 0)) {return i2c_read(addr, readlen, readdata);}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|