Problem in reading the 2nd data from pcf8563 real time clock by i2c

AI Thread Summary
The discussion centers on an issue with reading the second data byte from the PCF8563 real-time clock via I2C, where a restart condition is seemingly required to access the second byte. The user notes that the datasheet suggests continuous data transfer without needing a restart, leading to confusion about their implementation. Participants question the necessity of the restart and suggest reading both data bytes sequentially without interruption. The user seeks clarification on whether there is an error in their code that prevents reading the second byte without a restart. The conversation emphasizes the importance of understanding I2C communication protocols in relation to the specific behavior of the PCF8563.
lolkc2
Messages
3
Reaction score
0
Suppose the 2nd data can be read after the first data, but i need to restart the condition the only can read the 2nd data. By that, i have read the slave address again before the 2nd data has been read. So how should i solve it?
 
Engineering news on Phys.org
lolkc2 said:
Suppose the 2nd data can be read after the first data, but i need to restart the condition the only can read the 2nd data. By that, i have read the slave address again before the 2nd data has been read. So how should i solve it?

Welcome to the PF.

Why do you need to restart anything? Can't you just read the two data bytes out in order? Can you describe the problem in a bit more detail?

PCF8563 RTC I2C Slave datasheet -- http://www.nxp.com/documents/data_sheet/PCF8563.pdf:smile:
 
Last edited:
;/**
; * EXP 1
; *
; * This program displays the character '0' on one
; * of the seven segment displays.
; */

list p = 18f4520

include "p18f4520.inc"

CONFIG OSC = INTIO67
CONFIG PWRT = ON
CONFIG WDT = OFF
CONFIG DEBUG = ON, LVP = OFF

WriteSlaveAddr EQU b'10100010'
ReadSlaveAddr EQU b'10100011'
SecsAddr EQU 0x02
SecsData EQU b'01010000'
MinsAddr EQU 0x03
MinsData EQU b'01011001'
HoursAddr EQU 0x04
HoursData EQU b'00000010'

ORG 0

start
clrf TRISC
bsf TRISC,3
bsf TRISC,4

;/BAUD RATE
movlw b'00001001'
movwf SSPADD
nop
nop

;/SLEW RATE CONTROL
movlw b'00000000'
movwf SSPSTAT
nop
nop

;/ENABLE SERIAL PORT
movlw b'00101000'
movwf SSPCON1
nop
nop

;SET TIME
call i2c_start
movlw WriteSlaveAddr
call i2c_send
call check_ack
movlw SecsAddr
call i2c_send
call check_ack
movlw SecsData
call i2c_send
call check_ack
movlw MinsData
call i2c_send
call check_ack
movlw HoursData
call i2c_send
call check_ack
call i2c_restart
movlw WriteSlaveAddr
call i2c_send
call check_ack
movlw SecsAddr
call i2c_send
call check_ack
call i2c_restart
movlw ReadSlaveAddr
call i2c_send
call check_ack
call receive_mode
; call i2c_restart
call i2c_send
call check_ack
call receive_mode
; call i2c_restart
call i2c_send
call check_ack
call receive_mode
call send_nack
call i2c_stop

;/START CONDITION
i2c_start
bsf SSPCON2,SEN
call check
nop
nop
return

;/I2C SEND
i2c_send
movwf SSPBUF
call check
nop
nop
return

;/STOP CONDITION
i2c_stop
bsf SSPCON2,PEN
call check
nop
nop
bz ending
return

;/INTERRUPT
check
btfss PIR1,SSPIF
goto check
bcf PIR1,SSPIF
nop
nop
return

check_ack
btfsc SSPCON2,ACKSTAT
goto i2c_fail
nop
nop
return

i2c_restart
bsf SSPCON2,RSEN
call check
nop
nop
return

send_nack
bsf SSPCON2,ACKDT
bsf SSPCON2,ACKEN
call check
nop
nop
return

receive_mode
bsf SSPCON2,RCEN
call check
nop
nop
return

i2c_fail
call i2c_stop

ending
bra ending


END
 
This is my code. If i didn't add the restart condition, the 2nd data cannot be read. But the data sheet mention that the data can be transfer continuous without any restart. So I need to figure out the problem. Is it any problem in my code?
 
Hi all, I have a question. So from the derivation of the Isentropic process relationship PV^gamma = constant, there is a step dW = PdV, which can only be said for quasi-equilibrium (or reversible) processes. As such I believe PV^gamma = constant (and the family of equations) should not be applicable to just adiabatic processes? Ie, it should be applicable only for adiabatic + reversible = isentropic processes? However, I've seen couple of online notes/books, and...
Thread 'How can I find the cleanout for my building drain?'
I am a long distance truck driver, but I recently completed a plumbing program with Stratford Career Institute. In the chapter of my textbook Repairing DWV Systems, the author says that if there is a clog in the building drain, one can clear out the clog by using a snake augur or maybe some other type of tool into the cleanout for the building drain. The author said that the cleanout for the building drain is usually near the stack. I live in a duplex townhouse. Just out of curiosity, I...
I have an engine that uses a dry sump oiling system. The oil collection pan has three AN fittings to use for scavenging. Two of the fittings are approximately on the same level, the third is about 1/2 to 3/4 inch higher than the other two. The system ran for years with no problem using a three stage pump (one pressure and two scavenge stages). The two scavenge stages were connected at times to any two of the three AN fittings on the tank. Recently I tried an upgrade to a four stage pump...

Similar threads

Replies
8
Views
1K
Replies
26
Views
2K
Replies
10
Views
3K
Replies
5
Views
3K
Replies
2
Views
2K
Replies
95
Views
7K
Back
Top