Acknowledge Sequence

The ninth SCL pulse for any transferred byte in I2C is dedicated as an Acknowledge. It allows receiving devices to respond back to the transmitter by pulling the SDA line low. The transmitter must release control of the line during this time to shift in the response. The Acknowledge (ACK) is an active-low signal, pulling the SDA line low indicates to the transmitter that the device has received the transmitted data and is ready to receive more.

The result of an ACK is placed in the ACKSTAT bit in the SSPxCON2 register.

The slave software, when the AHEN and DHEN bits in the SSPxCON3 register are set, allows the user to set the ACK value sent back to the transmitter. The ACKDT bit in the SSPxCON2 register is set/cleared to determine the response.

The slave hardware will generate an ACK response if both the AHEN and DHEN bits are clear. However, if the BF bit in the SSPxSTAT register or the SSPOV bit in the SSPxCON1 register are set when a byte is received then the ACK will not be sent by the slave.

When the module is addressed, after the eighth falling edge of SCL on the bus, the ACKTIM bit in the SSPxCON3 register is set. The ACKTIM bit indicates the acknowledge time of the active bus. The ACKTIM Status bit is only active when either the AHEN bit or DHEN bit is enabled.