aadadf

Dependencies:   mbed-rtos mbed

Fork of cdms_rtos_v1_1_test by Team Fox

Committer:
sureshsusurla
Date:
Sat Nov 07 09:55:44 2015 +0000
Revision:
0:4da7c8fdd429
Child:
1:c0c5ac8eac80
cdms_rtos_v1_1_working_01_11_2015;

Who changed what in which revision?

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