JensB
19.09.2004, 01:22
Hallo miteinander,
ich habe folgendes vor:
Ein PCF 8574AP soll die Datensignale von 8 IR Sensoren an die C-Conrol 1
weitergeben, damit diese diverse Steuerungsaufgaben übernehmen kann.
Mein Problem dabei:
Ich weiß nicht genau wie das geht.
Was ich bereits weiß:
Ich weiß bereits, daß der PCF 8574 die Basisadresse 112 hat.
Was ich nicht weiß ist, wie ich die Portzustände des PCF 8574 in eine Bytevariable packe, so daß ich zB. mit einer Anweisung "if Byte=255 then portX = 1 etwas schalten könnte.
Ich habe mir berits folgendes Listing durchgelesen, kriege es mit einer modifizierten Version davon nicht hin.
' --- Definitionen --------------------
define SDA port[1]
define SCL port[2]
define Daten byte
define Zaehler byte
define N byte
' --- Programmoperationen -------------
SDA = ON
SCL = ON
#Loop
for Zaehler = 0 to 255
gosub Start
Daten = 112 'Adresse PCF8574
gosub I2C_Write
Daten = Zaehler
gosub I2C_Write
gosub Stop
gosub Start
Daten = 113 'PCF8574, Lesen
gosub I2C_Write
gosub I2C_Read
print Daten
gosub NoAck
gosub Stop
next
goto Loop 'Endlosschleife
#Start
SDA = OFF
SCL = OFF
return
#Stop
SDA = OFF
SCL = ON
SDA = ON
return
#I2C_WRITE
for N = 1 to 8
SDA= OFF
if (Daten AND 128) = 128 then SDA = ON
pulse SCL
Daten = Daten shl 1 '1 Bit nach links
next
pulse SCL ' 9. Impuls
return
#I2C_Read
Daten = 0
deact SDA ' SDA = Eingang
for N = 1 to 8
Daten = Daten shl 1 '1 Bit nach links
SCL = ON
if SDA then Daten = Daten + 1
SCL = OFF
next
return
#Ack
SDA = 0
pulse SCL
return
#NoAck
SDA = 1
pulse SCL
return
end
Ich habe bei diesem Listing versucht die Teile die für den Schreibvorgang notwendig sind wegzulassen, da ich diese für meine Problemstellung ja nicht benötige(glaube ich).
Wäre toll von Euch wenn mir jemand helfen könnte ein Listing zu schreiben, daß wie gesagt nur die 8 Portzustände des PCF in eine Bytevariable packt, so daß ich diese verwerten kann.
Live long and prosper
Jens
ich habe folgendes vor:
Ein PCF 8574AP soll die Datensignale von 8 IR Sensoren an die C-Conrol 1
weitergeben, damit diese diverse Steuerungsaufgaben übernehmen kann.
Mein Problem dabei:
Ich weiß nicht genau wie das geht.
Was ich bereits weiß:
Ich weiß bereits, daß der PCF 8574 die Basisadresse 112 hat.
Was ich nicht weiß ist, wie ich die Portzustände des PCF 8574 in eine Bytevariable packe, so daß ich zB. mit einer Anweisung "if Byte=255 then portX = 1 etwas schalten könnte.
Ich habe mir berits folgendes Listing durchgelesen, kriege es mit einer modifizierten Version davon nicht hin.
' --- Definitionen --------------------
define SDA port[1]
define SCL port[2]
define Daten byte
define Zaehler byte
define N byte
' --- Programmoperationen -------------
SDA = ON
SCL = ON
#Loop
for Zaehler = 0 to 255
gosub Start
Daten = 112 'Adresse PCF8574
gosub I2C_Write
Daten = Zaehler
gosub I2C_Write
gosub Stop
gosub Start
Daten = 113 'PCF8574, Lesen
gosub I2C_Write
gosub I2C_Read
print Daten
gosub NoAck
gosub Stop
next
goto Loop 'Endlosschleife
#Start
SDA = OFF
SCL = OFF
return
#Stop
SDA = OFF
SCL = ON
SDA = ON
return
#I2C_WRITE
for N = 1 to 8
SDA= OFF
if (Daten AND 128) = 128 then SDA = ON
pulse SCL
Daten = Daten shl 1 '1 Bit nach links
next
pulse SCL ' 9. Impuls
return
#I2C_Read
Daten = 0
deact SDA ' SDA = Eingang
for N = 1 to 8
Daten = Daten shl 1 '1 Bit nach links
SCL = ON
if SDA then Daten = Daten + 1
SCL = OFF
next
return
#Ack
SDA = 0
pulse SCL
return
#NoAck
SDA = 1
pulse SCL
return
end
Ich habe bei diesem Listing versucht die Teile die für den Schreibvorgang notwendig sind wegzulassen, da ich diese für meine Problemstellung ja nicht benötige(glaube ich).
Wäre toll von Euch wenn mir jemand helfen könnte ein Listing zu schreiben, daß wie gesagt nur die 8 Portzustände des PCF in eine Bytevariable packt, so daß ich diese verwerten kann.
Live long and prosper
Jens