Pradeep Kotipalli
/
TFOX_CDMS_VR_1_0_WORKING
jnlj
Fork of TFOX_CDMS_VR_1_0_WORKING by
Embed:
(wiki syntax)
Show/hide line numbers
RTC.cpp
00001 #include "mbed.h" 00002 #include "func_head.h" 00003 00004 SPI rtc_spi(PTD6,PTD7,PTD5); // MOSI,MISO, CLOCK microcontroller(in order) 00005 DigitalOut rtc_cs(PTD4); //Slave Select pin 00006 //Serial pc(USBTX,USBRX); 00007 00008 void FUNC_INIT_RTC() 00009 { 00010 rtc_cs=1; 00011 rtc_spi.format(8,0); 00012 rtc_spi.frequency(1000000); 00013 //clearing the halt bit 00014 rtc_cs=1; 00015 rtc_cs=0; 00016 rtc_spi.write(0x8C); 00017 rtc_spi.write(0x00); 00018 00019 //clearing the OF bit 00020 rtc_cs=1; 00021 rtc_cs=0; 00022 rtc_spi.write(0x8F); 00023 rtc_spi.write(0x00); 00024 00025 //century bits 00026 rtc_cs=1; 00027 rtc_cs=0; 00028 rtc_spi.write(0x80|0x03); 00029 rtc_spi.write(0x00); 00030 00031 //Kick starting the oscillator 00032 rtc_cs=1; 00033 rtc_cs=0; 00034 rtc_spi.write(0x81); //register address with write flag 00035 rtc_spi.write(0x80);//enabling stop bit in the seconds register 00036 00037 rtc_cs=1; 00038 rtc_cs=0; 00039 rtc_spi.write(0x81); 00040 rtc_spi.write(0x00);//disabling the stop bit to restart the oscillator 00041 00042 00043 rtc_cs=1; 00044 rtc_cs=0; 00045 rtc_spi.write(0x80); 00046 rtc_spi.write(0x01); // set milliseconds value to 00 00047 rtc_cs=1; 00048 00049 rtc_cs=0; 00050 rtc_spi.write(0x81); 00051 rtc_spi.write(0x01); //set seconds value to 00 00052 rtc_cs=1; 00053 00054 rtc_cs=0; 00055 rtc_spi.write(0x82); 00056 rtc_spi.write(0x01);//set minutes value to 00 00057 rtc_cs=1; 00058 00059 rtc_cs=0; 00060 rtc_spi.write(0x83); 00061 rtc_spi.write(0x23); //set the hours to 01 00062 rtc_cs=1; 00063 00064 rtc_cs=0; 00065 rtc_spi.write(0x84); 00066 rtc_spi.write(0x01); //set day of the week to 01 00067 rtc_cs=1; 00068 00069 rtc_cs=0; 00070 rtc_spi.write(0x85); 00071 rtc_spi.write(0x31); //set date of the month to 01 00072 rtc_cs=1; 00073 00074 rtc_cs=0; 00075 rtc_spi.write(0x86); 00076 rtc_spi.write(0x12); //set month to 01 00077 rtc_cs=1; 00078 00079 rtc_cs=0; 00080 rtc_spi.write(0x87); 00081 rtc_spi.write(0x01); //set year to 00(2000) 00082 rtc_cs=1; 00083 printf("\n\r rtc initalised \n"); 00084 } 00085 00086 void FUNC_CDMS_RD_RTC(uint8_t Time_stamp[8]) 00087 00088 { 00089 uint8_t response; 00090 printf("\n\r Entered rtc\n"); 00091 rtc_cs=1; 00092 rtc_cs=0; 00093 rtc_spi.write(0x00); //reading milliseconds register 00094 response = rtc_spi.write(0x00); // read the value by sending dummy byte 00095 uint8_t milliseconds = (uint8_t(response&0xF0)>>4)*10+uint8_t(response&0x0F)*1; 00096 00097 rtc_cs=1; 00098 rtc_cs=0; 00099 rtc_spi.write(0x01); //reading seconds register 00100 response =rtc_spi.write(0x01); 00101 uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1; 00102 00103 rtc_cs=1; 00104 rtc_cs=0; 00105 rtc_spi.write(0x02); //reading minutes register 00106 response =rtc_spi.write(0x01); 00107 uint8_t minutes = ((response&0xF0)>>4)*10+(response&0x0F)*1; 00108 00109 rtc_cs=1; 00110 rtc_cs=0; 00111 rtc_spi.write(0x03); //reading hours register 00112 response=rtc_spi.write(0x01); 00113 uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1; 00114 00115 rtc_cs=1; 00116 rtc_cs=0; 00117 rtc_spi.write(0x04); //reading day's register 00118 uint8_t day =rtc_spi.write(0x01); 00119 00120 rtc_cs=1; 00121 rtc_cs=0; 00122 rtc_spi.write(0x05); //reading date register 00123 response =rtc_spi.write(0x01); 00124 uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1; 00125 00126 rtc_cs=1; 00127 rtc_cs=0; 00128 rtc_spi.write(0x06); //reading month registe 00129 response =rtc_spi.write(0x01); 00130 uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1; 00131 00132 rtc_cs=1; 00133 rtc_cs=0; 00134 rtc_spi.write(0x07); //reading year's registe 00135 response =rtc_spi.write(0x01); 00136 uint8_t year = ((response&0xF0)>>4)*10+(response&0x0F)*1; 00137 rtc_cs=1; 00138 //sprintf(Time_stamp,"%02d%02d%02d%02d%02d%02d%02d%02d",year, month, date, day, hours, minutes, seconds, milliseconds ); 00139 //Time_stamp[8] = {year, month, date, day, hours, minutes, seconds, milliseconds}; 00140 Time_stamp[0] = year; 00141 Time_stamp[1] = month; 00142 Time_stamp[2] = date; 00143 Time_stamp[3] = day; 00144 Time_stamp[4] = hours; 00145 Time_stamp[5] = minutes; 00146 Time_stamp[6] = seconds; 00147 Time_stamp[7] = milliseconds; 00148 for(int i= 0; i<8;i++) 00149 printf("%d\t",Time_stamp[i]); 00150 printf("read\r\n"); 00151 //time = Time_stamp; 00152 }
Generated on Fri Jul 15 2022 14:57:04 by 1.7.2