static volatile uint8_t i2c_pos = 0x00;
volatile uint8_t i2c_done = 0x00;
+#define I2C_FREQ 20000UL
+
void i2c_init()
{
- TWBR = 0xff;
+ /* SCLf = F_CPU / (16 + 2 * TWBR * 4^TWPS)
+ * TWPS is 0 =>
+ * TWBR = (F_CPU/(2 * SCL)) - 8
+ */
+ TWBR = (F_CPU/(2*I2C_FREQ))-8;
TWAR = BMC_ADDR & 0xfe;
TWDR = 0x00;
TWCR &= ~((1<<TWSTA) | (1<<TWSTO));