Re: [bascom] DS1307


From Lynndon Harnell <lynndonh@ecn.net.au>
Date Thu, 14 Jun 2001 17:41:56 +1000

Hi there

The following subs may be of use to you. All variables are dimensioned as bytes.

Regards
Lynndon Harnell


Sub Settime(day , Month , Year , Hour , Minute , Second)
I2cstart
I2cwbyte &HD0                             'slave address 1101000 + R/W 0=write
I2cwbyte &H0                              'Register address
Second = Makebcd(second)                  'bit7 CH low=OCS enabled
Minute = Makebcd(minute)
Hour = Makebcd(hour)                      'bit6 low=24hr mode
Day = Makebcd(day)
Month = Makebcd(month)
Year = Makebcd(year)
I2cwbyte Second
I2cwbyte Minute
I2cwbyte Hour
I2cwbyte &H1
I2cwbyte Day
I2cwbyte Month
I2cwbyte Year
I2cstop
End Sub

Sub Gettime (Timenow As String)
 I2cstart
 I2cwbyte &HD0                            'slave address+write bit set
 I2cwbyte &H0                             'Register address
 I2cstop
 I2cstart
 I2cwbyte &HD1                            'slave address+read bit set
 I2crbyte s, Ack
 I2crbyte m, Ack
 I2crbyte h, Ack
 I2crbyte Wd, Ack
 I2crbyte d, Ack
 I2crbyte mn, Ack
 I2crbyte y, Nack
 I2cstop
 Locate 1, 7
'Lcd format "25/09/00 12:00"
 Lcd Bcd(d) ; "/" ; Bcd(mn) ; "/" ; Bcd(y) ; " " ; Bcd(h) ; ":" ; Bcd(m)       ' ; ":" ; Bcd(s)
 Timenow = Bcd(h) + Bcd(m) + Bcd(s)
End Sub


At 13:32 14/06/2001 +0800, you wrote:
Thank you for all the help you people have given me on the DS1621....now I need help for the DS1307. :)
 
i2cstart
i2cwbyte &B11010000    'write mode
i2cwbyte &H00        'access seconds register
i2cwbyte &h00        'enable oscillator
i2cstop
 
i2cstart
i2cwbyte &b11010001     'read mode
i2crbyte secs, ack
i2crbyte mins, ack
i2crbyte hour, nack
i2cstop
 
lcd secs
lcd mins
lcd hour
 
Output= all 00!
What is wrong?
 

Lynndon Harnell