cdms_i2c_hardware_test
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of standaloneworkingi2c_cdms by
main.cpp@160:25a01d8da5d4, 2016-07-06 (annotated)
- Committer:
- prasanthbj05
- Date:
- Wed Jul 06 10:17:44 2016 +0000
- Revision:
- 160:25a01d8da5d4
- Parent:
- 159:390ca9b41d0e
cdms_i2c_hardware;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 8:fcd26c28411d | 1 | // TESTING PUSH PULL IN MAIN CPP |
shreeshas95 | 8:fcd26c28411d | 2 | |
shreeshas95 | 0:f016e9e8d48b | 3 | #include "mbed.h" |
ee12b079 | 95:fd99ddc0e0a1 | 4 | |
ee12b079 | 131:d4a4461214ad | 5 | uint8_t rcv_isr = 0; // flag for interrupt |
prasanthbj05 | 157:d99f525edc4c | 6 | extern uint8_t temp_flag =0; |
ee12b079 | 131:d4a4461214ad | 7 | |
ee12b079 | 129:d5b53088270b | 8 | #define DEBUG 1 |
ee12b079 | 148:e6c7d4f87704 | 9 | #define SDCARD 0 |
ee12b079 | 136:8074893cd24e | 10 | #define I2C_PL 0 |
prasanthbj05 | 157:d99f525edc4c | 11 | #define PRINT 1 |
ee12b079 | 136:8074893cd24e | 12 | |
ee12b079 | 95:fd99ddc0e0a1 | 13 | |
shreeshas95 | 101:bece931236a2 | 14 | #include "SimpleDMA.h" |
shreeshas95 | 101:bece931236a2 | 15 | #include "dmaSPIslave.h" |
shreeshas95 | 0:f016e9e8d48b | 16 | #include "rtos.h" |
shreeshas95 | 1:a0055b3280c8 | 17 | #include "mbed_debug.h" |
prasanthbj05 | 155:80e7c7ff8aaf | 18 | #include "cassert" |
shreeshas95 | 0:f016e9e8d48b | 19 | |
shreeshas95 | 0:f016e9e8d48b | 20 | #include "Structures.h" |
shreeshas95 | 104:b55559925dc1 | 21 | #include "pinconfig.h" |
shreeshas95 | 0:f016e9e8d48b | 22 | #include "DefinitionsAndGlobals.h" |
shreeshas95 | 0:f016e9e8d48b | 23 | #include "crc.h" |
ee12b079 | 129:d5b53088270b | 24 | #include "i2c.h" |
shreeshas95 | 1:a0055b3280c8 | 25 | #include "COM_SND_TM_functions.h" |
shreeshas95 | 1:a0055b3280c8 | 26 | #include "COM_SND_TM.h" |
ee12b079 | 96:efde3df6cd94 | 27 | #include "cdms_sd.h" |
prasanthbj05 | 157:d99f525edc4c | 28 | #include "CDMS_HK.h" |
ee12b079 | 83:a26f5f22631d | 29 | #include "OBSRS.h" |
shreeshas95 | 1:a0055b3280c8 | 30 | #include "adf.h" |
shreeshas95 | 0:f016e9e8d48b | 31 | #include "COM_RCV_TC.h" |
shreeshas95 | 0:f016e9e8d48b | 32 | #include "COM_MNG_TMTC.h" |
shreeshas95 | 4:104dd82c99b8 | 33 | #include "COM_POWER_ON_TX.h" |
shreeshas95 | 4:104dd82c99b8 | 34 | #include "COM_POWER_OFF_TX.h" |
ee12b079 | 93:4ca92f9775e0 | 35 | #include "Compression.h" |
shreeshas95 | 0:f016e9e8d48b | 36 | #include "ThreadsAndFunctions.h" |
prasanthbj05 | 157:d99f525edc4c | 37 | //#include <InterruptIn.h> |
prasanthbj05 | 157:d99f525edc4c | 38 | |
prasanthbj05 | 157:d99f525edc4c | 39 | InterruptIn temp_irpt(PTC6); |
prasanthbj05 | 157:d99f525edc4c | 40 | Mutex i2c_mutex; |
prasanthbj05 | 157:d99f525edc4c | 41 | |
prasanthbj05 | 155:80e7c7ff8aaf | 42 | uint8_t TM[134]; |
prasanthbj05 | 157:d99f525edc4c | 43 | //uint8_t TC[11] = {0x01, 0x60, 0x81, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0x0d}; |
prasanthbj05 | 157:d99f525edc4c | 44 | uint8_t TC[250]; |
prasanthbj05 | 157:d99f525edc4c | 45 | |
prasanthbj05 | 159:390ca9b41d0e | 46 | |
prasanthbj05 | 159:390ca9b41d0e | 47 | #define PL_TC(tm_ptr){\ |
prasanthbj05 | 159:390ca9b41d0e | 48 | Base_tc *beacon_tc = new Long_tc;\ |
prasanthbj05 | 159:390ca9b41d0e | 49 | beacon_tc->next_TC = NULL;\ |
prasanthbj05 | 159:390ca9b41d0e | 50 | PUTshort_or_long(beacon_tc,SHORT_TC_CODE);\ |
prasanthbj05 | 159:390ca9b41d0e | 51 | PUTcrc_pass(beacon_tc,0x1);\ |
prasanthbj05 | 159:390ca9b41d0e | 52 | PUTexec_status(beacon_tc,0);\ |
prasanthbj05 | 159:390ca9b41d0e | 53 | beacon_tc->TC_string[0] = 0x01;\ |
prasanthbj05 | 159:390ca9b41d0e | 54 | beacon_tc->TC_string[1] = 0x60;\ |
prasanthbj05 | 159:390ca9b41d0e | 55 | beacon_tc->TC_string[2] = 0x81;\ |
prasanthbj05 | 159:390ca9b41d0e | 56 | beacon_tc->TC_string[3] = 0x21;\ |
prasanthbj05 | 159:390ca9b41d0e | 57 | beacon_tc->TC_string[4] = 0x00;\ |
prasanthbj05 | 159:390ca9b41d0e | 58 | beacon_tc->TC_string[5] = 0;\ |
prasanthbj05 | 159:390ca9b41d0e | 59 | beacon_tc->TC_string[6] = 0;\ |
prasanthbj05 | 159:390ca9b41d0e | 60 | beacon_tc->TC_string[7] = 0;\ |
prasanthbj05 | 159:390ca9b41d0e | 61 | beacon_tc->TC_string[8] = 0;\ |
prasanthbj05 | 159:390ca9b41d0e | 62 | beacon_tc->TC_string[9] = 0x1d;\ |
prasanthbj05 | 159:390ca9b41d0e | 63 | beacon_tc->TC_string[10] = 0xd9;\ |
prasanthbj05 | 159:390ca9b41d0e | 64 | for(uint8_t z=11;z<135;z++){beacon_tc->TC_string[z] = 0;}\ |
prasanthbj05 | 159:390ca9b41d0e | 65 | tm_ptr = FCTN_CDMS_RLY_TMTC(beacon_tc);\ |
prasanthbj05 | 159:390ca9b41d0e | 66 | } |
prasanthbj05 | 159:390ca9b41d0e | 67 | |
prasanthbj05 | 159:390ca9b41d0e | 68 | |
shreeshas95 | 106:5ce0337e7c15 | 69 | //void set_sig(){gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL);} |
ee12b079 | 131:d4a4461214ad | 70 | |
prasanthbj05 | 157:d99f525edc4c | 71 | /*void verifyHK_DATA() |
prasanthbj05 | 155:80e7c7ff8aaf | 72 | { |
prasanthbj05 | 155:80e7c7ff8aaf | 73 | /*hk_verify[0]=TM[26]; |
prasanthbj05 | 155:80e7c7ff8aaf | 74 | hk_verify[1]=TM[27]; |
prasanthbj05 | 155:80e7c7ff8aaf | 75 | hk_verify[2]=TM[28]; |
prasanthbj05 | 157:d99f525edc4c | 76 | hk_verify[3]=TM[29]; |
lakshya | 156:741ab5dd826d | 77 | |
lakshya | 156:741ab5dd826d | 78 | //float input=5.4332; |
lakshya | 156:741ab5dd826d | 79 | uint8_t output[4]; |
lakshya | 156:741ab5dd826d | 80 | uint8_t output1[4]; |
lakshya | 156:741ab5dd826d | 81 | // assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 82 | // uint32_t* temp = reinterpret_cast<uint32_t*>(&input); |
lakshya | 156:741ab5dd826d | 83 | |
lakshya | 156:741ab5dd826d | 84 | //float* output1 = reinterpret_cast<float*>(temp); |
lakshya | 156:741ab5dd826d | 85 | |
lakshya | 156:741ab5dd826d | 86 | // printf("\n\r %f ", input); |
lakshya | 156:741ab5dd826d | 87 | // std::cout << "\n\r uint32 \t"<<*temp << std::endl; |
lakshya | 156:741ab5dd826d | 88 | |
lakshya | 156:741ab5dd826d | 89 | /* output[0] =(uint8_t )(((*temp)>>24)&0xFF); |
lakshya | 156:741ab5dd826d | 90 | output[1] =(uint8_t ) (((*temp)>>16)&0xFF); |
lakshya | 156:741ab5dd826d | 91 | output[2] =(uint8_t ) (((*temp)>>8)&0xFF); |
lakshya | 156:741ab5dd826d | 92 | output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic |
lakshya | 156:741ab5dd826d | 93 | */ |
lakshya | 156:741ab5dd826d | 94 | //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]); |
lakshya | 156:741ab5dd826d | 95 | //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl; |
prasanthbj05 | 155:80e7c7ff8aaf | 96 | |
prasanthbj05 | 157:d99f525edc4c | 97 | /*convertion back or recheck code |
lakshya | 156:741ab5dd826d | 98 | |
lakshya | 156:741ab5dd826d | 99 | output[0] =TM[42]; |
lakshya | 156:741ab5dd826d | 100 | output[1] =TM[43]; |
lakshya | 156:741ab5dd826d | 101 | output[2] =TM[44]; |
lakshya | 156:741ab5dd826d | 102 | output[3] =TM[45]; // verify the logic |
lakshya | 156:741ab5dd826d | 103 | |
lakshya | 156:741ab5dd826d | 104 | //printf("\n\rthe value is 26\t %x\n",TM[38]); |
lakshya | 156:741ab5dd826d | 105 | // printf("\n\rthe value is 27\t%x\n",TM[39]); |
lakshya | 156:741ab5dd826d | 106 | // printf("\n\rthe value is 28\t%x\n",TM[40]); |
lakshya | 156:741ab5dd826d | 107 | // printf("\n\rthe value is 29\t%x\n",TM[41]); |
lakshya | 156:741ab5dd826d | 108 | |
lakshya | 156:741ab5dd826d | 109 | |
lakshya | 156:741ab5dd826d | 110 | |
prasanthbj05 | 155:80e7c7ff8aaf | 111 | uint32_t input_stage1=0x00000000; |
lakshya | 156:741ab5dd826d | 112 | output1[0]=(uint32_t)(output[0]); |
lakshya | 156:741ab5dd826d | 113 | output1[1]=(uint32_t)(output[1]); |
lakshya | 156:741ab5dd826d | 114 | output1[2]=(uint32_t)(output[2]); |
lakshya | 156:741ab5dd826d | 115 | output1[3]=(uint32_t)(output[3]); |
prasanthbj05 | 155:80e7c7ff8aaf | 116 | |
prasanthbj05 | 155:80e7c7ff8aaf | 117 | //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000)); |
prasanthbj05 | 155:80e7c7ff8aaf | 118 | input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]); |
prasanthbj05 | 155:80e7c7ff8aaf | 119 | |
prasanthbj05 | 155:80e7c7ff8aaf | 120 | |
prasanthbj05 | 155:80e7c7ff8aaf | 121 | assert(sizeof(float) == sizeof(uint32_t)); |
prasanthbj05 | 157:d99f525edc4c | 122 | float* temp1 = reinterpret_cast<float*>(&input_stage1); |
prasanthbj05 | 155:80e7c7ff8aaf | 123 | printf("\n\r the value is: %f \n",*temp1); |
lakshya | 156:741ab5dd826d | 124 | |
lakshya | 156:741ab5dd826d | 125 | |
lakshya | 156:741ab5dd826d | 126 | //___________________________________________________- |
lakshya | 156:741ab5dd826d | 127 | /* |
lakshya | 156:741ab5dd826d | 128 | float input =5.4367; |
lakshya | 156:741ab5dd826d | 129 | //uint32_t tem; |
lakshya | 156:741ab5dd826d | 130 | uint8_t Tmm[4]; |
lakshya | 156:741ab5dd826d | 131 | assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 132 | uint32_t* tem = reinterpret_cast<uint32_t*>(&input); |
lakshya | 156:741ab5dd826d | 133 | |
lakshya | 156:741ab5dd826d | 134 | Tmm[0] =(uint8_t )(((*tem)>>24)&0xFF); |
lakshya | 156:741ab5dd826d | 135 | Tmm[2] =(uint8_t ) (((*tem)>>16)&0xFF); |
lakshya | 156:741ab5dd826d | 136 | Tmm[1] =(uint8_t ) (((*tem)>>8)&0xFF); |
lakshya | 156:741ab5dd826d | 137 | Tmm[3] =(uint8_t ) ((*tem) & 0xFF); |
lakshya | 156:741ab5dd826d | 138 | |
lakshya | 156:741ab5dd826d | 139 | |
lakshya | 156:741ab5dd826d | 140 | uint8_t output1[4]; |
lakshya | 156:741ab5dd826d | 141 | //uint32_t input_stage1=0x00000000; |
lakshya | 156:741ab5dd826d | 142 | output1[0]=(uint32_t)(Tmm[0]); |
lakshya | 156:741ab5dd826d | 143 | output1[1]=(uint32_t)(Tmm[1]); |
lakshya | 156:741ab5dd826d | 144 | output1[2]=(uint32_t)(Tmm[2]); |
lakshya | 156:741ab5dd826d | 145 | output1[3]=(uint32_t)(Tmm[3]); |
lakshya | 156:741ab5dd826d | 146 | |
lakshya | 156:741ab5dd826d | 147 | |
lakshya | 156:741ab5dd826d | 148 | //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000)); |
lakshya | 156:741ab5dd826d | 149 | uint32_t input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]); |
lakshya | 156:741ab5dd826d | 150 | |
lakshya | 156:741ab5dd826d | 151 | |
lakshya | 156:741ab5dd826d | 152 | //assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 153 | float* value = reinterpret_cast<float*>(&input_stage1); |
lakshya | 156:741ab5dd826d | 154 | printf("\n\rthe actual value: %f\n",input); |
lakshya | 156:741ab5dd826d | 155 | printf("\n\r the value is: %f \n",&value); |
prasanthbj05 | 157:d99f525edc4c | 156 | |
prasanthbj05 | 157:d99f525edc4c | 157 | }*/ |
prasanthbj05 | 157:d99f525edc4c | 158 | |
prasanthbj05 | 157:d99f525edc4c | 159 | uint8_t test[10] = {0}; |
prasanthbj05 | 157:d99f525edc4c | 160 | Thread *ptr_t_i2c; |
prasanthbj05 | 157:d99f525edc4c | 161 | void test_thread(void const * args) |
prasanthbj05 | 157:d99f525edc4c | 162 | { |
prasanthbj05 | 157:d99f525edc4c | 163 | while(1) |
prasanthbj05 | 157:d99f525edc4c | 164 | { |
prasanthbj05 | 157:d99f525edc4c | 165 | //pc.printf("\n\n\rWaiting"); |
prasanthbj05 | 157:d99f525edc4c | 166 | Thread::signal_wait(0x4); //signalled by ISR when CDMS sends an interrupt |
prasanthbj05 | 157:d99f525edc4c | 167 | gPC.printf("\n\rThread started"); |
prasanthbj05 | 157:d99f525edc4c | 168 | for(uint8_t z=0;z<10;z++) |
prasanthbj05 | 157:d99f525edc4c | 169 | test[z] = 0x55; |
prasanthbj05 | 157:d99f525edc4c | 170 | //while(i2c_mutex.trylock()==false) |
prasanthbj05 | 157:d99f525edc4c | 171 | //{ |
prasanthbj05 | 157:d99f525edc4c | 172 | gPC.printf("\n\rThread 1 waiting for i2c_mutex"); |
prasanthbj05 | 157:d99f525edc4c | 173 | i2c_mutex.lock(); |
prasanthbj05 | 157:d99f525edc4c | 174 | //} |
prasanthbj05 | 157:d99f525edc4c | 175 | gPC.printf("\n\rMutex locked by Thread 1"); |
prasanthbj05 | 157:d99f525edc4c | 176 | write_ack = FCTN_I2C_WRITE((char*)TC,930); |
prasanthbj05 | 157:d99f525edc4c | 177 | wait(1); //should poll instead of wait |
prasanthbj05 | 157:d99f525edc4c | 178 | if(write_ack==0) |
prasanthbj05 | 157:d99f525edc4c | 179 | { |
prasanthbj05 | 157:d99f525edc4c | 180 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 181 | { |
prasanthbj05 | 157:d99f525edc4c | 182 | read_ack = FCTN_I2C_READ((char*)TM,135); |
prasanthbj05 | 157:d99f525edc4c | 183 | //gPC.printf("\n\rExited read"); |
prasanthbj05 | 157:d99f525edc4c | 184 | //pdir2 |
prasanthbj05 | 157:d99f525edc4c | 185 | //if(read_ack==1) |
prasanthbj05 | 157:d99f525edc4c | 186 | } |
prasanthbj05 | 157:d99f525edc4c | 187 | else |
prasanthbj05 | 157:d99f525edc4c | 188 | { |
prasanthbj05 | 157:d99f525edc4c | 189 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 190 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 191 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 192 | #endif |
prasanthbj05 | 157:d99f525edc4c | 193 | I2C_busreset(); |
prasanthbj05 | 157:d99f525edc4c | 194 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 195 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 196 | #endif |
prasanthbj05 | 157:d99f525edc4c | 197 | //I2C_reInit(); |
prasanthbj05 | 157:d99f525edc4c | 198 | //if(q==2) |
prasanthbj05 | 157:d99f525edc4c | 199 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 200 | //else |
prasanthbj05 | 157:d99f525edc4c | 201 | //debug3(); |
prasanthbj05 | 157:d99f525edc4c | 202 | } |
prasanthbj05 | 157:d99f525edc4c | 203 | write_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 204 | } |
prasanthbj05 | 157:d99f525edc4c | 205 | i2c_mutex.unlock(); |
prasanthbj05 | 157:d99f525edc4c | 206 | gPC.printf("\n\rMutex Unlocked by Thread 1"); |
prasanthbj05 | 157:d99f525edc4c | 207 | } |
prasanthbj05 | 155:80e7c7ff8aaf | 208 | } |
prasanthbj05 | 157:d99f525edc4c | 209 | //uint8_t buffer[512]; |
prasanthbj05 | 157:d99f525edc4c | 210 | void temp_isr() |
prasanthbj05 | 157:d99f525edc4c | 211 | { |
prasanthbj05 | 157:d99f525edc4c | 212 | //wait_us(300); |
prasanthbj05 | 157:d99f525edc4c | 213 | if(temp_flag ==1) |
prasanthbj05 | 157:d99f525edc4c | 214 | { |
prasanthbj05 | 157:d99f525edc4c | 215 | temp_flag |= 0x08; |
prasanthbj05 | 157:d99f525edc4c | 216 | temp_flag |= 0x04; |
prasanthbj05 | 157:d99f525edc4c | 217 | temp_flag |= 0x02; |
prasanthbj05 | 157:d99f525edc4c | 218 | temp_flag |= 0x01; |
prasanthbj05 | 157:d99f525edc4c | 219 | } |
prasanthbj05 | 157:d99f525edc4c | 220 | FCTN_CDMS_INIT_RTC(); |
prasanthbj05 | 157:d99f525edc4c | 221 | //for(int i=100;i<1000;i++){temp_flag ++;} |
prasanthbj05 | 157:d99f525edc4c | 222 | ptr_t_i2c->signal_set(0x4); |
prasanthbj05 | 157:d99f525edc4c | 223 | } |
prasanthbj05 | 157:d99f525edc4c | 224 | |
prasanthbj05 | 160:25a01d8da5d4 | 225 | void blink2(float delay) |
prasanthbj05 | 160:25a01d8da5d4 | 226 | { |
prasanthbj05 | 160:25a01d8da5d4 | 227 | for(uint8_t i=0;i<20;i++) |
prasanthbj05 | 160:25a01d8da5d4 | 228 | { |
prasanthbj05 | 160:25a01d8da5d4 | 229 | gLED2 = !gLED2; |
prasanthbj05 | 160:25a01d8da5d4 | 230 | wait(delay); |
prasanthbj05 | 160:25a01d8da5d4 | 231 | } |
prasanthbj05 | 160:25a01d8da5d4 | 232 | gLED2 = 0; |
prasanthbj05 | 160:25a01d8da5d4 | 233 | } |
prasanthbj05 | 160:25a01d8da5d4 | 234 | void blink3(float delay) |
prasanthbj05 | 160:25a01d8da5d4 | 235 | { |
prasanthbj05 | 160:25a01d8da5d4 | 236 | for(uint8_t i=0;i<20;i++) |
prasanthbj05 | 160:25a01d8da5d4 | 237 | { |
prasanthbj05 | 160:25a01d8da5d4 | 238 | gLED3 = !gLED3; |
prasanthbj05 | 160:25a01d8da5d4 | 239 | wait(delay); |
prasanthbj05 | 160:25a01d8da5d4 | 240 | } |
prasanthbj05 | 160:25a01d8da5d4 | 241 | gLED3 = 0; |
prasanthbj05 | 160:25a01d8da5d4 | 242 | } |
prasanthbj05 | 160:25a01d8da5d4 | 243 | void blink4(float delay) |
prasanthbj05 | 160:25a01d8da5d4 | 244 | { |
prasanthbj05 | 160:25a01d8da5d4 | 245 | for(uint8_t i=0;i<20;i++) |
prasanthbj05 | 160:25a01d8da5d4 | 246 | { |
prasanthbj05 | 160:25a01d8da5d4 | 247 | gLED4 = !gLED4; |
prasanthbj05 | 160:25a01d8da5d4 | 248 | wait(delay); |
prasanthbj05 | 160:25a01d8da5d4 | 249 | } |
prasanthbj05 | 160:25a01d8da5d4 | 250 | gLED4 = 0; |
prasanthbj05 | 160:25a01d8da5d4 | 251 | } |
shreeshas95 | 0:f016e9e8d48b | 252 | int main() |
shreeshas95 | 0:f016e9e8d48b | 253 | { |
ee12b079 | 148:e6c7d4f87704 | 254 | CDMS_I2C_GPIO = 0; |
ee12b079 | 148:e6c7d4f87704 | 255 | |
prasanthbj05 | 157:d99f525edc4c | 256 | |
ee12b079 | 94:717c7908c822 | 257 | //gLEDR = 1; |
ee12b079 | 93:4ca92f9775e0 | 258 | |
shreeshas95 | 0:f016e9e8d48b | 259 | // ******************INITIALISATIONS START****************** |
shreeshas95 | 0:f016e9e8d48b | 260 | // COM RX |
shreeshas95 | 0:f016e9e8d48b | 261 | RX1M.baud(1200); |
shreeshas95 | 0:f016e9e8d48b | 262 | gRX_HEAD_DATA_NODE = new COM_RX_DATA_NODE; |
shreeshas95 | 0:f016e9e8d48b | 263 | gRX_HEAD_DATA_NODE->next_node = NULL; |
shreeshas95 | 0:f016e9e8d48b | 264 | gRX_CURRENT_DATA_NODE = gRX_HEAD_DATA_NODE; |
shreeshas95 | 2:2caf2a9a13aa | 265 | gRX_COUNT = 0; |
shreeshas95 | 2:2caf2a9a13aa | 266 | // gRX_CURRENT_PTR = gRX_CURRENT_DATA_NODE->values; |
shreeshas95 | 0:f016e9e8d48b | 267 | RX1M.attach(&rx_read, Serial::RxIrq); |
shreeshas95 | 0:f016e9e8d48b | 268 | |
prasanthbj05 | 157:d99f525edc4c | 269 | //#if I2c |
ee12b079 | 129:d5b53088270b | 270 | //I2C to Payload (depends on pl interrupt design) |
prasanthbj05 | 157:d99f525edc4c | 271 | //PYLD_I2C_Int.rise(&isr_pyldtm); |
ee12b079 | 148:e6c7d4f87704 | 272 | |
prasanthbj05 | 157:d99f525edc4c | 273 | //#endif |
prasanthbj05 | 158:68502402270d | 274 | master.frequency(100000); |
shreeshas95 | 0:f016e9e8d48b | 275 | // DEBUG |
prasanthbj05 | 157:d99f525edc4c | 276 | |
prasanthbj05 | 155:80e7c7ff8aaf | 277 | gPC.baud(9600); |
prasanthbj05 | 157:d99f525edc4c | 278 | gPC.puts("\n\rwelcome to mng_tm_tc\r\n"); |
shreeshas95 | 0:f016e9e8d48b | 279 | // COMMON SPI |
ee12b079 | 149:8e4155426581 | 280 | // spi.format(8,0); |
ee12b079 | 149:8e4155426581 | 281 | // spi.frequency(1000000); |
ee12b079 | 149:8e4155426581 | 282 | // |
ee12b079 | 149:8e4155426581 | 283 | // // SD CARD |
prasanthbj05 | 157:d99f525edc4c | 284 | cs_sd = 1; |
prasanthbj05 | 157:d99f525edc4c | 285 | gCS_RTC = 1; |
prasanthbj05 | 157:d99f525edc4c | 286 | gCS_ADF = 1; |
ee12b079 | 149:8e4155426581 | 287 | // |
ee12b079 | 149:8e4155426581 | 288 | // //FCTN_CDMS_INIT_RTC();/* rtc initialization*/ |
ee12b079 | 149:8e4155426581 | 289 | // #if SDCARD |
prasanthbj05 | 157:d99f525edc4c | 290 | |
ee12b079 | 149:8e4155426581 | 291 | // #endif |
ee12b079 | 149:8e4155426581 | 292 | // |
ee12b079 | 149:8e4155426581 | 293 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 294 | // gPC.puts("welcome to mng_tmtc\r\n"); |
ee12b079 | 149:8e4155426581 | 295 | // #endif |
ee12b079 | 149:8e4155426581 | 296 | // |
ee12b079 | 149:8e4155426581 | 297 | // // COM_MNG_TMTC THREAD |
ee12b079 | 149:8e4155426581 | 298 | // gCOM_MNG_TMTC_THREAD = new Thread(COM_MNG_TMTC_FUN); |
ee12b079 | 149:8e4155426581 | 299 | // gCOM_MNG_TMTC_THREAD->set_priority(osPriorityAboveNormal); |
ee12b079 | 149:8e4155426581 | 300 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 301 | // gPC.puts("allocating threads\r\n"); |
ee12b079 | 149:8e4155426581 | 302 | // #endif |
ee12b079 | 149:8e4155426581 | 303 | // #if SDCARD |
ee12b079 | 149:8e4155426581 | 304 | // gSCIENCE_THREAD = new Thread(SCIENCE_FUN); |
ee12b079 | 149:8e4155426581 | 305 | // // gPC.puts("step one complete\r\n"); |
ee12b079 | 149:8e4155426581 | 306 | // gSCIENCE_THREAD->set_priority(osPriorityBelowNormal); |
ee12b079 | 149:8e4155426581 | 307 | // #endif |
ee12b079 | 149:8e4155426581 | 308 | // |
ee12b079 | 149:8e4155426581 | 309 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 310 | // gPC.puts("competed allocating threads\r\n"); |
ee12b079 | 149:8e4155426581 | 311 | // #endif |
ee12b079 | 149:8e4155426581 | 312 | // |
shreeshas95 | 0:f016e9e8d48b | 313 | // *******************INITIALISATIONS END******************** |
shreeshas95 | 0:f016e9e8d48b | 314 | |
ee12b079 | 112:b8991d9e3b6c | 315 | //RtosTimer gCDMS_HK_TIMER(FCTN_CDMS_HK_MAIN, osTimerPeriodic); |
ee12b079 | 112:b8991d9e3b6c | 316 | //gCDMS_HK_TIMER.start(5000); |
prasanthbj05 | 157:d99f525edc4c | 317 | |
prasanthbj05 | 157:d99f525edc4c | 318 | ptr_t_i2c = new Thread(test_thread); |
prasanthbj05 | 157:d99f525edc4c | 319 | ptr_t_i2c->set_priority(osPriorityRealtime); |
prasanthbj05 | 157:d99f525edc4c | 320 | |
prasanthbj05 | 157:d99f525edc4c | 321 | temp_irpt.enable_irq(); |
prasanthbj05 | 157:d99f525edc4c | 322 | temp_irpt.mode(PullUp); |
prasanthbj05 | 157:d99f525edc4c | 323 | temp_irpt.fall(&temp_isr); |
prasanthbj05 | 157:d99f525edc4c | 324 | uint8_t q=0; |
prasanthbj05 | 158:68502402270d | 325 | |
prasanthbj05 | 158:68502402270d | 326 | uint8_t TC[135]; |
prasanthbj05 | 158:68502402270d | 327 | for(uint8_t z=0;z<135;z++) |
prasanthbj05 | 158:68502402270d | 328 | TC[z] = 0x55; |
prasanthbj05 | 158:68502402270d | 329 | |
prasanthbj05 | 158:68502402270d | 330 | /*int arr2[135][3]; |
prasanthbj05 | 158:68502402270d | 331 | for(uint8_t z=0;z<135;z++) |
prasanthbj05 | 157:d99f525edc4c | 332 | { |
prasanthbj05 | 158:68502402270d | 333 | arr2[z][0]= 135; |
prasanthbj05 | 157:d99f525edc4c | 334 | arr2[z][1]=1; |
prasanthbj05 | 157:d99f525edc4c | 335 | arr2[z][2]=135 ; |
prasanthbj05 | 158:68502402270d | 336 | }*/ |
prasanthbj05 | 155:80e7c7ff8aaf | 337 | //uint8_t hk_verify[4]; |
prasanthbj05 | 157:d99f525edc4c | 338 | int arr1[44][3]={ |
prasanthbj05 | 158:68502402270d | 339 | {135,5,134}, |
prasanthbj05 | 158:68502402270d | 340 | {135 ,1,134},//11,137 |
prasanthbj05 | 158:68502402270d | 341 | {135 ,1,134},//14,200 |
prasanthbj05 | 158:68502402270d | 342 | {135 ,1,134},//1,142 |
prasanthbj05 | 158:68502402270d | 343 | {20 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 344 | {20 ,1,135},//11,135 |
prasanthbj05 | 157:d99f525edc4c | 345 | {1 ,1,135},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 346 | {14 ,1,200},//14,200 |
prasanthbj05 | 157:d99f525edc4c | 347 | {1 ,1,200},//1,200 |
prasanthbj05 | 158:68502402270d | 348 | {135 ,1,134},//0,135 |
prasanthbj05 | 157:d99f525edc4c | 349 | {1 ,1,128},//1,128 |
prasanthbj05 | 157:d99f525edc4c | 350 | {51 ,1,135},//51,135 |
prasanthbj05 | 158:68502402270d | 351 | {11 ,1,134},//11,135 |
prasanthbj05 | 157:d99f525edc4c | 352 | {0 ,1,215},//0,215 |
prasanthbj05 | 157:d99f525edc4c | 353 | {1 ,1,135},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 354 | {1 ,1,35},//1,35 |
prasanthbj05 | 158:68502402270d | 355 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 356 | {14 ,1,55},//14,55 |
prasanthbj05 | 158:68502402270d | 357 | {11 ,1,134}, |
prasanthbj05 | 158:68502402270d | 358 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 359 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 360 | {130 ,1,235},//130,235 |
prasanthbj05 | 157:d99f525edc4c | 361 | {130 ,1,35},//130,35 |
prasanthbj05 | 158:68502402270d | 362 | {1 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 363 | {0 ,1,1},//0,1 |
prasanthbj05 | 157:d99f525edc4c | 364 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 365 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 366 | {11 ,1,135}, |
prasanthbj05 | 158:68502402270d | 367 | {0 ,1,134},//0,135 |
prasanthbj05 | 157:d99f525edc4c | 368 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 369 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 370 | {11 ,1,135}, |
prasanthbj05 | 158:68502402270d | 371 | {1 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 372 | {0 ,1,145},//0,145 |
prasanthbj05 | 157:d99f525edc4c | 373 | {5 ,1,15},//5,15 |
prasanthbj05 | 158:68502402270d | 374 | {14 ,1,134},//14,135 |
prasanthbj05 | 158:68502402270d | 375 | {12 ,1,134},//2,135 |
prasanthbj05 | 157:d99f525edc4c | 376 | {86 ,1,165},//86,165 |
prasanthbj05 | 157:d99f525edc4c | 377 | {130 ,1,5},//130,5 |
prasanthbj05 | 157:d99f525edc4c | 378 | {230 ,1,1},//230,1 |
prasanthbj05 | 157:d99f525edc4c | 379 | {130 ,1,135},//130,135 |
prasanthbj05 | 158:68502402270d | 380 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 381 | {11 ,1,155}, |
prasanthbj05 | 158:68502402270d | 382 | {11 ,1,134} |
prasanthbj05 | 157:d99f525edc4c | 383 | }; |
prasanthbj05 | 157:d99f525edc4c | 384 | //gPC.printf("\n\n\rInitial values:\n"); |
prasanthbj05 | 157:d99f525edc4c | 385 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 386 | //debug2(); |
prasanthbj05 | 157:d99f525edc4c | 387 | //gPC.printf("\n\r SIM->SCGC4 = 0x%08X",SIM->SCGC4); |
prasanthbj05 | 157:d99f525edc4c | 388 | Timer t; |
prasanthbj05 | 157:d99f525edc4c | 389 | //gPC.printf("\n\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 390 | gPC.printf("\n\n\rSending tc"); |
prasanthbj05 | 159:390ca9b41d0e | 391 | |
prasanthbj05 | 159:390ca9b41d0e | 392 | Base_tm* tm_ptr = new Long_tm; |
prasanthbj05 | 159:390ca9b41d0e | 393 | PL_TC(tm_ptr); |
prasanthbj05 | 159:390ca9b41d0e | 394 | |
prasanthbj05 | 157:d99f525edc4c | 395 | //gPC.printf("\n\rPORTE->PCR[24] = 0x%08X",PORTE->PCR[24]); |
prasanthbj05 | 157:d99f525edc4c | 396 | //gPC.printf("\n\rPORTE->PCR[25] = 0x%08X\n",PORTE->PCR[25]); |
prasanthbj05 | 157:d99f525edc4c | 397 | |
prasanthbj05 | 157:d99f525edc4c | 398 | bool write_ack=1,read_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 399 | wait(5); |
prasanthbj05 | 160:25a01d8da5d4 | 400 | while(q<1) |
prasanthbj05 | 157:d99f525edc4c | 401 | { |
prasanthbj05 | 157:d99f525edc4c | 402 | //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]); |
prasanthbj05 | 158:68502402270d | 403 | wait(arr1[q][1]); |
prasanthbj05 | 158:68502402270d | 404 | //gPC.printf("\n\rIndex = %d",q); |
prasanthbj05 | 157:d99f525edc4c | 405 | //while(i2c_mutex.trylock()==false) |
prasanthbj05 | 155:80e7c7ff8aaf | 406 | //{ |
prasanthbj05 | 158:68502402270d | 407 | //gPC.printf("\n\rMain waiting for mutex"); |
prasanthbj05 | 157:d99f525edc4c | 408 | i2c_mutex.lock(); |
prasanthbj05 | 155:80e7c7ff8aaf | 409 | //} |
prasanthbj05 | 158:68502402270d | 410 | //gPC.printf("\n\n\rMutex locked by Main"); |
prasanthbj05 | 158:68502402270d | 411 | gPC.printf("\n\rGiven TC Size : %d",arr1[q][0]); |
prasanthbj05 | 158:68502402270d | 412 | gPC.printf("\n\rGiven TM Size : %d",arr1[q][2]); |
prasanthbj05 | 157:d99f525edc4c | 413 | //wait_ms(1200); |
prasanthbj05 | 158:68502402270d | 414 | write_ack = FCTN_I2C_WRITE((char*)TC,arr1[q][0]); |
prasanthbj05 | 157:d99f525edc4c | 415 | wait(1); //should poll instead of wait |
prasanthbj05 | 157:d99f525edc4c | 416 | if(write_ack==0) |
prasanthbj05 | 157:d99f525edc4c | 417 | { |
prasanthbj05 | 160:25a01d8da5d4 | 418 | blink2(1); |
prasanthbj05 | 157:d99f525edc4c | 419 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 420 | { |
prasanthbj05 | 158:68502402270d | 421 | read_ack = FCTN_I2C_READ((char*)TM,arr1[q][2]); |
prasanthbj05 | 160:25a01d8da5d4 | 422 | if(read_ack == 0) |
prasanthbj05 | 160:25a01d8da5d4 | 423 | blink3(1); |
prasanthbj05 | 160:25a01d8da5d4 | 424 | else if(read_ack ==1) |
prasanthbj05 | 160:25a01d8da5d4 | 425 | blink3(0.3); |
prasanthbj05 | 157:d99f525edc4c | 426 | } |
prasanthbj05 | 157:d99f525edc4c | 427 | else |
prasanthbj05 | 157:d99f525edc4c | 428 | { |
prasanthbj05 | 157:d99f525edc4c | 429 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 430 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 431 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 432 | #endif |
prasanthbj05 | 157:d99f525edc4c | 433 | I2C_busreset(); |
prasanthbj05 | 157:d99f525edc4c | 434 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 435 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 436 | #endif |
prasanthbj05 | 157:d99f525edc4c | 437 | } |
prasanthbj05 | 157:d99f525edc4c | 438 | write_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 439 | } |
prasanthbj05 | 160:25a01d8da5d4 | 440 | else if (write_ack ==1) |
prasanthbj05 | 160:25a01d8da5d4 | 441 | blink2(0.3); |
prasanthbj05 | 157:d99f525edc4c | 442 | i2c_mutex.unlock(); |
prasanthbj05 | 158:68502402270d | 443 | //gPC.printf("\n\rMutex Unlocked by Main"); |
prasanthbj05 | 157:d99f525edc4c | 444 | //gPC.printf("\n\Flag = %d",temp_flag); |
prasanthbj05 | 157:d99f525edc4c | 445 | temp_flag=0; |
prasanthbj05 | 157:d99f525edc4c | 446 | q++; |
prasanthbj05 | 157:d99f525edc4c | 447 | } |
prasanthbj05 | 157:d99f525edc4c | 448 | //wait(5); |
prasanthbj05 | 157:d99f525edc4c | 449 | /*while(1) |
prasanthbj05 | 157:d99f525edc4c | 450 | { |
prasanthbj05 | 157:d99f525edc4c | 451 | write_ack = FCTN_I2C_WRITE((char*)TC,arr1[0][0]); |
prasanthbj05 | 157:d99f525edc4c | 452 | wait_us(1); |
prasanthbj05 | 157:d99f525edc4c | 453 | }*/ |
prasanthbj05 | 157:d99f525edc4c | 454 | |
prasanthbj05 | 157:d99f525edc4c | 455 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 456 | //debug3(); |
prasanthbj05 | 157:d99f525edc4c | 457 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 458 | //master.stop(); |
prasanthbj05 | 157:d99f525edc4c | 459 | //wait_ms(2); |
prasanthbj05 | 157:d99f525edc4c | 460 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 461 | /*while(q<5) |
prasanthbj05 | 157:d99f525edc4c | 462 | { |
prasanthbj05 | 157:d99f525edc4c | 463 | //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]); |
prasanthbj05 | 157:d99f525edc4c | 464 | wait(10); |
prasanthbj05 | 157:d99f525edc4c | 465 | FCTN_I2C_WRITE((char*)TC,11); |
prasanthbj05 | 157:d99f525edc4c | 466 | wait(0.2); |
prasanthbj05 | 157:d99f525edc4c | 467 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 468 | { |
prasanthbj05 | 157:d99f525edc4c | 469 | // printf("receiving...\r\n"); |
prasanthbj05 | 157:d99f525edc4c | 470 | FCTN_I2C_READ((char*)TM,arr1[q][2]); |
prasanthbj05 | 157:d99f525edc4c | 471 | } |
prasanthbj05 | 157:d99f525edc4c | 472 | else |
prasanthbj05 | 157:d99f525edc4c | 473 | { |
prasanthbj05 | 157:d99f525edc4c | 474 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 475 | I2C_reInit(); |
prasanthbj05 | 157:d99f525edc4c | 476 | } |
prasanthbj05 | 157:d99f525edc4c | 477 | q++; |
prasanthbj05 | 157:d99f525edc4c | 478 | } |
prasanthbj05 | 157:d99f525edc4c | 479 | */ |
shreeshas95 | 0:f016e9e8d48b | 480 | while(true){ |
ee12b079 | 94:717c7908c822 | 481 | Thread::wait(osWaitForever); |
ee12b079 | 93:4ca92f9775e0 | 482 | //state = gCOM_MNG_TMTC_THREAD->get_state() + '0'; |
prasanthbj05 | 160:25a01d8da5d4 | 483 | gLED1 = !gLED1; |
prasanthbj05 | 160:25a01d8da5d4 | 484 | //wait(1); |
ee12b079 | 93:4ca92f9775e0 | 485 | //gPC.putc(state); |
shreeshas95 | 0:f016e9e8d48b | 486 | } |
shreeshas95 | 0:f016e9e8d48b | 487 | } |