PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2x I²C PCF8574



DEAF BOY
03.09.2007, 17:17
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.

http://img210.imageshack.us/img210/785/i2cvx6.th.jpg (http://img210.imageshack.us/my.php?image=i2cvx6.jpg)


' 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

linux_80
03.09.2007, 18:17
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.

DEAF BOY
03.09.2007, 19:01
Ahh, danke.

Ich habe vergessen, einzugeben "I2cwbyte &B01000000"

Jetzt funktioniert es.