-
Notifications
You must be signed in to change notification settings - Fork 139
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
Add OpenDrainIO pin state (with InputPin capability) #401
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Will write tests for this as well, as soon as I have an nrf52840-DK. |
I wonder if this should just be the behavior of |
To my knowledge this was an intentional decision, because having an input buffer connected to a floating pin can cause substantially increased power drain. So people wanted to have an explicit opt-in. But I'm open to dispute that decision. |
Okay, that sounds good! bors r+ |
Build succeeded: |
@jonas-schievink Added tests in #402 |
402: Add missing OpenDrain[IO] tests r=jonas-schievink a=Finomnis - Add tests for `OpenDrainIO` - Added in #401 - Add missing test for `OpenDrain` Co-authored-by: Finomnis <[email protected]>
As already reported in #339, there is currently no way to create an I/O pin in nrf-hal.
There are several reasons why having this would be useful. My personal usecase is the DHT22/AM2302 sensor. Controlling it requires a single-wire pulled-up open drain IO.
Sadly, this means that all libraries that can interface with it require
InputPin + OutputPin
.Solution
There is no inherent reason why nrf chips shouldn't be able to implement this. The input buffer is always available and allows reading back the pin values during every pin configuration. Although for energy saving reasons, the input buffer is currently disabled during the
OpenDrain
state.My proposal is to add an
OpenDrainIO
state that does not disable the input buffer and implementsInputPin
.