I’m trying to develop a fail-safe I2C driver. While I was coding the i2c_write driver I find out that even without the “__bis_SR_register(CPUOFF + GIE);” but for the i2c_read introducing the “__bis_SR_register(CPUOFF + GIE); ” it’s a must, otherwise the CPU gets blocked. As an active wait is anyway needed, setting the CPU off or coding something like “while(byte_cntr)” doesn’t make a big difference. On the other hand, I’m worried about the situation that arises when the MSP430 is commanded to read a single byte and a NACK condition occurs. For reading only one byte the code is “UCB0CTL1 |= UCTXSTT; while (UCB0CTL1 & UCTXSTT); UCB0CTL1 |= UCTXSTP; __bis_SR_register(CPUOFF + GIE” (please note that differs from the attached driver code) but setting the STOP command clears the UCNACKIFG bit and the CPU gets blocked if a NACK arises.