Thank you to Mr. Nick Gammon for all the terrific I2C "how to" articles. I have been a huge fan of using I2C in my projects and refer to the articles often.
I hope I am not violating any rules. I'm really not sure what constitutes a "double post" in this case, but if contacting Adafruit Customer Support Forum (soliciting product support) constitutes an apparent taboo of "double posting", then it's my mistake and I won't make it again. Please don't admonish me for it - I've well-earned my "Newbie" status but I'm learning how these forums work.
I'll try to be brief as possible with this question setup. The board I'm using is the Itsy Bitsy M4. At 120 Mhz, I use it via SPI for very nice TFT displays. I was trying to send data to this display setup using I2C. That's when problems began and I've discovered that this product does not include/provide I2C SLAVE capability. That is, SLAVE functionality is "not supported", according to Adafruit. The board functions great as a I2C MASTER but once configured as a SLAVE (Wire.begin(slave_addr), and an 'onReceive' event occurs, the Itsy Bitsy M4 locks up the I2C bus. Configured as a MASTER and another Arduino board the SLAVE, the I2C bus percolates just fine. The M4 simply doesn't support SLAVE functionality, I find.
I have searched high & low for Wire library "patches". Some have been suggested for the SAMD21 but not the M4 SAMD51. I am corresponding with Adafruit and hoping they will come through but in the mean time, I thought I'd ask if anyone here may have come across a patch/fix.
To avoid any confusing detractors caused by my posting I2C basic MASTER/SLAVE code that I use, I'll say that the sketches are stripped down, bare bones, I2C comms that work as expected between two Arduinos as long as the Itsy Bitsy M4 is MASTER. If it helps to know this, I did connect logic analyzer throughout the testing process to confirm bus activity, data content and waveform characteristics.
I'm hoping to find that someone's been able to create I2C SLAVE functionality for the Itsy Bitsy M4 and will throw me a bone. I come here only after exhausting my limited expertise. I worked for a good 5++ days trying to get this to work. before discovering that SLAVE capability was never functional on this particular device.
Thank you. Any help, I know, is a gift of your knowledge and time.
PS: In general, is a workaround possible by changing the Wire library?