[En-Nut-Discussion] RFA_2: Nut/OS GPIO API

Ole Reinhardt ole.reinhardt at embedded-it.de
Thu Oct 18 13:09:38 CEST 2012

Hi Ulrich,

> Sorry, but this an absolute no-go! A Pin may never be configured as 
> push-pull output without extra user intervention. So _OUTPUT ever only 
> sets open-collector mode!

I fully understand your point, but anyway I do not agree to you! This
would break any existing Nut/OS application as GPIO_CFG_OUTPUT is
traditionally used in push/pull mode.

Next problem is that several architectures do not support open drain
mode at all (natively). Most prominent AVR. They default to push/pull
mode and Nut/OS users are used to this behaviour.

> Next topic is the naming:
> MULTIDRIVE is not an exact name. Any open-source/open-collector bus is 
> capable of multiple masters driving the bus. What we try to tell is, 
> that the pin is of high impedance in that case, so not driving high, nor 
> low. This is _HIGHZ (high impedance)
> Please delete _MULTIDRIVE it is misleading.

It seems that there are different views what MULTIDRIVE is. Most vendors
define MULTIDRIVE as "Open drain". So I decided to rename the flag as
GPIO_CFG_OPEN_DRAIN in my proposal.




Thermotemp GmbH, Embedded-IT

Embedded Hard-/ Software and Open Source Development, 
Integration and Consulting


Geschäftsstelle Siegen - Steinstraße 67 - D-57072 Siegen - 
tel +49 (0)271 5513597, +49 (0)271-73681 - fax +49 (0)271 736 97

Hauptsitz - Hademarscher Weg 7 - 13503 Berlin
Tel +49 (0)30 4315205 - Fax +49 (0)30 43665002
Geschäftsführer: Jörg Friedrichs, Ole Reinhardt
Handelsregister Berlin Charlottenburg HRB 45978 UstID DE 156329280 

More information about the En-Nut-Discussion mailing list