Jinx wrote: > 4. The master receives 0 or more bytes of data and sends an ACK > to the slave after each byte......(so far so good)...... The master > signals the last byte by not sending an ACK > > Now, (4) is repeated throughout the literature **. I don't understand > how the master-receiver knows when the last byte is. You tell it ? The master decides when the last byte is, at least at the bus level. The slave could possibly tell it how many bytes to expect by using higher level protocol, but that has nothing to do with raw IIC. > S - Slave address (R) - Slave Ack - n data bytes - Slave Ack - > last byte - Master NACK - P Ah, I see the misconception. The N data bytes are transferred from slave to master, since this is a read sequence. The master sends the ACKs for all those data bytes, since it is the receiver. It therefore ACKs but the last, which it NACKs. However, since the master controls the bus, it could also just abort the sequence with a BUS STOP. That and the BUS START of the next sequence is supposed to reset any slave logic. The NACK to the last data byte is therefore really redundant on a read transfer. On a write transfer it's not, since the slave generates the ACKs. This is the only means the slave has of telling the master that it's done and ain't gonna listen no more. ***************************************************************** Embed Inc, embedded system specialists in Littleton Massachusetts (978) 742-9014, http://www.embedinc.com -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist