#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);
}
Read 5 times, last 27 hours ago