#include "I2C.h" void TWI_start(void) { TWCR = (1 << TWEN) | (1 << TWSTA) | (1 << TWINT); while (!(TWCR & (1 << TWINT))); _delay_ms(10); } void TWI_address_transmit(void) { TWDR = 0b01001000; // Write address TWCR = (1 << TWEN) | (1 << TWINT); while (!(TWCR & (1 << TWINT))); _delay_ms(10); } void TWI_address_receive(void) { TWDR = 0b01001001; // Read address TWCR = (1 << TWEN) | (1 << TWINT); while (!(TWCR & (1 << TWINT))); _delay_ms(10); } uint8_t TWI_receive_ACK(void) { TWCR = (1 << TWEN) | (1 << TWINT) | (1 << TWEA); // ACK while (!(TWCR & (1 << TWINT))); return TWDR; } uint8_t TWI_receive_NACK(void) { TWCR = (1 << TWEN) | (1 << TWINT); // NACK while (!(TWCR & (1 << TWINT))); return TWDR; } void TWI_stop(void) { TWCR = (1 << TWEN) | (1 << TWSTO) | (1 << TWINT); _delay_ms(10); }