If I understand correctly, few microcontrollers offer internal pull down resistors on their input pins but almost all allow for internal pull up resistors to be configured.
Why exactly is that ?
I understand that for a push button scenario, we can implement logic to interpet
- 0V = ON (button pressed)
- 5V or disconnected = OFF (button not pressed, internal pull up activated)
But what if the input is coming from an external system that you cannot control where the following logic needs to be implemented
- external system is not connected (floating) on the input : should translate to OFF
- external system is providing 0V on the input : should translate to OFF
- external system is providing 5V on the input : should translate to ON
In this case you need some kind of active-high setup, but for that the internal pull up gets in the way (as a floating value should not be considered HIGH).
Wouldn't it be useful in such a case to have an internal pull down resistor on the input ?
I could implement this by disabling the internal pull up and use an external pull down resistor by connecting the input to GND via the pulldown.
But can this also be achieved in some way without using an external pull down ?