-
2x I²C PCF8574
Hallo,
Ich habe 1. I2C mit dem Taster und LED erfolgreich gesteuert. Nun möchte ich 2. I2C einbauen. Ich möchte LED auf 2. I2C zum Leuchten bringen, wenn ich Taster auf 1. I2C drücke. Irgendwie geht nicht.
Bild hier
Code:
' IC1 PCF8574
' *-----------*
' GND -> -|A0 P VCC|- <- +5V
' GND -> -|A1 C SDA|- <-> SDA/Atmega8
' GND -> -|A2 F SDL|- <-> SCL/Atmega8
' +5V-Taster -> -|P0 8 INT|-
' -|P1 5 P7|-
' -|P2 7 P6|-
' -|P3 4 P5|-
' GND -> -|GND P4|-
' *-----------*
' IC2 PCF8574
' *-----------*
' +5V -> -|A0 P VCC|- <- +5V
' GND -> -|A1 C SDA|- <-> SDA/Atmega8
' GND -> -|A2 F SDL|- <-> SCL/Atmega8
' -|P0 8 INT|-
' -|P1 5 P7|-
' -|P2 7 P6|-
' -|P3 4 P5|-
' GND -> -|GND P4|- -> [1K]-BC547-[1K]-[LED rot ]-GND
' *-----------*
$regfile = "m8def.dat"
Config Sda = Portc.4
Config Scl = Portc.5
Dim X As Byte
I2cstart
I2cwbyte &B01000010 'IC2 PCF8574
I2cwbyte &B00000000 'IC2 Ports auf Low setzen
I2cstop
Do
I2cstart
I2cwbyte &B01000001 'IC1 PCF8574
I2crbyte X , Nack 'IC1 P0 abfragen
I2cstop
If X = 1 Then 'IC1 P0 auf High
I2cstart
I2cwbyte &B01000010 'IC2 PCF8574
I2cwbyte &B00010000 'IC2 P4 auf High setzen
I2cstop
Else 'IC1 P0 auf Low
I2cstart
I2cwbyte &B01000010 'IC2 PCF8574
I2cwbyte &B00000000 'IC2 P4 auf Low setzen
I2cstop
End If
Loop
-
Hallo,
zum lesen eines Einganges beim PCF muss man erst alle (bzw. das gewünschte) Bits setzen, also &HFF an ihn senden, als wenn man alle Ausgänge auf high setzen würde, dann muss der Taster nach Gnd Schalten, damit man ihn als low abfragen kann.
Wenn beim Lesen des Eingangs eine 1 raus kommt, ist der Schalter nicht betätigt.
-
Ahh, danke.
Ich habe vergessen, einzugeben "I2cwbyte &B01000000"
Jetzt funktioniert es.