-
Notifications
You must be signed in to change notification settings - Fork 13.3k
FYI -- a fast i2c implementation in Assembly (brzo i2c) #2055
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
BTW, as I can see onReceive handler disabled in ESP Wire library (https://github.com/esp8266/Arduino/blob/master/libraries/Wire/Wire.cpp#L203-L246) so it is impossible to use nodeMCU in multimaster mode on I2C bus. It will be great if this feature will be available again. |
Thanks for building this library I made a little comparison video showing the performance of driving a ssd1306 oled display using this library instead of wire library. Have a look here. |
Wow, this looks very nice!! Very smooth! So, I am happy it was useful to you! btw: Hmm, how do you get the current time? Are you using the Time library or the native SDK sntp_ functions? Are you able to adjust for "Sommerzeit" aka daylight saving time? (For another project I want to display the current time, but of course not on such a fance display like you did, instead on an old Split Flap Display from the swiss railways (SBB)) |
Thank you. For this I am using |
@pasko-zh awesome work, do you think it's possible to make a variant of Wire library based on bzro-i2c? I.e. make API compatible with Wire. |
I had the same idea it is tracked in pasko-zh/brzo_i2c#1 |
@igrr Thanks :-) |
@pasko-zh any news regarding integration in the core ? |
@d-a-v I am not involved in the esp core development, thus I cannot give you an answer... |
Given recent I2C slave support integrated into the currennt Wire lib, this requires further investigation. |
@suculent is there any chance you could help with testing this? |
Well, I know Brzo and I'm already using it in some project as a replacement of the current I2C lib. |
@suculent The fact that you're using it in one of your projects tells me what I wanted to know 😆 |
Indeed, slave support is now required. What we've merged from @bjoham can be happily replaced with Brzo, expecting it will share existing Wire interface. Reason why I don't use Brzo in all projects is merely interoperability issue with all existing libraries based on Wire. It's great with displays where you need speed, however it gets complicated in cases where I have 60+ I2C devices to manage; 1 master MCU, 3 slave MCUs and a bunch of various adressed peripherals. I don't even speak about the hacks where SDA goes through 16-bit analog multiplexer to devices which do not have configurable I2C address. |
Also, I'd look into the Wire.begin() thing. For slave mode it needs both pin and address setting in the initializer... and most of the libs call Wire.begin() itself, which can be an issue. Wire should be able to act properly, in case it has been already initialized, so the libraries calling just Wire.begin(); do not reset explicit SDA/SCL pin settings or interfere existing callbacks. |
Well, I just followed the discussion here and I am of course happy to support you 😄 My other job (aka the job) keeps me quite busy doing many many many power point presenations 😫 thus, my motivation for these topics here is huge... but allow some time for me to answer your questions, it wont be always as fast as |
@pasko-zh I'm glad you're here 😄 |
@devyte Somewhere in between powerpoints this should be possible 😄 |
Any news on this? It would be great to see @pasko-zh's work integrated into the core with a Wire lib wrapper. |
I am closing this issue. However documentation on how to use it has been available for more than one year: |
Hi,
I don't have currently time to do that (releasing the project I was using it in).
I've also dropped software I2C from my project because of low realiability/scalability
and no forward compatibility with multi-core MPUs (ESP32) / I've exchanged that with CAN bus.
M.
… On 1 Oct 2019, at 14:02, david gauchard ***@***.***> wrote:
I am closing this issue.
GPL is still ongoing with this library <https://github.com/pasko-zh/brzo_i2c> so there's nothing we can do here.
However documentation on how to use it has been available for more than one year:
https://github.com/pasko-zh/brzo_i2c/wiki#how-to-migrate-from-wire-library-to-brzo-i2c <https://github.com/pasko-zh/brzo_i2c/wiki#how-to-migrate-from-wire-library-to-brzo-i2c>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#2055?email_source=notifications&email_token=AABWFR6RRHIQ7VN4BTMGMGTQMM35VA5CNFSM4CE2XA6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEABAOYQ#issuecomment-537003874>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AABWFR6IABO64S4UIRMCJWTQMM35VANCNFSM4CE2XA6A>.
|
Hello!
I would like to share this with you: I have implemented an i2c master in (inline) assembly for the esp8266 called brzo i2c. It can be used as an alternative to the wire library. It features:
800 KHz @ 80 MHz CPU
1 MHz @ 160 MHz CPU
Further infos are available on the wiki and the library is available here.
The wiki and the code contains many infos/hints around i2c, so I thought it could be useful to you guys. And of course you may use the library :-)
cheers
paško
ps: with some (slight) modifications it will work for the native tool chain, too.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: