-
Notifications
You must be signed in to change notification settings - Fork 140
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
Can't use with onewire due to InputPin + OutputPin requirement #339
Comments
I've opened #340 which should resolve this |
Previously: nrf-rs/nrf51-hal#25 |
I've opened #401 which should finally resolve this. |
bors bot
added a commit
that referenced
this issue
Sep 27, 2022
401: Add OpenDrainIO pin state (with InputPin capability) r=jonas-schievink a=Finomnis 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`](https://docs.rs/dht-sensor/0.2.1/dht_sensor/trait.InputOutputPin.html). # 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 implements `InputPin`. Co-authored-by: Finomnis <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When trying to use
nrf-hal-common
with OneWire (https://crates.io/crates/onewire), InputPin needs to be implemented for OutputPin.I tried to implement this myself, but I seem to be a bit out of my depth :(
Example code is:
This results in the error:
The text was updated successfully, but these errors were encountered: