vr1.1

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of CDMS_RTOS_v1_1 by Team Fox

Committer:
cholletisaik777
Date:
Tue Jul 14 10:14:36 2015 +0000
Revision:
14:cf9f12b6887d
Parent:
8:607ae92fa6af
Child:
15:2c8629da6ec9
CDMS_RTOSvr1.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cholletisaik777 0:d6e3d1e21484 1 #include "mbed.h"
cholletisaik777 8:607ae92fa6af 2 #include "RTC.h"
cholletisaik777 8:607ae92fa6af 3 #include "all_funcs.h"
cholletisaik777 0:d6e3d1e21484 4
cholletisaik777 0:d6e3d1e21484 5 SPI rtc_spi(PTD6,PTD7,PTD5); // MOSI,MISO, CLOCK microcontroller(in order)
pradeepvk2208 2:4c79b3dfef31 6 DigitalOut rtc_cs(PTD4); //Slave Select pin
cholletisaik777 0:d6e3d1e21484 7 //Serial pc(USBTX,USBRX);
cholletisaik777 0:d6e3d1e21484 8
cholletisaik777 7:c270a9e37290 9 void FCTN_INIT_RTC()
pradeepvk2208 2:4c79b3dfef31 10 {
cholletisaik777 0:d6e3d1e21484 11 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 12 rtc_spi.format(8,0);
cholletisaik777 0:d6e3d1e21484 13 rtc_spi.frequency(1000000);
cholletisaik777 0:d6e3d1e21484 14 //clearing the halt bit
cholletisaik777 0:d6e3d1e21484 15 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 16 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 17 rtc_spi.write(0x8C);
cholletisaik777 0:d6e3d1e21484 18 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 19
cholletisaik777 0:d6e3d1e21484 20 //clearing the OF bit
cholletisaik777 0:d6e3d1e21484 21 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 22 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 23 rtc_spi.write(0x8F);
cholletisaik777 0:d6e3d1e21484 24 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 25
cholletisaik777 0:d6e3d1e21484 26 //century bits
cholletisaik777 0:d6e3d1e21484 27 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 28 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 29 rtc_spi.write(0x80|0x03);
cholletisaik777 0:d6e3d1e21484 30 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 31
cholletisaik777 0:d6e3d1e21484 32 //Kick starting the oscillator
cholletisaik777 0:d6e3d1e21484 33 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 34 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 35 rtc_spi.write(0x81); //register address with write flag
cholletisaik777 0:d6e3d1e21484 36 rtc_spi.write(0x80);//enabling stop bit in the seconds register
cholletisaik777 0:d6e3d1e21484 37
cholletisaik777 0:d6e3d1e21484 38 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 39 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 40 rtc_spi.write(0x81);
cholletisaik777 0:d6e3d1e21484 41 rtc_spi.write(0x00);//disabling the stop bit to restart the oscillator
cholletisaik777 0:d6e3d1e21484 42
cholletisaik777 0:d6e3d1e21484 43
cholletisaik777 0:d6e3d1e21484 44 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 45 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 46 rtc_spi.write(0x80);
cholletisaik777 0:d6e3d1e21484 47 rtc_spi.write(0x01); // set milliseconds value to 00
cholletisaik777 0:d6e3d1e21484 48 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 49
cholletisaik777 0:d6e3d1e21484 50 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 51 rtc_spi.write(0x81);
cholletisaik777 0:d6e3d1e21484 52 rtc_spi.write(0x01); //set seconds value to 00
cholletisaik777 0:d6e3d1e21484 53 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 54
cholletisaik777 0:d6e3d1e21484 55 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 56 rtc_spi.write(0x82);
cholletisaik777 0:d6e3d1e21484 57 rtc_spi.write(0x01);//set minutes value to 00
cholletisaik777 0:d6e3d1e21484 58 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 59
cholletisaik777 0:d6e3d1e21484 60 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 61 rtc_spi.write(0x83);
cholletisaik777 0:d6e3d1e21484 62 rtc_spi.write(0x23); //set the hours to 01
cholletisaik777 0:d6e3d1e21484 63 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 64
cholletisaik777 0:d6e3d1e21484 65 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 66 rtc_spi.write(0x84);
cholletisaik777 0:d6e3d1e21484 67 rtc_spi.write(0x01); //set day of the week to 01
cholletisaik777 0:d6e3d1e21484 68 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 69
cholletisaik777 0:d6e3d1e21484 70 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 71 rtc_spi.write(0x85);
cholletisaik777 0:d6e3d1e21484 72 rtc_spi.write(0x31); //set date of the month to 01
cholletisaik777 0:d6e3d1e21484 73 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 74
cholletisaik777 0:d6e3d1e21484 75 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 76 rtc_spi.write(0x86);
cholletisaik777 0:d6e3d1e21484 77 rtc_spi.write(0x12); //set month to 01
cholletisaik777 0:d6e3d1e21484 78 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 79
cholletisaik777 0:d6e3d1e21484 80 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 81 rtc_spi.write(0x87);
cholletisaik777 0:d6e3d1e21484 82 rtc_spi.write(0x01); //set year to 00(2000)
cholletisaik777 0:d6e3d1e21484 83 rtc_cs=1;
sakthipriya 3:0c3f7c3fabc9 84 printf("\n\r rtc initalised \n");
pradeepvk2208 2:4c79b3dfef31 85 }
pradeepvk2208 2:4c79b3dfef31 86
cholletisaik777 14:cf9f12b6887d 87 uint64_t FCTN_CDMS_RD_RTC()
pradeepvk2208 2:4c79b3dfef31 88 {
cholletisaik777 0:d6e3d1e21484 89 uint8_t response;
sakthipriya 3:0c3f7c3fabc9 90 printf("\n\r Entered rtc\n");
cholletisaik777 0:d6e3d1e21484 91 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 92 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 93 rtc_spi.write(0x00); //reading milliseconds register
cholletisaik777 0:d6e3d1e21484 94 response = rtc_spi.write(0x00); // read the value by sending dummy byte
cholletisaik777 14:cf9f12b6887d 95 uint8_t centiseconds = (uint8_t(response&0xF0)>>4)*10+uint8_t(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 96
cholletisaik777 0:d6e3d1e21484 97 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 98 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 99 rtc_spi.write(0x01); //reading seconds register
cholletisaik777 0:d6e3d1e21484 100 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 101 uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 102
cholletisaik777 0:d6e3d1e21484 103 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 104 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 105 rtc_spi.write(0x02); //reading minutes register
cholletisaik777 0:d6e3d1e21484 106 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 107 uint8_t minutes = ((response&0xF0)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 108
cholletisaik777 0:d6e3d1e21484 109 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 110 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 111 rtc_spi.write(0x03); //reading hours register
cholletisaik777 0:d6e3d1e21484 112 response=rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 113 uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 114
cholletisaik777 0:d6e3d1e21484 115 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 116 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 117 rtc_spi.write(0x04); //reading day's register
cholletisaik777 0:d6e3d1e21484 118 uint8_t day =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 119
cholletisaik777 0:d6e3d1e21484 120 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 121 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 122 rtc_spi.write(0x05); //reading date register
cholletisaik777 0:d6e3d1e21484 123 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 124 uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 125
cholletisaik777 0:d6e3d1e21484 126 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 127 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 128 rtc_spi.write(0x06); //reading month registe
cholletisaik777 0:d6e3d1e21484 129 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 130 uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 131
cholletisaik777 0:d6e3d1e21484 132 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 133 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 134 rtc_spi.write(0x07); //reading year's registe
cholletisaik777 0:d6e3d1e21484 135 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 136 uint8_t year = ((response&0xF0)>>4)*10+(response&0x0F)*1;
sakthipriya 3:0c3f7c3fabc9 137 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 138 //sprintf(Time_stamp,"%02d%02d%02d%02d%02d%02d%02d%02d",year, month, date, day, hours, minutes, seconds, milliseconds );
cholletisaik777 14:cf9f12b6887d 139 uint8_t Time_stamp[8] = {year, month, date, day, hours, minutes, seconds, centiseconds};
sakthipriya 3:0c3f7c3fabc9 140 for(int i= 0; i<8;i++)
sakthipriya 3:0c3f7c3fabc9 141 printf("%d\t",Time_stamp[i]);
cholletisaik777 0:d6e3d1e21484 142 printf("read\r\n");
cholletisaik777 14:cf9f12b6887d 143 uint64_t time;
cholletisaik777 14:cf9f12b6887d 144 time = 0;
cholletisaik777 14:cf9f12b6887d 145 time = time|(uint64_t)(centiseconds&0xEF);
cholletisaik777 14:cf9f12b6887d 146 time = time|(uint64_t)(seconds&0xDF)<<7;
cholletisaik777 14:cf9f12b6887d 147 time = time|(uint64_t)(minutes&0xDF)<<13;
cholletisaik777 14:cf9f12b6887d 148 time = time|(uint64_t)(hours&0x1F)<<19;
cholletisaik777 14:cf9f12b6887d 149 time = time|(uint64_t)(day&0x1F)<<24;
cholletisaik777 14:cf9f12b6887d 150 time = time|(uint64_t)(month&0x0F)<<29;
cholletisaik777 14:cf9f12b6887d 151 time = time|(uint64_t)(year&0x03)<<33;
cholletisaik777 14:cf9f12b6887d 152 time = time&0x00000007FFFFFFFF;
cholletisaik777 14:cf9f12b6887d 153 return time;
cholletisaik777 5:c77b49508927 154 }