[go: up one dir, main page]

0% found this document useful (0 votes)
62 views6 pages

Software Real-Time Clock and Calendar Using PIC16F1827: Data Interface

Uploaded by

kitt354
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views6 pages

Software Real-Time Clock and Calendar Using PIC16F1827: Data Interface

Uploaded by

kitt354
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

AN1303

Software Real-Time Clock and Calendar Using PIC16F1827

Author: Cristian Toma DATA INTERFACE


Microchip Technology Inc. The Real-Time Clock and Calendar communicates with
the host system via a two-wire I2C bus as a slave
device. A set of I2C commands and RTCC registers are
INTRODUCTION implemented to allow the host to read and write time
This application note describes the implementation of and date information. All registers are read and write.
software Real-Time Clock and Calendar (RTCC). The The registers from 0x00 to 0x0E only support one byte
implementation can be used either separately, read/write operation (for compatibility with hardware
replacing one of the hardware RTCC devices on the RTCCs already on the market). The registers from
market, or as part of an application. In the latter 0x0F and 0x10 support multiple byte read/write
example, there is no need for the I2C™ communication operation. This is to allow multiple data to be sent in
channel. one single transfer. Of course, the user has the ability
the change the source code, thus changing the
The implementation provides the time (seconds, functionality to suit his/her own needs.
minutes, and hour), date (day, month, and year), day of
week, and one alarm. The user can customize the
firmware according to his/her own needs. TABLE 1: INTERNAL REGISTER MAP
Hex address Description Range
IMPLEMENTATION 0x01 Seconds 00-59

Current Date/Time
The basis of the Real-Time Clock (RTC) is the Timer1 0x02 Time Minutes 00-59
counter. This timer can be configured to accept a clock 0x03 Hour 0-23
source from the internal low-power oscillator. This
internal circuit is used in conjunction with an external 0x04 Day 0-6
32.768 kHz crystal. The oscillator has the ability to work 0x05 Date 1-31
during Sleep mode. This feature can be very helpful if Date
0x06 Month 1-12
the Real-Time Clock and Calendar circuit is to be
0x07 Year 0-99
powered from a battery. The Timer1 register pair
Alarm Date/Time

0x08 Minutes 00-59


(TMR1H:TMR1L) counts from 0x0000 to 0xFFFF. If the
0x09 Time Hour 0-23
register is incremented from 0xFFFF, then a roll-over
event occurs and the timer rolls over to 0x0000. 0x0A Date Date 1-31
Additionally, the interrupt flag, TMR1IF, is set and an 0x0B Month 1-12
interrupt will occur if enabled. The flag must be cleared
in the software. 0x0C Year 0-99

Timer1 can operate during Sleep mode to help reduce 0x0D Time Seconds 00-59
Current/Date/Time

the current consumption of the application. A Timer1 Minutes 00-59


roll-over event (TMR1IF bit) will wake the Hour 0-23
microcontroller from Sleep and execute the next 0x0E Date 1-31
instructions. It should be noted that, upon an overflow, Date
Month 1-12
the TMR1IF flag is set, but the counter continues to run. Year 0-99
Time and date update can be done at a later time,
provided that another Timer1 roll-over does not occur.

 2009 Microchip Technology Inc. DS01303A-page 1


AN1303
DAY OF WEEK CALCULATION 4. Day of month: We now know on which day of the
week the month starts. We must simply add the
The algorithm must calculate the day of week (e.g., day of the month to get the day of week.
“Monday”, “Tuesday”...), based on a given date (e.g.,
After we have all the four numbers, we simply add them
1st January 2000). There are several algorithms that
and use modulus of 7 to limit the values between zero
provide this calculation, but one we have chosen is fast
and six. The corresponding day of the week is given in
and the code implementation is small.
the following table:
There are several considerations that can make the
algorithm easier to implement. We do not need to store
the “year” information using the full 4 digits (e.g., TABLE 3: CORRESPONDING DAY OF
“2005”), but only the last two digits. The “year 2000 WEEK
problem” is now history and, anyway, we are more Value Corresponding day of week
interested in dates starting from present time to
ten-to-twenty years from now. 0 "Sunday"
1 "Monday"
The day-of-week algorithm must calculate four
numbers: 2 "Tuesday"

1. Centuries: There is a table for centuries. But as 3 "Wednesday"


we previously mentioned, we are interested only 4 "Thursday"
in the current century. So, the value for the years 5 "Friday"
2000-2099 is 6. The centuries number will 6 "Saturday"
always be 6.
2. Years: There are 365 days in one year. Each Here is an example:
leap year has one more day than a normal year. Let’s use Thursday, the 1st of October, 2009:
If we add the number of years elapsed from the 1. We are interested in this century only. The first
start of the century with the number of the leap number is 6.
years elapsed from the start of the century, we
2. Note the last two digits of the year: 09.
get the day of the week when the year starts.
Here we take into account only the last two digits 3. Divide 09 by 4, leave out the remainder. 9/4 = 2.
of the year. 4. Look at the month table: for October, we have a
value of 0.
EQUATION 1: 5. Add all the numbers we have until now with the
day the month. 6 + 9 + 2 + 0 + 1= 18
y = year + year
----------- 6. Divide 18 by 7 and find the remainder: 18/7= 2
4
remainder 4.
3. Months: we must use the months table to get the 7. Use the corresponding day of week table
day of the week a month starts on. Every Janu- (Table 3). For value 4, we get the day of
ary starts on the first day of each year. Please Thursday.
notice that the table has corrections for the leap
year.

TABLE 2: MONTHS
January 0 (in leap year 6)
February 3 (in leap year 2)
March 3
April 6
May 1
June 4
July 6
August 2
September 5
October 0
November 3
December 5

DS01303A-page 2  2009 Microchip Technology Inc.


AN1303
LOW-POWER CONCLUSION
A Real-Time Clock can be powered by an alternate This application note shows the ease of implementing
backup power supply, such as a coin cell battery. a software Real-Time Clock and Calendar using the
Typically, while the main system is running, there will be PIC16F1827. The Extreme-Low-Power (XLP)
power from the main power supply. While the main technology features make this design a well-suited
system is turned off, there cannot be any read/write solution in terms of overall cost, performance and
request from the host, thus the Real-Time Clock circuit power consumption.
will typically draw power only to update the time and the
date.
CODE RESOURCE REQUIREMENTS:
In order to preserve energy, the processor must stay in
Sleep mode as much as possible. The internal • Flash program memory – 821 words (including
low-power oscillator will continue to work during Sleep I2C communication with multi-byte reads and
mode. The Timer1 counter is configured to wake the alarm implementation)
processor from Sleep once every second. The time is • Data RAM size: 53 bytes
updated (also the calendar, if needed) and the • Interrupts: Timer1 interrupt
processor goes back to Sleep mode. The same applies • Timers: Timer1
for accessing the internal registers via the I2C bus. The
• Hardware resources: External 32.768 kHz crystal
processor wakes up from Sleep following a Start
condition and goes back to Sleep mode after a Stop
condition.
The user must make sure that all the unnecessary
modules are turned off or disabled during Sleep mode.
Also, all external power consuming parts must be
turned off.

POSSIBLE UPGRADES
The current implementation updates the time and
calendar once every second. In the previous chapter,
we learned that, in order to preserve more power, the
processor must stay in Sleep mode as much as
possible. Thus, the time spent in Active mode, when
the power consumption is higher, must be kept as short
as possible. One possible upgrade would be to have a
32-bit register incremented once every second. This
will help minimize the on-time of the microcontroller
even more. The only task the processor will do during
the active period would be to increment the counter.
The actual conversion between the counter and the
date and time will be made on demand, during an I2C
data transfer. Wake-up alarms or time-triggered events
can also be implemented using this 32-bit time-stamp
method.

 2009 Microchip Technology Inc. DS01303A-page 3


AN1303
NOTES:

DS01303A-page 4  2009 Microchip Technology Inc.


Note the following details of the code protection feature on Microchip devices:
• Microchip products meet the specification contained in their particular Microchip Data Sheet.

• Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.

• There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

• Microchip is willing to work with the customer who is concerned about the integrity of their code.

• Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information contained in this publication regarding device Trademarks


applications and the like is provided only for your convenience The Microchip name and logo, the Microchip logo, dsPIC,
and may be superseded by updates. It is your responsibility to KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,
ensure that your application meets with your specifications.
rfPIC and UNI/O are registered trademarks of Microchip
MICROCHIP MAKES NO REPRESENTATIONS OR
Technology Incorporated in the U.S.A. and other countries.
WARRANTIES OF ANY KIND WHETHER EXPRESS OR
IMPLIED, WRITTEN OR ORAL, STATUTORY OR FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,
OTHERWISE, RELATED TO THE INFORMATION, MXDEV, MXLAB, SEEVAL and The Embedded Control
INCLUDING BUT NOT LIMITED TO ITS CONDITION, Solutions Company are registered trademarks of Microchip
QUALITY, PERFORMANCE, MERCHANTABILITY OR Technology Incorporated in the U.S.A.
FITNESS FOR PURPOSE. Microchip disclaims all liability Analog-for-the-Digital Age, Application Maestro, CodeGuard,
arising from this information and its use. Use of Microchip dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,
devices in life support and/or safety applications is entirely at ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial
the buyer’s risk, and the buyer agrees to defend, indemnify and Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
hold harmless Microchip from any and all damages, claims, logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code
suits, or expenses resulting from such use. No licenses are Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,
conveyed, implicitly or otherwise, under any Microchip PICtail, PIC32 logo, REAL ICE, rfLAB, Select Mode, Total
intellectual property rights. Endurance, TSHARC, UniWinDriver, WiperLock and ZENA
are trademarks of Microchip Technology Incorporated in the
U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated
in the U.S.A.
All other trademarks mentioned herein are property of their
respective companies.
© 2009, Microchip Technology Incorporated, Printed in the
U.S.A., All Rights Reserved.
Printed on recycled paper.

Microchip received ISO/TS-16949:2002 certification for its worldwide


headquarters, design and wafer fabrication facilities in Chandler and
Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping
devices, Serial EEPROMs, microperipherals, nonvolatile memory and
analog products. In addition, Microchip’s quality system for the design
and manufacture of development systems is ISO 9001:2000 certified.

DS01303A-page 5  2009 Microchip Technology Inc.


WORLDWIDE SALES AND SERVICE
AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE
Corporate Office Asia Pacific Office India - Bangalore Austria - Wels
2355 West Chandler Blvd. Suites 3707-14, 37th Floor Tel: 91-80-3090-4444 Tel: 43-7242-2244-39
Chandler, AZ 85224-6199 Tower 6, The Gateway Fax: 91-80-3090-4080 Fax: 43-7242-2244-393
Tel: 480-792-7200 Harbour City, Kowloon Denmark - Copenhagen
India - New Delhi
Fax: 480-792-7277 Hong Kong Tel: 45-4450-2828
Tel: 91-11-4160-8631
Technical Support: Tel: 852-2401-1200 Fax: 45-4485-2829
Fax: 91-11-4160-8632
http://support.microchip.com Fax: 852-2401-3431
India - Pune France - Paris
Web Address:
Australia - Sydney Tel: 91-20-2566-1512 Tel: 33-1-69-53-63-20
www.microchip.com
Tel: 61-2-9868-6733 Fax: 91-20-2566-1513 Fax: 33-1-69-30-90-79
Atlanta Fax: 61-2-9868-6755
Japan - Yokohama Germany - Munich
Duluth, GA
China - Beijing Tel: 49-89-627-144-0
Tel: 678-957-9614 Tel: 81-45-471- 6166
Tel: 86-10-8528-2100 Fax: 49-89-627-144-44
Fax: 678-957-1455 Fax: 81-45-471-6122
Fax: 86-10-8528-2104 Italy - Milan
Boston Korea - Daegu
China - Chengdu Tel: 39-0331-742611
Westborough, MA Tel: 82-53-744-4301
Tel: 86-28-8665-5511 Fax: 39-0331-466781
Tel: 774-760-0087 Fax: 82-53-744-4302
Fax: 86-28-8665-7889 Netherlands - Drunen
Fax: 774-760-0088 Korea - Seoul
China - Hong Kong SAR Tel: 82-2-554-7200 Tel: 31-416-690399
Chicago
Tel: 852-2401-1200 Fax: 82-2-558-5932 or Fax: 31-416-690340
Itasca, IL
Tel: 630-285-0071 Fax: 852-2401-3431 82-2-558-5934 Spain - Madrid
Fax: 630-285-0075 China - Nanjing Tel: 34-91-708-08-90
Malaysia - Kuala Lumpur
Tel: 86-25-8473-2460 Tel: 60-3-6201-9857 Fax: 34-91-708-08-91
Cleveland
Independence, OH Fax: 86-25-8473-2470 Fax: 60-3-6201-9859 UK - Wokingham
Tel: 216-447-0464 China - Qingdao Tel: 44-118-921-5869
Malaysia - Penang
Fax: 216-447-0643 Tel: 86-532-8502-7355 Fax: 44-118-921-5820
Tel: 60-4-227-8870
Dallas Fax: 86-532-8502-7205 Fax: 60-4-227-4068
Addison, TX China - Shanghai Philippines - Manila
Tel: 972-818-7423 Tel: 86-21-5407-5533 Tel: 63-2-634-9065
Fax: 972-818-2924 Fax: 86-21-5407-5066 Fax: 63-2-634-9069
Detroit China - Shenyang Singapore
Farmington Hills, MI Tel: 86-24-2334-2829 Tel: 65-6334-8870
Tel: 248-538-2250 Fax: 86-24-2334-2393 Fax: 65-6334-8850
Fax: 248-538-2260
China - Shenzhen Taiwan - Hsin Chu
Kokomo Tel: 86-755-8203-2660 Tel: 886-3-6578-300
Kokomo, IN Fax: 86-755-8203-1760 Fax: 886-3-6578-370
Tel: 765-864-8360
Fax: 765-864-8387 China - Wuhan Taiwan - Kaohsiung
Tel: 86-27-5980-5300 Tel: 886-7-536-4818
Los Angeles Fax: 86-27-5980-5118 Fax: 886-7-536-4803
Mission Viejo, CA
Tel: 949-462-9523 China - Xiamen Taiwan - Taipei
Fax: 949-462-9608 Tel: 86-592-2388138 Tel: 886-2-2500-6610
Fax: 86-592-2388130 Fax: 886-2-2508-0102
Santa Clara
Santa Clara, CA China - Xian Thailand - Bangkok
Tel: 408-961-6444 Tel: 86-29-8833-7252 Tel: 66-2-694-1351
Fax: 408-961-6445 Fax: 86-29-8833-7256 Fax: 66-2-694-1350

Toronto China - Zhuhai


Mississauga, Ontario, Tel: 86-756-3210040
Canada Fax: 86-756-3210049
Tel: 905-673-0699
Fax: 905-673-6509

03/26/09

DS01303A-page 6  2009 Microchip Technology Inc.

You might also like