Having trouble with MSP430F167 as slave, because it will not recognize and ACK it's own address. I do get the start interrupt if enabled. But because of the errata I2C16 in http://www.ti.com/lit/er/slaz148a/slaz148a.pdf I have disabled start interrupt. My expectation, is that I would see the ack low on the 9th clock, and also get an OAIFG interrupt. Then the master would send or receive the next byte. I've tried several addresses and baud rates. without luck. I cannot see what is wrong.
Can anyone see what I am missing, why is the I2C USART seeing Start condition, but not responding to a matching address? Thanks!
Init code:
void I2C_Port_EN(void) //***UART0 I2C Enable.***
{
P3SEL |= 0x0A; // Select I2C pins
U0CTL = I2C + SYNC + I2CEN; // II2 mode, slave
U0CTL &= ~I2CEN; // Must be disabled to set clock and address
I2CTCTL = I2CSSEL1; // SMCLK
I2COA = 0x007F; // Own Address , 7 bits right justified, high byte ignored.
I2CIE = TXRDYIE | RXRDYIE | OAIE | GCIE; // Enable TXRDYIFG interrupt
U0CTL |= I2CEN; // Enable I2C
}
Here's the scope with SDA on top and SCL on bottom.