>The data transfer is automatic, the NACK/ACK isn't - how would the master >know which of the two you wanted to send? You have to set or clear ACKDT >as desired, and then set ACKEN (both in SSPCON2) at the master side for the >9th bit to be transferred. Yes I appreciate that, and the code in the master is working correctly. However on digging somewhat deeper into what is happening in the slave device which is where the malfunction happens, I find that somehow the TRIS bit for the SDA line is getting set to output, and the port bit is set to 0 :)))) The TRIS bit is getting changed somehow while another couple of pins are having their tris bits changed to change direction, and it is occurring during an independent operation. Most of the time the code is working because the I2C is not being accessed during the critical times, so the problem is not seen. Now I just have to work out precisely which instructions sure misbehaving. :)) -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.