-
Notifications
You must be signed in to change notification settings - Fork 14
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
SoftI2C is asking for an id parameter and it should not #374
Comments
Sorry, wrong repo. |
If this is for micropython stubs then I could move the issue, but not sure if I can understand the question or issue withiuth details of the port board and version of the stubs in that case |
I am using Pico-W-Stub with vscode and when machine.SoftI2C, Pylance ask for one more parameter (the id). umachine has SoftI2C class with this: However, the id parameter should not be there. Removing it solves Pylance error. |
Those stubs are not maintained by me, and are indeed incorrect. I think mine are correct, It should be possible to reconfigure your project to use the more up to date stubs And/or raise this with the Pico maintainer |
Thanks! I figured out it was not the right repo that's why I closed it. I already raise it to the maintainer but no feedback so far. I'll read how to switch to your stubs and replace it automatically. |
NP, happy to help |
Quick question about the stub since I could not find answer in the docs: why are there both init (initialize) and init function ? Not sure about the logic behind the duplicate def init()? |
All classes should have an init https://docs.micropython.org/en/latest/library/machine.I2C.html#machine.SoftI2C
The I2C class also has an init method documented, with a slightly different signature
Perhaps this is a Documentation error? Have you tested if the SoftI2C class accepts/has both methods? On the board firmware I find the SoftI2C method is reported as having the init method |
You are right and the documentation is right. I did not see it at first because I only looked at RP2 port and not the general documentation! |
Do you have a link to the page with the wrong info? |
No problem 👍 |
SoftI2C stub is asking for an id parameter. This only exists for hardware I2C.
This is correct:
t = machine.SoftI2C(scl=machine.Pin(4),sda=machine.Pin(5),freq=400000)
This is incorrect:
Pylance is not happy with it:
It seems that this has changed in v1.14 in 2021 so this is quite old since the latest is 1.19
https://github.com/micropython/micropython/releases
Breaking changes in this release are:
machine.I2C and machine.SPI constructors are changed when using software-based I2C and SPI. Code that constructed I2C/SPI peripherals in the following way will need to be changed (or else their use will emit a warning which will eventually be an error):
machine.I2C(-1, ...) -> machine.SoftI2C(...)
machine.I2C(scl=scl, sda=sda) -> machine.SoftI2C(scl=scl, sda=sda)
machine.SPI(-1, ...) -> machine.SoftSPI(...)
machine.SPI(sck=sck, mosi=mosi, miso=miso)
-> machine.SoftSPI(sck=sck, mosi=mosi, miso=miso)
The text was updated successfully, but these errors were encountered: