aadadf

Dependencies:   mbed-rtos mbed

Fork of cdms_rtos_v1_1_test by Team Fox

Committer:
pradeepvk2208
Date:
Sat Nov 07 12:06:40 2015 +0000
Revision:
1:c0c5ac8eac80
Parent:
0:4da7c8fdd429
hey cdms_pl

Who changed what in which revision?

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