another ds1307 question

I recently received some of the cheap tiny rtc modules with the DS1307 and eeprom and although i have managed to connect it to the i2c ok and program it with the rtc wizard i am having problems displaying the date so i am obviously doing something wrong or stupid. The time displays correctly on the top line but the date is not correct where am i wrong is it because i use the variables twice ?
Code:
[color=Green];08M2 code
; AXE033 oled display
;Tiny RTC module[/color]
[color=Blue]symbol [/color][color=Purple]secs     [/color][color=DarkCyan]= [/color][color=Purple]b0[/color]
[color=Blue]symbol [/color][color=Purple]mins     [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Purple]hour     [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]dow      [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]
[color=Blue]symbol [/color][color=Purple]day      [/color][color=DarkCyan]= [/color][color=Purple]b4 [/color]
[color=Blue]symbol [/color][color=Purple]month    [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color]
[color=Blue]symbol [/color][color=Purple]year     [/color][color=DarkCyan]= [/color][color=Purple]b6 [/color]
[color=Blue]symbol [/color][color=Purple]century  [/color][color=DarkCyan]= [/color][color=Purple]b7[/color]
[color=Blue]symbol [/color][color=Purple]control  [/color][color=DarkCyan]= [/color][color=Purple]b8 

  [/color][color=Blue]hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11010000[/color][color=Black], [/color][color=Blue]i2cslow[/color][color=Black], [/color][color=Blue]i2cbyte
serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])
do
      hi2cin [/color][color=Navy]0[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b0[/color][color=Black], [/color][color=Purple]b1[/color][color=Black], [/color][color=Purple]b2[/color][color=Black], [/color][color=Purple]b4[/color][color=Black], [/color][color=Purple]b5[/color][color=Black], [/color][color=Purple]b6[/color][color=Blue]) [/color][color=Green];read sec, min, hour
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Green];serout c.0, n2400, (254,1)
      [/color][color=Blue]pause [/color][color=Navy]30
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Blue])
      serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Black],[/color][color=Red]":"[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Red]":"[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Blue]) [/color][color=Green];output time
      [/color][color=Blue]pause [/color][color=Navy]100 [/color][color=Green];wait for LCD to print
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]192[/color][color=Blue])
      serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Black],[/color][color=Red]"."[/color][color=Black], [/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Red]"."[/color][color=Black], [/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Blue]) [/color][color=Green];output date
      [/color][color=Blue]pause [/color][color=Navy]30[/color]
[color=Blue]loop[/color]
 

oracacle

Senior Member
the data is read seqentially, just because you havent put in the Day of the week variable doenst mean it isnt read (it will be read inot b4 in your case), add that variable into the read shold resolve the issue (did in PE6 simulator), or you will have to add a seperate read to start at address 4.

You can display day of week by running a lookup table for letters needed

heres my code, see the b3 in the read of the RTC

Code:
[color=Green];08M2 code
; AXE033 oled display
;Tiny RTC module[/color]
[color=Blue]symbol [/color][color=Purple]secs     [/color][color=DarkCyan]= [/color][color=Purple]b0[/color]
[color=Blue]symbol [/color][color=Purple]mins     [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Purple]hour     [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]dow      [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]
[color=Blue]symbol [/color][color=Purple]day      [/color][color=DarkCyan]= [/color][color=Purple]b4 [/color]
[color=Blue]symbol [/color][color=Purple]month    [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color]
[color=Blue]symbol [/color][color=Purple]year     [/color][color=DarkCyan]= [/color][color=Purple]b6 [/color]
[color=Blue]symbol [/color][color=Purple]century  [/color][color=DarkCyan]= [/color][color=Purple]b7[/color]
[color=Blue]symbol [/color][color=Purple]control  [/color][color=DarkCyan]= [/color][color=Purple]b8 

  [/color][color=Blue]hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11010000[/color][color=Black], [/color][color=Blue]i2cslow[/color][color=Black], [/color][color=Blue]i2cbyte
serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])
do
      hi2cin [/color][color=Navy]0[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b0[/color][color=Black], [/color][color=Purple]b1[/color][color=Black], [/color][color=Purple]b2[/color][color=Black], [/color][color=Purple][B]b3[/B][/color][color=Black], [/color][color=Purple]b4[/color][color=Black], [/color][color=Purple]b5[/color][color=Black], [/color][color=Purple]b6[/color][color=Blue]) [/color][color=Green];read sec, min, hour
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Green];serout c.0, n2400, (254,1)
      [/color][color=Blue]pause [/color][color=Navy]30
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Blue])
      serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Black],[/color][color=Red]":"[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Red]":"[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Blue]) [/color][color=Green];output time
      [/color][color=Blue]pause [/color][color=Navy]100 [/color][color=Green];wait for LCD to print
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]192[/color][color=Blue])
      serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Black],[/color][color=Red]"."[/color][color=Black], [/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Red]"."[/color][color=Black], [/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Blue]) [/color][color=Green];output date
      [/color][color=Blue]pause [/color][color=Navy]30[/color]
[color=Blue]loop[/color]
 

neiltechspec

Senior Member
Above post beat me to it.

You missed out b3 !

An example, using OLED/LCD on C.4.

Code:
#rem

I2C DS1307 / DS3231 RTC set / test program
Note. the data to/from RTC is in BCD format
2400,8,N,1 OLED / LCD on pin c.4

HIT PROGRAM 20 SEC BEFORE ACTUAL TIME

#endrem

#picaxe 08M2
#no_data
#terminal 4800

symbol baud = N2400
symbol oled = C.4
symbol seconds = b0
symbol mins = b1
symbol hour = b2
symbol day = b3
symbol date = b4
symbol month = b5
symbol year = b6
symbol control = b7
symbol temp = b8

init:
	hi2csetup i2cmaster, %11010000, i2cslow, i2cbyte ;set RTC slave address
	
	pause 1000
	
	serout oled,baud,(254,1)
	pause 50


;uncomment the line below to update the clock time

;goto set_clock


main:	;read time and date, send to display
	do
	
	hi2cin 0,(seconds,mins,hour,day,date,month,year)
	
	bcdtoascii seconds,b10,b11
	bcdtoascii mins,b12,b13
	bcdtoascii hour,b14,b15
	bcdtoascii date,b16,b17
	bcdtoascii month,b18,b19
	bcdtoascii year,b20,b21
	
	select case day		;converts 'day' variable to day of week for display
	 case 1 serout oled,baud,(254,128," Mon")
	 case 2 serout oled,baud,(254,128," Tue")
	 case 3 serout oled,baud,(254,128," Wed")
	 case 4 serout oled,baud,(254,128," Thu")
	 case 5 serout oled,baud,(254,128," Fri")
	 case 6 serout oled,baud,(254,128," Sat")
	 case 7 serout oled,baud,(254,128," Sun")
	endselect
	serout oled,baud,(254,133,b16,b17,"-",b18,b19,"-20",b20,b21) ;positioned for 20X4 or
	serout oled,baud,(254,193,b14,b15,":",b12,b13,":",b10,b11)	 ;16X2 char display
	
	calibadc10 w2
	w2 = 10486/w2
	bintoascii w2,b6,b7,b8
	
	serout C.4,baud,(254,203,b7,".",b8,"v")

	pause 900
	
	loop
	
set_clock:				;write time and date e.g. 08:52:00 on Sat 01/03/14
					;Monday is day 1, Sunday is day 7
	let seconds = $00		;00 secs
	let mins    = $52		;52 mins
	let hour    = $08		;08 hours
	let day     = $06		;06 day of week
	let date    = $01		;01 day
	let month   = $03		;03 month
	let year    = $14		;14 year
 	let control = %00010000 ;Enable output at 1Hz

	hi2cout 0,(seconds,mins,hour,day,date,month,year,control)

	goto main
Neil
 

oracacle

Senior Member
you can make some other changes to the code as well, the display output can be done in single serouts for each, there is no need to send the start position seperate from the data, symbolising a little more and actually using the symbols also help to understand the code, you sould end up with something like this, you could symbolise the the tempory byte storing the bcdtoascii results too

Code:
[color=Green];08M2 code
; AXE033 oled display
;Tiny RTC module[/color]
[color=Blue]symbol [/color][color=Purple]secs     [/color][color=DarkCyan]= [/color][color=Purple]b0[/color]
[color=Blue]symbol [/color][color=Purple]mins     [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Purple]hour     [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]dow      [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]
[color=Blue]symbol [/color][color=Purple]day      [/color][color=DarkCyan]= [/color][color=Purple]b4 [/color]
[color=Blue]symbol [/color][color=Purple]month    [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color]
[color=Blue]symbol [/color][color=Purple]year     [/color][color=DarkCyan]= [/color][color=Purple]b6 [/color]
[color=Blue]symbol [/color][color=Purple]century  [/color][color=DarkCyan]= [/color][color=Purple]b7[/color]
[color=Blue]symbol [/color][color=Purple]control  [/color][color=DarkCyan]= [/color][color=Purple]b8 [/color]

[color=Blue]symbol com        [/color][color=DarkCyan]= [/color][color=Navy]44        [/color][color=Green]',[/color]
[color=Blue]symbol colon      [/color][color=DarkCyan]= [/color][color=Navy]58[/color]
[color=Blue]symbol stp        [/color][color=DarkCyan]= [/color][color=Navy]46

  [/color][color=Blue]hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11010000[/color][color=Black], [/color][color=Blue]i2cslow[/color][color=Black], [/color][color=Blue]i2cbyte
serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])
do
      hi2cin [/color][color=Navy]0[/color][color=Black], [/color][color=Blue]([/color][color=Purple]secs[/color][color=Black], [/color][color=Purple]mins[/color][color=Black], [/color][color=Purple]hour[/color][color=Black], [/color][color=Purple]dow[/color][color=Black], [/color][color=Purple]day[/color][color=Black], [/color][color=Purple]month[/color][color=Black], [/color][color=Purple]year[/color][color=Blue]) [/color][color=Green];read sec, min, hour
      [/color][color=Blue]bcdtoascii [/color][color=Purple]secs[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]mins[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]hour[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Green];serout c.0, n2400, (254,1)
      [/color][color=Blue]pause [/color][color=Navy]30
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Black],[/color][color=Blue]colon[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Blue]colon[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Blue]) [/color][color=Green];output time
      [/color][color=Blue]pause [/color][color=Navy]100 [/color][color=Green];wait for LCD to print
      [/color][color=Blue]bcdtoascii [/color][color=Purple]day[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25
      [/color][color=Blue]bcdtoascii [/color][color=Purple]month[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23
      [/color][color=Blue]bcdtoascii [/color][color=Purple]year[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21
      [/color][color=Blue]serout c.0[/color][color=Black], [/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]192[/color][color=Black],[/color][color=Purple]b26[/color][color=Black],[/color][color=Purple]b25[/color][color=Black],[/color][color=Blue]stp[/color][color=Black],[/color][color=Purple]b24[/color][color=Black],[/color][color=Purple]b23[/color][color=Black],[/color][color=Blue]stp[/color][color=Black],[/color][color=Purple]b22[/color][color=Black],[/color][color=Purple]b21[/color][color=Blue]) [/color][color=Green];output date
      [/color][color=Blue]pause [/color][color=Navy]30[/color]
[color=Blue]loop[/color]
 
Top