AVR TWI (I2C) problem
The problem is at

TWCR |= (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);    // Clear TWI interrupt flag,Enable TWI


As per Atmel datasheets, the flags you set in TWCR "must be cleared by software when [what you're trying to send] has been transmitted."

So don't "or" TWCR with your flags but write all the flags in the register to their appropriate values, like

TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);    // Clear TWI interrupt flag,Enable TWI