Using Pic as a digital clock/timer. How accurate?


Closed Thread
Results 1 to 19 of 19

Hybrid View

  1. #1
    Join Date
    Aug 2005
    Location
    Los angeles
    Posts
    39


    Did you find this post helpful? Yes | No

    Wink Happy New Year Acetronics

    Thanks guys for all the help and links. I found a chip that does all the hard work for me on top of that it is featured with 2 alarm settings.
    http://pdfserv.maxim-ic.com/en/ds/DS3232.pdf

    I will give it try and will see how it goes.
    Thanks again

  2. #2
    Join Date
    May 2006
    Location
    Del Rio, TX, USA
    Posts
    343


    Did you find this post helpful? Yes | No

    Default

    I've used the clock only version of the chip (a temp. compensated oscilattor) and can attest to it's accuracy. It was hard to get a hold of at the time, though supply might be better now.

    SteveB

  3. #3
    Join Date
    Aug 2005
    Location
    Los angeles
    Posts
    39


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by SteveB View Post
    I've used the clock only version of the chip (a temp. compensated oscilattor) and can attest to it's accuracy. It was hard to get a hold of at the time, though supply might be better now.

    SteveB
    Hello Steve,
    I am using the RTC DS3232 from dallas. you said you have used it before. Can you share your picbasic code? I am having trouble setting the time.
    when i read the time and date. I get them all as 4.
    Here is mine:
    'Using the pic 16f630

    include "modedefs.bas"
    define OSCCAL_1k 1
    CMCON=%0000011' Turn off comparator module


    minutes var byte
    hours var byte
    day var byte
    date var byte
    month var byte
    year var byte

    reset Var PORTC.0

    rtcyear var byte
    rtcday var byte
    rtcmonth var byte
    rtcdate var byte
    rtchour var byte
    rtcmin var byte
    rtcsec var byte

    ' Set initial time to 8:00:00AM 07/16/99
    rtcyear = $99
    rtcday = $06
    rtcmonth = $07
    rtcdate = $16
    rtchour = $08
    rtcmin =0
    rtcsec =0

    startbigNums con 2
    endBigNums con 3
    clrLCD CON 12
    backLightOn con 14
    backLightOff con 15
    cursorPos con 16
    enter con 10
    bell con 7
    b2 var byte
    CONTL CON %01101000


    Low reset 'reset the RTC
    input reset ' undo reset..basically it puts pin reset at high impedance

    'Set the time
    I2cwrite PORTC.2,PORTC.1,CONTL,$01,[rtcmin] 'minutes
    I2cwrite PORTC.2,PORTC.1,CONTL,$02,[rtchour]'hours
    I2cwrite PORTC.2,PORTC.1,CONTL,$03,[rtcday] 'day
    I2cwrite PORTC.2,PORTC.1,CONTL,$04,[rtcdate]'date
    I2cwrite PORTC.2,PORTC.1,CONTL,$05,[rtcmonth]'month
    I2cwrite PORTC.2,PORTC.1,CONTL,$06,[rtcyear] 'year


    pause 10
    'Low reset
    'input reset
    I2cread PORTC.2,PORTC.1,CONTL,$01,[minutes]
    I2cread PORTC.2,PORTC.1,CONTL,$02,[hours]
    I2cread PORTC.2,PORTC.1,CONTL,$03,[day]
    I2cread PORTC.2,PORTC.1,CONTL,$04,[date]
    I2cread PORTC.2,PORTC.1,CONTL,$05,[month]
    I2cread PORTC.2,PORTC.1,CONTL,$06,[year]

    serout2 0,16780,[clrLCD,"Time",hex hours,":",hex minutes,enter,_
    "date:",hex date,"/",hex month,"/",hex year]
    end

  4. #4
    Join Date
    May 2006
    Location
    Del Rio, TX, USA
    Posts
    343


    Did you find this post helpful? Yes | No

    Default

    Bad wording on my part. What I ment was that I have used one of the temperature compensated oscillators (the DS32kHz, not the DS3232 RTC) with other RTCs and as an input to the PIC timers, and they worked well. I'll have a glance at you code and the Datasheet to see if I can spot anything.

    With other DSXXXX RTCs, I have seen the need to set some of the registers to appropriate setting before things work correctly. So that is one place to start.

    I'll get back if I see anything.

    SteveB

  5. #5
    Join Date
    Sep 2004
    Location
    Mentor, Ohio
    Posts
    352


    Did you find this post helpful? Yes | No

    Smile

    Hi Rocky,

    I think your code is missing the clock register constants. I use the DS1337 RTC from Maxim. The code for this chip was posted here either in 2004 or 2005 by Tonigalea. This chip also has two alarms. The key to an accurate clock is as was mentioned before. But you must also use the correct crystal. The DS1337, for example, must have a crystal with a 12.5pf capacitance load. When you look in a parts catalog, DigiKey for example, look for the capacitance load for 32,768 crystals. They are around $.50 or less.

    We also just covered RTC's with jcleaver using a DS1307. It looked like he also didn't list the RTC register constants. I sent him a copy of a program for that RTC and he got that going.

    I would give a serious look at Paul Borgmeier's Easy Accurate Clock programs as they are very easy to work with and setting up user interface for alarms should be very easy also.

    You asked a questions about the timing that no one seemed to answer. The PIC generates an internal time base which is derived from the Oscillator of the PIC divided by 4 so if you are using a 4mHz crystal then you PIC clock runs at 1mHz. Then there are programmable timers in the PIC that can be set up to count pulses then interrupt the PIC program to advance the clock program and/or do tasks at a specified time.

    Hope this helps.

    BobK

  6. #6
    Join Date
    Aug 2005
    Location
    Los angeles
    Posts
    39


    Did you find this post helpful? Yes | No

    Default

    Bob,
    Can you specify what register constant i am missing? i look it up and i didn't see anything else i need to specify.Remember its the DS3232 i aim using so it might be slightly different than the other rtc's
    Please let me know

    thanks

  7. #7
    Join Date
    Aug 2005
    Location
    Los angeles
    Posts
    39


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by SteveB View Post
    Bad wording on my part. What I ment was that I have used one of the temperature compensated oscillators (the DS32kHz, not the DS3232 RTC) with other RTCs and as an input to the PIC timers, and they worked well. I'll have a glance at you code and the Datasheet to see if I can spot anything.

    With other DSXXXX RTCs, I have seen the need to set some of the registers to appropriate setting before things work correctly. So that is one place to start.

    I'll get back if I see anything.

    SteveB
    Thanks steve! let me know if you find anything unusual or wrong i n my code...Thanks again

  8. #8
    Join Date
    Sep 2004
    Location
    Mentor, Ohio
    Posts
    352


    Did you find this post helpful? Yes | No

    Smile

    Hi Rocky,

    Look on page 11 of the datasheet. The addresses in Hex and the register name under the function column are what you need. I have attached a listing example from a DS1337 program for an example. The datasheet had the same type of setup as this chip. You can't write any data to the RTC if it doesn't know where to put it.

    Boy if I'm wrong here I really apologize but I think I'm right. Please let me know.

    BobK
    Attached Files Attached Files
    Last edited by BobK; - 12th February 2007 at 19:26. Reason: Correct some errors.

  9. #9
    Join Date
    Aug 2005
    Location
    Los angeles
    Posts
    39


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by BobK View Post
    Hi Rocky,

    Look on page 11 of the datasheet. The addresses in Hex and the register name under the function column are what you need. I have attached a listing example from a DS1337 program for an example. The datasheet had the same type of setup as this chip. You can't write any data to the RTC if it doesn't know where to put it.

    Boy if I'm wrong here I really apologize but I think I'm right. Please let me know.

    BobK
    Bob,

    That's what i have on my code if you look back. Here is a sample take the minutes sample for example:
    'Set the time
    I2cwrite PORTC.2,PORTC.1,CONTL,$01,[rtcmin] 'minutes
    the CONTL is the address of the RTC the $01 is the minutes register and the rtcmin is the value to be put in the register.
    I hope you find my mistake.

    Thanks

Similar Threads

  1. Digital clock thermometer Calendar PIC 16F628
    By valdirdf in forum Code Examples
    Replies: 0
    Last Post: - 31st May 2009, 01:52
  2. PIC 18f4680 DIGITAL INPUTS
    By MegaADY in forum mel PIC BASIC Pro
    Replies: 11
    Last Post: - 30th July 2008, 07:34
  3. Digital Holter with PIC ?!
    By Eugeniu in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 28th November 2007, 10:37
  4. Pic driven digital audio delay
    By skimask in forum Off Topic
    Replies: 12
    Last Post: - 19th April 2007, 20:42
  5. Serial Pic to Pic using HSER
    By Chadhammer in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 11th March 2005, 23:14

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts