pl ack in tmtc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE_pl123 by shubham c

Committer:
ee12b079
Date:
Thu Jan 07 10:35:40 2016 +0000
Revision:
35:3beac900a034
Child:
93:4d76de54a699
Relay_tmtc function, i2c.h, Flash.h, cdms_rtc.h added to the code, giving no errors. To be tested with CDMS TCs.

Who changed what in which revision?

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