Hallo, wir versuchen mit dem uP C-509 über I2C-Bus den Baustein PCF 8574 anzusteuern und zu beschreiben. Das Datenblatt besagt, dass die Mindestbetriebsspannung 2.5V sein muss, damit das IC nicht rückgesetzt wird. An allen I/O-Ports werden dann logische 1 ausgegeben, so wie bei unserem IC. Wir aber geben eine Spannung von 5V auf das IC. Was machen wir falsch? MFG Patrick
Sorry, meine Glaskugel ist zur Reparatur, deswegen würde ich sagen poste mal Deinen Quellcode. Ich habe vor Kurzem erst mit dem Teil hantiert, allerdings in Verbindung mit einem 8051 (AT89C2051) und hatte keine Probleme damit... Gruß, Holm
>Was machen wir falsch? Die Polung der Spannung ist auch noch wichtig... >Was machen wir falsch? Das Fragestellen?!
Das ist der Quellcode, mit dem wir versuchten, das IC anzusprechen
MOV slaveadress,# 01000000b
MOV daten,# 10101010b
START: CALL startc
MOV a,slaveadress
CALL send
nop
nop
MOV A,daten
CALL stop
JMP START
;***********************************************************************
*
; Ports Used for I2C Communication
;***********************************************************************
*
sda equ P1.7
scl equ P1.6
slaveadress equ 30h
daten equ 31h
;***********************************************************************
*
; Start Condition for I2C Communication
;***********************************************************************
*
startc: clr scl
setb sda
nop
nop
setb scl
nop
nop
clr sda
ret
;***********************************************************************
*
; Stop Condition For I2C Bus
;***********************************************************************
*
stop:
nop
nop
clr sda
setb scl
nop
nop
setb sda
nop
nop
clr scl
ret
;***********************************************************************
*
; Sending Data to slave on I2C bus
; with Acknowledgement
;***********************************************************************
*
send:
mov r7,#08
back:
clr scl
nop
nop
nop
rlc a
mov sda,c
setb scl
nop
nop
nop
clr scl
nop
nop
nop
djnz r7,back
setb sda
setb scl
nop
nop
nop
nop
clr scl
nop
nop
nop
ret
;***********************************************************************
*
; Receiving Data from slave on I2C bus
; with Acknowledgement
;***********************************************************************
*
recv:
mov r7,#08
back2:
setb sda
setb scl
nop
nop
nop
mov c,sda
rlc a
clr scl
nop
nop
nop
djnz r7,back2
setb sda
clr scl
nop
nop
nop
clr sda
setb scl
nop
nop
nop
clr scl
nop
nop
nop
mov @r0,a
inc r0
ret
END
Ohne jetzt zu wissen, was eigentlich nicht geht, fällt mir nur slaveadress equ 30h auf. Wenn das die I2C-Slaveadresse des Buasteins sein soll, fühlt sich da weder ein 8574 noch ein 8574A angesprochen. Der 8547 braucht 40h (wenn die drei Adressbits auf Null gelötet wurden), ein 8547 A reagiert bei gleicher Verschaltung auf 70h. Näheres dazu findet sich im Datenblatt. Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.