I saw that. I do have a logic analyzer I'm using to debug. I gave up on my soft i2c code and I am earnestly trying to figure out how to use the mcc foundation services simple i2c drivers. The reason I ditched it before is because it was slow. There was a long pause between every byte written and read. But I just dug into the driver and found where the delay is and shortened it some. It's acceptable now. The delay is in a function labeled inline void mssp_waitForEvent(uint16_t *timeout) There was a 100us delay located in a while loop that's checking for an interrupt flag to set. If someone knows why it's even there, I'm all ears. In the meantime, I'm moving on though I've noted where I made the change in case something gets wonky in the future. I'll eventually dig deeper to understand the driver more. On Mon, Oct 21, 2019, 2:23 AM Chris Roper wrote: > If you have a PICKit 2 or 3 you can use the GUI as a crude Logic > analyzer that will allow you to see your SLC and SDA lines and look at th= e > response and timing. It is a very useful and oft overlooked tool for this > sort of debugging. > > On Mon, 21 Oct 2019 at 09:41, Joep Suijs wrote: > > > The slave is allowed to strech the clock. > > I once had trouble with i2c software master code reading a slave. It > turned > > out the slave used clock streching to setup data requested by the maste= r. > > The master didn't check the clock though, and read rubbish while the > slave > > was still busy preparing the requested data... > > > > Joep > > > > Op ma 21 okt. 2019 om 09:00 schreef James Burkart < > > james@burkartstudios.com > > >: > > > > > I haven't got to the clock stretching yet. I'm still just working on > > > reading the I2C bus. > > > -- > > > Sincerely, > > > > > > James Burkart > > > *925.667.7175* > > > > > > > > > On Sun, Oct 20, 2019 at 11:12 PM Joep Suijs wrote: > > > > > > > Hi James, > > > > > > > > I did check your code and didn't see where it actually checks for t= he > > > clock > > > > to go high (that is, read input and check it, not fixed delay). > Didn't > > > > check all of your code though, so I might have missed it. > > > > > > > > Good luck. > > > > Joep > > > > > > > > Op ma 21 okt. 2019 om 06:44 schreef James Burkart < > > > > james@burkartstudios.com > > > > >: > > > > > > > > > Thanks Joep, > > > > > > > > > > I appreciate the help. I do understand how I2C works, my question= s > > are > > > > > about my code. The port pins I am using for clock and data are > > > operating > > > > as > > > > > open drain, so I'm not driving anything high. > > > > > > > > > > -- > > > > > Sincerely, > > > > > > > > > > James Burkart > > > > > *925.667.7175* > > > > > > > > > > > > > > > On Sun, Oct 20, 2019 at 4:11 AM Joep Suijs > wrote: > > > > > > > > > > > Hi James, > > > > > > > > > > > > The slave hold the clock low to hold off the master when it nee= ds > > > time. > > > > > So > > > > > > after the master 'releases' the clock to go high, it needs to > wait > > > > until > > > > > > the clock line actually is high before it can proceed. This is > also > > > the > > > > > > reason you shouldn't drive clock high, only low... > > > > > > > > > > > > Joep > > > > > > > > > > > > Op zo 20 okt. 2019 om 00:23 schreef James Burkart < > > > > > > james@burkartstudios.com > > > > > > >: > > > > > > > > > > > > > I am using pull up resistors on both SCL and SDA. Analog is > > > disabled > > > > on > > > > > > > RC7. The author of the original code mentions that he wrote t= he > > > code > > > > to > > > > > > be > > > > > > > as universal as possible. I understand the reasoning, it's ju= st > > > > > > > implementing it that's giving me issue. So I re wrote the cod= e > > and > > > am > > > > > > using > > > > > > > the open drain feature of my micro on SDA and SCL. But now I'= m > > > trying > > > > > to > > > > > > > successfully read from SDA. > > > > > > > > > > > > > > On Sat, Oct 19, 2019, 4:13 PM Mike > > > wrote: > > > > > > > > > > > > > > > Do you have pull-up resistors on both SCL and SDA? Have yo= u > > > > > configured > > > > > > > > the ANSELC register to disable analog input in RC7? > > > > > > > > > > > > > > > > Using the TRIS register to switch a pin between an input, o= r > an > > > > > output > > > > > > > > with a logic 0 level set is a common way of simulating an > > > > open-drain > > > > > > > > output if this function is not support in hardware. The cod= e > > you > > > > used > > > > > > > > was very likely written for an old 14 bit part (16C/16Fxx > etc.) > > > > which > > > > > > > > don't have open-drain outputs. > > > > > > > > > > > > > > > > Regards > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > On 19/10/2019 22:49, James Burkart wrote: > > > > > > > > > I wrote up a bit-bang I2C routine to communicate with a > > couple > > > > > > devices, > > > > > > > > an > > > > > > > > > SSD1306 OLED and an MCP23018 port extender. I'm using a > > > > > PIC18F27K40. > > > > > > > > > > > > > > > > > > I've got the sending data part just fine, but I can't > figure > > > out > > > > > the > > > > > > > > > receiving part, including reading acknowledge bits. I, in > > > large, > > > > > > copied > > > > > > > > the > > > > > > > > > code example from a blog post by Calvin Cherry ( > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://calcium3000.wordpress.com/2016/08/19/i2c-bit-banging-tutorial-par= t-i/ > > > > > > > > > ). > > > > > > > > > To be honest, the way he was switching SDA between an inp= ut > > and > > > > > > output > > > > > > > > was > > > > > > > > > confusing to me and so I just enabled open drain on the > port > > > pins > > > > > in > > > > > > > > > question. And that's why I can write to the I2C bus just > > fine, > > > > but > > > > > > > > reading > > > > > > > > > from it I am stumbling. For my bit read function I change > the > > > > port > > > > > > pin > > > > > > > > used > > > > > > > > > for SDA to an input and read its value through > PORTCbits.RC7 > > > but > > > > > it's > > > > > > > > > always reading 0. > > > > > > > > > > > > > > > > > > I'd like to use the hardware I2C but I can't get the MCC > code > > > to > > > > > > work, > > > > > > > > > either the Foundation Services version, nor the other one > > that > > > is > > > > > to > > > > > > be > > > > > > > > > obsoleted soon. > > > > > > > > > -- > > > > > > > > > Sincerely, > > > > > > > > > > > > > > > > > > James Burkart > > > > > > > > > *925.667.7175* > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list > > archive > > > > > > > > View/change your membership options at > > > > > > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > > > > > > > > > -- > > > > > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list > archive > > > > > > > View/change your membership options at > > > > > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > > > > > > > -- > > > > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archiv= e > > > > > > View/change your membership options at > > > > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > > > > > -- > > > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > > > > > View/change your membership options at > > > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > > > -- > > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > > > > View/change your membership options at > > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > > > -- > > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > > > View/change your membership options at > > > http://mailman.mit.edu/mailman/listinfo/piclist > > > > > -- > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > > View/change your membership options at > > http://mailman.mit.edu/mailman/listinfo/piclist > > > -- > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist > --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .