Newby here. I've been using the Wire library with the Tiny4kOLED library, and it's been working just fine. I decided to try the TinyI2C library, as it can operate faster and uses fewer memory resources. Downloaded the library from github, installed it in the IDE 2.0.0-rc9.1. I immediately noted that I can't load the examples for the TinyI2C library like the other libraries I've loaded. I tried setting up to use TinyI2C instead of Wire per all the documentation (including putting an #include <TinyI2CMaster.h> as my very first line), but I get the following when I try to compile:
D:\Users\Ron\Documents\Arduino\libraries\Tiny4kOLED\src/Tiny4kOLED_tiny-i2c.h:20:9: error: 'TinyI2C' was not declared in this scope
It looks like the TinyI2C object is declared in the TinyI2CMaster.cpp file. Is the cause that the library isn't getting installed (and hence why I don't see its examples)? The Nano Every has an I2C interface, so I would expect it would be able to work.
According to the Tiny4kOLED documentation (GitHub - datacute/Tiny4kOLED: Library for an ATTiny85 to use an SSD1306 powered, double buffered, 128x32 pixel OLED, over I2C), it shows that the TinyI2C library can write a screen over 6 times faster than the Wire library (obviously tested on a device supported by TinyI2C). That can have an impact on my screen update times. I also know the TinyI2C doesn't allocate a separate buffer (reads/writes directly with the passed data), thus saving memory resources as well.
I was suspecting that the Nano Every was not supported. I don't know enough yet to figure out how to adjust the library to try to get it to work on the Every ...
Search for ATmega4809 on this page: http://www.technoblogy.com/show?3UF0
It is supported, but with the MegaCoreX. So I guess, that means it is not supported.
6 times faster ? I would like to see that, I think that 6% faster is more likely.
When someone has such a problem on this forum, then sometimes the sketch can be optimized and it will be fast enough with the normal Arduino libraries. You might be spending a lot of time to make it faster, while the problem is how you deal with the OLED display in the sketch.
[UPDATE]
I see the comparison for the speed now. I looked at the sketch I2CSpeedTest.ino. That test is not fair at all. I gives the impression that the Arduino Wire library is slower than needed, which it is not.
The bitbang I2C bus runs at a very high speed, in the MegaHerz range, not at the default slow speed of 100kHz. It is known that some OLED display accept outrages high speeds.
The OLED displays use only a subset of the I2C standard, so if the bitbang does only that, then it is also faster.
However, the main reason for such a speed increase is the faster signal.