I2C und PCF waren genau diee Stichworte welche gefehlt hatten.


Um den PCF8574 als Eingang zu verwenden muss folgendes geschehen:

Die Pins, welche als Eingang funktionieren sollen müssen zunächst mit einem Komando auf Hi gesetzt werden.
Der PCF kann dann feststellen ob dieser Pin auf LOW gezogen wird, sonst klappt das nicht.


Also erst mal einen Befehl senden, welcher den Port auf HI setzt:
dann Abfragen und nachsehen welcher Pin Low ist.
Code:
I2csend _adr , &B10000001 ' den PCF8574 stellen 1. und letzter Bit
Diese Art nennt man dann open Drain

Wenn man jetzt den PCF abfragt, erhält man den Wert 128.
Wird das Bit 7 gegen Masse geschaltet erhält man den Wert 1 (da ja nur Bit0 Hi ist),
Wird das Bit 1 gegen masse geschaltet erhält man den Wert 127 (da ja Nur Bit7 Hi ist),
und wenn beide ggen Masse geschaltet werden erhätman was? Ja "0".


Du erhält immer den Status des gesamten Bausteines,

Willst Du nur bestimmte Pins afragen, ohne die anderen berücksichtigen must Du vorher mit einer AND entsprechend Maskieren.
Du Willst also z.B. nur die unteren vier Bit abfragen Maskiest Du mit
&B0000111 AND Port_var (In Port_var ist das Ergebnis deiner Protabfrage gespeichert)

Das ganze ist in meiner Dokumentation zu meinem ProtobedApplication Board schön imBeispielcode erklärt und daher will ich es jetzt nicht nochmal schreiben.

https://www.roboternetz.de/phpBB2/ze...rag.php?t=5601



Zum Anschluss eines DFÜ-Gerätes (Funkmoden oder sonstigem) ist das natürlich nicht praktikabel, da zu langsam.
Aber um z.B. Taster abzufragen ist es sehr Portsparend.

Lies Dir meine Anleitung einfach mal durch.