[Icc-avr] RTC - how to compute the difference in minutes

Robert Rademacher robertrade at yahoo.com
Thu Nov 15 08:32:10 PST 2007


Hi Paul,

Thanks for your response. Based on the "validation test" done on Excel worksheet, these RTC test "equations" will not work if the year is rolled over to 2008. It's OK...as we can improve on that. :)

Here's the link to Excel file for "testing" the RTC calculations (keep in mind it's not yet perfect).

http://rademacher.org/ElapsedTimeCalculation.xls

The revised RTC_Time would be:
RTC_TEST_TIME = (hour * 60) + minutes
RTC_TEST_DATE = (year * 10000) + (months * 100) + day (this one needs bit more work)

Example #1 (from Excel worksheet)

Session    Year    Month    Day    Hour    Minute    CalTime    CalDate
Start    2007    11    14    9    30    570    20071114
End    2007    11    14    21    30    1290    20071114

                    TotalTime    720    
                    TotalDays        0
                    Total Minutes    720    (correct)

To compute for the total elapsed minutes, these above equations will work, only if both start and end of month and year are same. 

Let's look at Example #2:
Session    Year    Month    Day    Hour    Minute    CalTime    CalDate
Start    2007    11    14    10    30    630    20071114
End    2007    11    15    9    30    570    20071115

                    TotalTime    -60    
                    TotalDays        1
                    Total Minutes    1380    (correct)

Example #3
Session    Year    Month    Day    Hour    Minute    CalTime    CalDate
Start    2007    11    14    9    30    570    20071114
End    2007    11    20    12    45    765    20071120

                    TotalTime    195    
                    TotalDays        6
                    Total Minutes    8835    (correct)

The total elapsed minutes calculations based on hours/minutes/days are correct, as long as the month/year of both start/end session are same.

Here's the small problem when computing the elapsed days when the month/year are different for both start/end session.

Example #4
Session    Year    Month    Day    Hour    Minute    CalTime    CalDate
Start    2007    12    31    9    30    570    20071231
End    2008    1    1    9    30    570    20080101
                            
                    TotalTime    0    
                    TotalDays        8870 (incorrect)
                    Total Minutes    12772800 (incorrect)

You will notice that the year has changed to 2008, as well as changing from December to January (month). The correct elapsed minutes would be 1440 minutes (24 hours).

I think we are getting there. Once we have the "magic" equation to handle the month/year, I will write a pretty difftime routine that would be very handy for all of us who use RTC for time/date services.

Thanks,

Robert J. Rademacher

================================================

Maybe if you convert the date to Julian Days that would help.  If
possible maybe the RTC could trigger an interrupt to so you could
count days since event#1.  I built a "TAB" timer not to long ago, but
did the date compare as yy.mm.dd

  TEST_RTC_TIME = (fix_hr * 100) + fix_min;
  TEST_RTC_DATE = ((unsigned long)fix_rtc_yr * 10000)+((unsigned
long)fix_rtc_month *100)+(unsigned long)fix_rtc_date;


On Nov 14, 2007 11:42 PM, Robert Rademacher <robertrade at yahoo.com> wrote:
> Hi all,
>
> I'm wondering if anyone has done the difftime routine for ICCAVR that would
> compute the difference in minutes, using PCF8563 RTC. I know ICCAVR does not
> have time.h library.
>
> Here is the elapsed minutes calculation:
>
> To compute for elapsed minutes (format: dd.mm.yy  hh.mm)
>
> Start date-time: 14.11.2007 10.15
> Final date-time 15.11.2007 8.15
>
> Calculated for elapsed time: 22 hours or 1,320 minutes.
>
> This may look easy, but remember, we are dealing with leap year, specific
> number of days/month, etc that need to be factored in when calculating the
> difference between the start and end time-date stamps. It would be nice if
> there is a RTC IC that has the mktime/gmtime I can read off instead of
> individual numbers from date/time sections.
>
> I search everywhere for the code snippet designed for AVR and did not find
> what I'm looking for as described above.
>
> Any good suggestions, as I'm bit pressed for deadline. I am sure everyone
> may be interested in this potential solution.
>
> Robert
>
>
>  ________________________________
> Get easy, one-click access to your favorites. Make Yahoo! your homepage.
> _______________________________________________
> Icc-avr mailing list
> Icc-avr at imagecraft.com
> http://dragonsgate.net/mailman/listinfo/icc-avr
>
>
-- 
Paul Mateer, AA9GG
Elan Engineering Corp.
www.elanengr.com


       
---------------------------------
Never miss a thing.   Make Yahoo your homepage.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://dragonsgate.net/pipermail/icc-avr/attachments/20071115/6e55478e/attachment.html


More information about the Icc-avr mailing list