ElEspanol:
Da sagen die hier aber was ganz anderes:
https://www.mikrocontroller.net/articles/Port-Expander_PCF8574
Ich spreche nicht von MCP23008
Ja, Du hast recht daß die dort das sagen. Ich glaube aber die sagen da was falsches, unvollkommenes, ungenaues.
Wie Tommy56 bereits gesagt hat und ein Datenblatt von TI zitiert, zitiere ich jetzt eines von NXP:
Vereinfachtes Schaltbild FIG2 auf Seite 3:
Da ist ein Totem Pole Ausgang mit einem zuschaltbaren 100µA Konstantstrom "Pullup Widerstand".
Beschreibung Kapitel 8.1 Seite 6 ff:
Better for driving LEDs since the p-channel (transistor to VDD) is small, which saves die size and therefore cost. LED drive only requires an internal transistor to ground, while the LED is connected to VDD through a current-limiting resistor. Totem pole I/O have both n-channel and p-channel transistors, which allow solid HIGH and LOW output levels without a pull-up resistor — good for logic levels.
Die beiden Transistoren des Totem Pole Ausgangs sind unsymetrisch; Der auf Masse schaltet verträgt mehr Strom als der nach Vcc schaltet. Deshalb wird angesraten LEDS zwischen Vcc und Ausgang zu schalten und nicht zwischen Ausgang und Masse.
In 10.3 Seite 14:
The GPIO has a minimum guaranteed sinking current of 10 mA per bit at 5 V.
Dann weiter auf Seite 16:
IOL LOW-level output current VOL=1V; VDD=5V min:10 typ 25-mA
IOH HIGH-level output current VOH=VSS min: 30µ max:300µA
Itrt(pu) transient boosted pull-up current HIGH during acknowledge (see Figure 8 ); VOH=VSS; VDD=2.5V typ -1mA
Vieleicht hat der geringe Strom bei HIGH, mit dem man kein LED zum leuchten bringt, den Autor bei mikrocontroller.net verleitet, anzunehmen daß der Ausgang ein Open Collektor (genau gesagt aber ein Open DRAIN) Ausgang sei.
Wegen des geringen, begrenzten HIGH Strom kann man den Ausgang als Open Collektor bzw Open Drain annehmen wenn man mehrere Ausgänge zusammenschalten will. Das gilt aber nicht in allen Fällen.
Ok, ElEspanol im konkreten Fall würde man wahrscheinlich den PCF8574 verwenden können. Meine Unsicherheit ist dadurch bedingt, daß während des Acknowledge ein Strom von 1mA in den Eingang fließen kann (Ausgang auf LOW) und dies als doppelte Tastenbetätigung interpretiert werden könnte.
Grüße Uwe