Dear all, I've just subscribed to this discussion so please feel free to correct my etiquette. I have a problem using the PIC16C65 as an I2C slave returning data back to the master. Things work fine until the end of the first data byte returned. The SCL and SDA line stay low. I believe this is the PIC's fault and not the master, because the master continues working when the PIC is reset. I've checked everything I can: the CKP bit is cleared at the right time, the TRISC registers indicate the I2C output pins should be hi-z, there are no error conditions, etc. I thought the problem was sending the wrong number of data bytes, and tried to write interrupt code to examine the ACK bit and thus eliminate this possible culprit. The data sheet explains no way to do this. I've tried loading dummy null bytes into SSPBUF before setting CKP. I've tried trying to force SCL and SDA to hi-z by software. I've trawled the web and come back with low quality info and amateur HTML. Eventually I found the Microchip BBS site and sifted out SSP I2C SLAVE related messages. Some have noticed the ACK bit is unreadable from interrupts. Some complain of lock-ups similar to mine. Quite a few express annoyed with the fact that the SSP only does slave duty not master (like finding a UART which provides a TxD pin you have to bit-bang!). Microchip don't seem to answer queries which highlight the shortcomings of their chips - perhaps a wise move in litigatious America. I've also asked all my trade contacts without success. Ominously, one said his experienced predecessor had tried and failed to get I2C fully working with PICs and eventually implemented some proprietary 4-bit bus! So I don't think my problem is trivial. Has anyone had these problems and if so how were they solved? Thanks for your time in reading this.