Pradeep Kotipalli
/
cdms_rtos_v1_1_test_sat
aadadf
Fork of cdms_rtos_v1_1_test by
cdms_rtc.cpp@1:c0c5ac8eac80, 2015-11-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |