/* i2c.c */ #include #include #include #include "common.h" #include "beep.h" //#define i2c_wait() do { uint16_t count = 0; while (!(TWCR & (1< 1000) break; } while (0) //#define i2c_status() (TWSR & 0xF8) #define i2c_check(status) if (i2c_status() != (status)) goto ERROR static void i2c_wait(void) { uint16_t count = 0; while (!(TWCR & (1< 1000) break; } static __attribute__ ((noinline)) uint8_t i2c_status(void) { return TWSR & 0xF8; } uint8_t i2c_xor; void i2c_init(void) { TWSR = 0; /* prescaler TWPS = 0 */ TWBR = 10; /* minimum value allowed */ /* f_SCL = clk / (16+(2*TWBR*TWPS)) */ TWCR = (1<