vr1.1

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of CDMS_RTOS_v1_1 by Team Fox

Committer:
cholletisaik777
Date:
Thu Jul 16 09:42:13 2015 +0000
Revision:
15:2c8629da6ec9
Parent:
14:cf9f12b6887d
Child:
16:7428828a5da2
changed pins

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