зависает на строчке while (!(TWCR & (1<<TWINT))) ;//Wait for TWINT flag set
В функции:
Код: Выделить всё
char mi2c_start(void) {
TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Send START condition
delay_us(1);
while (!(TWCR & (1<<TWINT))) ;//Wait for TWINT flag set
return (TWSR & 0xF8);
}