Guten morgen
Es gibt einige Unterschiede zum PCF8574. Arbeite im Moment vollkommen ohne INT.
i2c.writeto(MCP_Address, bytearray(confA)) # Port A als Ausgang
Das in meinen Augen falsch du schreibst nur eine 1 in das Register wenn ich das noch richtig weiß muss da ein F rein wenn alle Pins Inputs sein sollen am Port a oder b oder halt das bit musster das deine Taster beschreibt.
Habe eso im Code:
# Achtung Angabe der Pins in Hex
confA = [MCP_IODIRA, 0x00] # Steuert die Richtung der Daten am Port A, 0 Ausgang, 1 Eingang
confB = [MCP_IODIRB, 0xff] # Steuert die Richtung der Daten am Port B, 0 Ausgang, 1 Eingang
confC = [MCP_GPPUB, 0xff] # Schaltet Pull-up-Widerstände für Port B auf 5V
confD = [MCP_GPIOB, 0xff] # Spiegelt den Wert am Anschluss B wider
i2c.writeto(MCP_Address, bytearray(confA)) # Port A als Ausgang
i2c.writeto(MCP_Address, bytearray(confB)) # Port B als Eingang
i2c.writeto(MCP_Address, bytearray(confC)) # Schaltet Pull-up-Widerstände für Port B auf 5V
i2c.writeto(MCP_Address, bytearray(confD)) # Spiegelt den Wert am Anschluss B wider.
Habe durch messen der Eingänge festgestellt das die 5V nicht anliegen. Nach Suche im DB habe ich festgestellt das die Angaben in HEX sein müssen. Dadurch kann man an einem Port auch eine gemischte Anordnung machen.
Das Auslesen des Ports ist doch drin:
confD = [MCP_GPIOB, 0xff] # Spiegelt den Wert am Anschluss B wider
MCP_GPIOB = 0x13 # Spiegelt den Wert am Anschluss B wider.
i2c.writeto(MCP_Address, bytearray(confD)) # Spiegelt den Wert am Anschluss B wider.
Es liegt jetz 5V an allen Pins von B, die Taster schalten die Ports nach GND.
Damit sehe ich das ein Pins geschaltet wird. Leider funktioniert die Auswertung nicht wie sie soll.