DS1305RTC.h

00001 /***************************************************************************
00002                           DS1305RTC.h  -
00003               Real time clock control functions .
00004               These functions rely on the SPI module for communication.
00005                              -------------------
00006     begin                : Tue Oct 14 2003
00007     email                : support@emacinc.com
00008  ***************************************************************************/
00009 
00010 
00011 #ifndef DS1305RTC_H
00012 #define DS1305RTC_H
00013 #define RTC
00014 
00015 #include <GNU_defs.h>
00016 #include <arch/regdefs.h>
00017 
00023 
00024 #define WRITE_OFFSET 0x80
00025 enum registers { SEC,MIN,HOURS,DAY,DATE,MONTH,YEAR,
00026 SEC_ALARM0,MIN_ALARM0,HOUR_ALARM0,DAY_ALARM0, //alarm0
00027 SEC_ALARM1,MIN_ALARM1,HOUR_ALARM1,DAY_ALARM1, //alarm1
00028 CONTROL,STATUS,TRICKLE_CHARGER};
00029 
00030 /*CONTROL bits*/
00031 #define EOSC 0x80
00032 #define WP     0x40
00033 #define INTCN 4
00034 #define AIE1   2
00035 #define AIE0   1
00036 
00037 #define INT0  0x04
00038 #define INT1  0x08
00039 
00040 #define RTC_CS_MASK 0x04
00041 #define RTC_CE_SETUP() DDRK|=RTC_CS_MASK
00042 #define RTC_CE_ON() PORTK|=RTC_CS_MASK
00043 #define RTC_CE_OFF() PORTK&=(~RTC_CS_MASK)
00044 
00045 
00048 typedef struct timestruct {
00049 int seconds;
00050 int minutes;
00051 int hours;
00052 int day;
00053 int date;
00054 int month;
00055 int year;
00056 }timestruct;
00057 
00063 int __attribute__((far))RTC_Write_Register(int reg, u8 data);
00064 
00069 u8 __attribute__((far))RTC_Read_Register(int reg);
00070 
00077 int __attribute__((far))RTC_GetTime(timestruct *time);
00078 
00087 int __attribute__((far))RTC_SetTime(timestruct *time);
00088 
00089 
00090 #define TIME2RTC(data) (((data/10)<<4)+(data%10))
00091 #define RTC2TIME(data) (((data>>4)*10)+(data&0x0f))
00092 
00093 #define RTC_SECONDS    RTC_Read_Register(SEC)
00094 #define RTC_MINUTES      RTC_Read_Register(MIN)
00095 #define RTC_HOURS         RTC_Read_Register(HOURS)
00096 #define RTC_DAY             RTC_Read_Register(DAY)
00097 #define RTC_DATE           RTC_Read_Register(DATE)
00098 #define RTC_MONTH        RTC_Read_Register(MONTH)
00099 #define RTC_YEAR           RTC_Read_Register(YEAR)
00100 
00101 
00102 #define RTC_SET_SECONDS(data)   RTC_Write_Register(SEC,TIME2RTC(data))
00103 #define RTC_SET_MINUTES(data)     RTC_Write_Register(MIN,TIME2RTC(data))
00104 #define RTC_SET_HOURS(data)        RTC_Write_Register(HOURS,TIME2RTC(data))
00105 #define RTC_SET_DAY(data)            RTC_Write_Register(DAY,TIME2RTC(data))
00106 #define RTC_SET_DATE(data)          RTC_Write_Register(DATE,TIME2RTC(data))
00107 #define RTC_SET_MONTH(data)       RTC_Write_Register(MONTH,TIME2RTC(data))
00108 #define RTC_SET_YEAR(data)          RTC_Write_Register(YEAR,TIME2RTC(data))
00109 
00112 #endif

Generated on Fri Mar 3 17:25:45 2006 for EMAC-HCS12-SDK by  doxygen 1.4.6