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

Click For 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?
 
What mathematics software should engineering students use? Is it correct that much of the engineering industry relies on MATLAB, making it the tool many graduates will encounter in professional settings? How does SageMath compare? It is a free package that supports both numerical and symbolic computation and can be installed on various platforms. Could it become more widely used because it is freely available? I am an academic who has taught engineering mathematics, and taught the...

Similar threads

  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 26 ·
Replies
26
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
Replies
7
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 8 ·
Replies
8
Views
938
  • · Replies 2 ·
Replies
2
Views
3K