arduino / ArduinoCore-API

Hardware independent layer of the Arduino cores defining the official API
https://www.arduino.cc/reference/en/
GNU Lesser General Public License v2.1
215 stars 119 forks source link

Extending PinMode to support MCUs with open-drain outputs? #155

Closed obra closed 3 years ago

obra commented 3 years ago

I'm in the process of collaborating with some other folks to build a new Arduino port for GigaDevice's GD32 chips[1]. We're attempting to build on top of ArduinoCore-API. In general, It's so much better than the old way of doing things. One thing we're running into is how to handle gaps in the PinMode enum.

Specifically, we're short an OUTPUT_OPENDRAIN in PinMode

Would a PR that adds a new OUPUT_OPENDRAIN = 0x4 to the PinMode definition be welcome? If not, is there an alternate "Arduinoish" way to build the user-facing API to set a pin as an open-drain output?

[1] https://github.com/CommunityGD32Cores/ArduinoCore-GD32

Thanks!

facchinm commented 3 years ago

I'm totally :+1: to add the OUTPUT_OPENDRAIN define; would you mind to file a PR with the change?

obra commented 3 years ago

Done as #157, with copious notes for the next person who needs to work around lack of some pin mode in the commit message ;)

Based on the implementation of Analog pins in the Arduino world, I'm guessing that a standard "INPUT_ANALOG" PinMode is not of general interest?