Compression code changed and RLY_TMTC pointers managed
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
cdms_rtc.h@35:3beac900a034, 2016-01-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |