I have implemented master and slave code based on the AVR application notes and can happily transmit multiples bytes of data in MTX mode. (hooray)
However in MRX mode, at the end of the sequence (SLA+R, 3 data bytes), I get an 0x38 status - loss of arbitration - with SCL high and SDA low. I am not sure if the line levels are the cause of the problem.... I suspect the consequence of whatever is going wrong. Having wrestled with the setup for a while, I found and tried Don Blake's code (Thanks Don). Although based (I think) on the ANs the implementation is pretty different. However.... I get the same 0x38 status code.
Without asking someone to dig through the code... has anyone had this sort of issue?
With the same issue in two sets of code... it seems to say it is something about my setup.
I have 4k7 pull-ups fitted and the issue seems to be invariant with clock rate.
Any ideas gratefully accepted!
Thanks
Greg