cdms_i2c_hardware_test
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of standaloneworkingi2c_cdms by
main.cpp@158:68502402270d, 2016-07-04 (annotated)
- Committer:
- prasanthbj05
- Date:
- Mon Jul 04 20:28:03 2016 +0000
- Revision:
- 158:68502402270d
- Parent:
- 157:d99f525edc4c
- Child:
- 159:390ca9b41d0e
comparing with standalone;
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 | |
shreeshas95 | 106:5ce0337e7c15 | 46 | //void set_sig(){gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL);} |
ee12b079 | 131:d4a4461214ad | 47 | |
prasanthbj05 | 157:d99f525edc4c | 48 | /*void verifyHK_DATA() |
prasanthbj05 | 155:80e7c7ff8aaf | 49 | { |
prasanthbj05 | 155:80e7c7ff8aaf | 50 | /*hk_verify[0]=TM[26]; |
prasanthbj05 | 155:80e7c7ff8aaf | 51 | hk_verify[1]=TM[27]; |
prasanthbj05 | 155:80e7c7ff8aaf | 52 | hk_verify[2]=TM[28]; |
prasanthbj05 | 157:d99f525edc4c | 53 | hk_verify[3]=TM[29]; |
lakshya | 156:741ab5dd826d | 54 | |
lakshya | 156:741ab5dd826d | 55 | //float input=5.4332; |
lakshya | 156:741ab5dd826d | 56 | uint8_t output[4]; |
lakshya | 156:741ab5dd826d | 57 | uint8_t output1[4]; |
lakshya | 156:741ab5dd826d | 58 | // assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 59 | // uint32_t* temp = reinterpret_cast<uint32_t*>(&input); |
lakshya | 156:741ab5dd826d | 60 | |
lakshya | 156:741ab5dd826d | 61 | //float* output1 = reinterpret_cast<float*>(temp); |
lakshya | 156:741ab5dd826d | 62 | |
lakshya | 156:741ab5dd826d | 63 | // printf("\n\r %f ", input); |
lakshya | 156:741ab5dd826d | 64 | // std::cout << "\n\r uint32 \t"<<*temp << std::endl; |
lakshya | 156:741ab5dd826d | 65 | |
lakshya | 156:741ab5dd826d | 66 | /* output[0] =(uint8_t )(((*temp)>>24)&0xFF); |
lakshya | 156:741ab5dd826d | 67 | output[1] =(uint8_t ) (((*temp)>>16)&0xFF); |
lakshya | 156:741ab5dd826d | 68 | output[2] =(uint8_t ) (((*temp)>>8)&0xFF); |
lakshya | 156:741ab5dd826d | 69 | output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic |
lakshya | 156:741ab5dd826d | 70 | */ |
lakshya | 156:741ab5dd826d | 71 | //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]); |
lakshya | 156:741ab5dd826d | 72 | //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl; |
prasanthbj05 | 155:80e7c7ff8aaf | 73 | |
prasanthbj05 | 157:d99f525edc4c | 74 | /*convertion back or recheck code |
lakshya | 156:741ab5dd826d | 75 | |
lakshya | 156:741ab5dd826d | 76 | output[0] =TM[42]; |
lakshya | 156:741ab5dd826d | 77 | output[1] =TM[43]; |
lakshya | 156:741ab5dd826d | 78 | output[2] =TM[44]; |
lakshya | 156:741ab5dd826d | 79 | output[3] =TM[45]; // verify the logic |
lakshya | 156:741ab5dd826d | 80 | |
lakshya | 156:741ab5dd826d | 81 | //printf("\n\rthe value is 26\t %x\n",TM[38]); |
lakshya | 156:741ab5dd826d | 82 | // printf("\n\rthe value is 27\t%x\n",TM[39]); |
lakshya | 156:741ab5dd826d | 83 | // printf("\n\rthe value is 28\t%x\n",TM[40]); |
lakshya | 156:741ab5dd826d | 84 | // printf("\n\rthe value is 29\t%x\n",TM[41]); |
lakshya | 156:741ab5dd826d | 85 | |
lakshya | 156:741ab5dd826d | 86 | |
lakshya | 156:741ab5dd826d | 87 | |
prasanthbj05 | 155:80e7c7ff8aaf | 88 | uint32_t input_stage1=0x00000000; |
lakshya | 156:741ab5dd826d | 89 | output1[0]=(uint32_t)(output[0]); |
lakshya | 156:741ab5dd826d | 90 | output1[1]=(uint32_t)(output[1]); |
lakshya | 156:741ab5dd826d | 91 | output1[2]=(uint32_t)(output[2]); |
lakshya | 156:741ab5dd826d | 92 | output1[3]=(uint32_t)(output[3]); |
prasanthbj05 | 155:80e7c7ff8aaf | 93 | |
prasanthbj05 | 155:80e7c7ff8aaf | 94 | //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000)); |
prasanthbj05 | 155:80e7c7ff8aaf | 95 | input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]); |
prasanthbj05 | 155:80e7c7ff8aaf | 96 | |
prasanthbj05 | 155:80e7c7ff8aaf | 97 | |
prasanthbj05 | 155:80e7c7ff8aaf | 98 | assert(sizeof(float) == sizeof(uint32_t)); |
prasanthbj05 | 157:d99f525edc4c | 99 | float* temp1 = reinterpret_cast<float*>(&input_stage1); |
prasanthbj05 | 155:80e7c7ff8aaf | 100 | printf("\n\r the value is: %f \n",*temp1); |
lakshya | 156:741ab5dd826d | 101 | |
lakshya | 156:741ab5dd826d | 102 | |
lakshya | 156:741ab5dd826d | 103 | //___________________________________________________- |
lakshya | 156:741ab5dd826d | 104 | /* |
lakshya | 156:741ab5dd826d | 105 | float input =5.4367; |
lakshya | 156:741ab5dd826d | 106 | //uint32_t tem; |
lakshya | 156:741ab5dd826d | 107 | uint8_t Tmm[4]; |
lakshya | 156:741ab5dd826d | 108 | assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 109 | uint32_t* tem = reinterpret_cast<uint32_t*>(&input); |
lakshya | 156:741ab5dd826d | 110 | |
lakshya | 156:741ab5dd826d | 111 | Tmm[0] =(uint8_t )(((*tem)>>24)&0xFF); |
lakshya | 156:741ab5dd826d | 112 | Tmm[2] =(uint8_t ) (((*tem)>>16)&0xFF); |
lakshya | 156:741ab5dd826d | 113 | Tmm[1] =(uint8_t ) (((*tem)>>8)&0xFF); |
lakshya | 156:741ab5dd826d | 114 | Tmm[3] =(uint8_t ) ((*tem) & 0xFF); |
lakshya | 156:741ab5dd826d | 115 | |
lakshya | 156:741ab5dd826d | 116 | |
lakshya | 156:741ab5dd826d | 117 | uint8_t output1[4]; |
lakshya | 156:741ab5dd826d | 118 | //uint32_t input_stage1=0x00000000; |
lakshya | 156:741ab5dd826d | 119 | output1[0]=(uint32_t)(Tmm[0]); |
lakshya | 156:741ab5dd826d | 120 | output1[1]=(uint32_t)(Tmm[1]); |
lakshya | 156:741ab5dd826d | 121 | output1[2]=(uint32_t)(Tmm[2]); |
lakshya | 156:741ab5dd826d | 122 | output1[3]=(uint32_t)(Tmm[3]); |
lakshya | 156:741ab5dd826d | 123 | |
lakshya | 156:741ab5dd826d | 124 | |
lakshya | 156:741ab5dd826d | 125 | //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000)); |
lakshya | 156:741ab5dd826d | 126 | uint32_t input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]); |
lakshya | 156:741ab5dd826d | 127 | |
lakshya | 156:741ab5dd826d | 128 | |
lakshya | 156:741ab5dd826d | 129 | //assert(sizeof(float) == sizeof(uint32_t)); |
lakshya | 156:741ab5dd826d | 130 | float* value = reinterpret_cast<float*>(&input_stage1); |
lakshya | 156:741ab5dd826d | 131 | printf("\n\rthe actual value: %f\n",input); |
lakshya | 156:741ab5dd826d | 132 | printf("\n\r the value is: %f \n",&value); |
prasanthbj05 | 157:d99f525edc4c | 133 | |
prasanthbj05 | 157:d99f525edc4c | 134 | }*/ |
prasanthbj05 | 157:d99f525edc4c | 135 | |
prasanthbj05 | 157:d99f525edc4c | 136 | uint8_t test[10] = {0}; |
prasanthbj05 | 157:d99f525edc4c | 137 | Thread *ptr_t_i2c; |
prasanthbj05 | 157:d99f525edc4c | 138 | void test_thread(void const * args) |
prasanthbj05 | 157:d99f525edc4c | 139 | { |
prasanthbj05 | 157:d99f525edc4c | 140 | while(1) |
prasanthbj05 | 157:d99f525edc4c | 141 | { |
prasanthbj05 | 157:d99f525edc4c | 142 | //pc.printf("\n\n\rWaiting"); |
prasanthbj05 | 157:d99f525edc4c | 143 | Thread::signal_wait(0x4); //signalled by ISR when CDMS sends an interrupt |
prasanthbj05 | 157:d99f525edc4c | 144 | gPC.printf("\n\rThread started"); |
prasanthbj05 | 157:d99f525edc4c | 145 | for(uint8_t z=0;z<10;z++) |
prasanthbj05 | 157:d99f525edc4c | 146 | test[z] = 0x55; |
prasanthbj05 | 157:d99f525edc4c | 147 | //while(i2c_mutex.trylock()==false) |
prasanthbj05 | 157:d99f525edc4c | 148 | //{ |
prasanthbj05 | 157:d99f525edc4c | 149 | gPC.printf("\n\rThread 1 waiting for i2c_mutex"); |
prasanthbj05 | 157:d99f525edc4c | 150 | i2c_mutex.lock(); |
prasanthbj05 | 157:d99f525edc4c | 151 | //} |
prasanthbj05 | 157:d99f525edc4c | 152 | gPC.printf("\n\rMutex locked by Thread 1"); |
prasanthbj05 | 157:d99f525edc4c | 153 | write_ack = FCTN_I2C_WRITE((char*)TC,930); |
prasanthbj05 | 157:d99f525edc4c | 154 | wait(1); //should poll instead of wait |
prasanthbj05 | 157:d99f525edc4c | 155 | if(write_ack==0) |
prasanthbj05 | 157:d99f525edc4c | 156 | { |
prasanthbj05 | 157:d99f525edc4c | 157 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 158 | { |
prasanthbj05 | 157:d99f525edc4c | 159 | read_ack = FCTN_I2C_READ((char*)TM,135); |
prasanthbj05 | 157:d99f525edc4c | 160 | //gPC.printf("\n\rExited read"); |
prasanthbj05 | 157:d99f525edc4c | 161 | //pdir2 |
prasanthbj05 | 157:d99f525edc4c | 162 | //if(read_ack==1) |
prasanthbj05 | 157:d99f525edc4c | 163 | } |
prasanthbj05 | 157:d99f525edc4c | 164 | else |
prasanthbj05 | 157:d99f525edc4c | 165 | { |
prasanthbj05 | 157:d99f525edc4c | 166 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 167 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 168 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 169 | #endif |
prasanthbj05 | 157:d99f525edc4c | 170 | I2C_busreset(); |
prasanthbj05 | 157:d99f525edc4c | 171 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 172 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 173 | #endif |
prasanthbj05 | 157:d99f525edc4c | 174 | //I2C_reInit(); |
prasanthbj05 | 157:d99f525edc4c | 175 | //if(q==2) |
prasanthbj05 | 157:d99f525edc4c | 176 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 177 | //else |
prasanthbj05 | 157:d99f525edc4c | 178 | //debug3(); |
prasanthbj05 | 157:d99f525edc4c | 179 | } |
prasanthbj05 | 157:d99f525edc4c | 180 | write_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 181 | } |
prasanthbj05 | 157:d99f525edc4c | 182 | i2c_mutex.unlock(); |
prasanthbj05 | 157:d99f525edc4c | 183 | gPC.printf("\n\rMutex Unlocked by Thread 1"); |
prasanthbj05 | 157:d99f525edc4c | 184 | } |
prasanthbj05 | 155:80e7c7ff8aaf | 185 | } |
prasanthbj05 | 157:d99f525edc4c | 186 | //uint8_t buffer[512]; |
prasanthbj05 | 157:d99f525edc4c | 187 | void temp_isr() |
prasanthbj05 | 157:d99f525edc4c | 188 | { |
prasanthbj05 | 157:d99f525edc4c | 189 | //wait_us(300); |
prasanthbj05 | 157:d99f525edc4c | 190 | if(temp_flag ==1) |
prasanthbj05 | 157:d99f525edc4c | 191 | { |
prasanthbj05 | 157:d99f525edc4c | 192 | temp_flag |= 0x08; |
prasanthbj05 | 157:d99f525edc4c | 193 | temp_flag |= 0x04; |
prasanthbj05 | 157:d99f525edc4c | 194 | temp_flag |= 0x02; |
prasanthbj05 | 157:d99f525edc4c | 195 | temp_flag |= 0x01; |
prasanthbj05 | 157:d99f525edc4c | 196 | } |
prasanthbj05 | 157:d99f525edc4c | 197 | FCTN_CDMS_INIT_RTC(); |
prasanthbj05 | 157:d99f525edc4c | 198 | //for(int i=100;i<1000;i++){temp_flag ++;} |
prasanthbj05 | 157:d99f525edc4c | 199 | ptr_t_i2c->signal_set(0x4); |
prasanthbj05 | 157:d99f525edc4c | 200 | } |
prasanthbj05 | 157:d99f525edc4c | 201 | |
shreeshas95 | 0:f016e9e8d48b | 202 | int main() |
shreeshas95 | 0:f016e9e8d48b | 203 | { |
ee12b079 | 148:e6c7d4f87704 | 204 | CDMS_I2C_GPIO = 0; |
ee12b079 | 148:e6c7d4f87704 | 205 | |
prasanthbj05 | 157:d99f525edc4c | 206 | |
ee12b079 | 94:717c7908c822 | 207 | //gLEDR = 1; |
ee12b079 | 93:4ca92f9775e0 | 208 | |
shreeshas95 | 0:f016e9e8d48b | 209 | // ******************INITIALISATIONS START****************** |
shreeshas95 | 0:f016e9e8d48b | 210 | // COM RX |
shreeshas95 | 0:f016e9e8d48b | 211 | RX1M.baud(1200); |
shreeshas95 | 0:f016e9e8d48b | 212 | gRX_HEAD_DATA_NODE = new COM_RX_DATA_NODE; |
shreeshas95 | 0:f016e9e8d48b | 213 | gRX_HEAD_DATA_NODE->next_node = NULL; |
shreeshas95 | 0:f016e9e8d48b | 214 | gRX_CURRENT_DATA_NODE = gRX_HEAD_DATA_NODE; |
shreeshas95 | 2:2caf2a9a13aa | 215 | gRX_COUNT = 0; |
shreeshas95 | 2:2caf2a9a13aa | 216 | // gRX_CURRENT_PTR = gRX_CURRENT_DATA_NODE->values; |
shreeshas95 | 0:f016e9e8d48b | 217 | RX1M.attach(&rx_read, Serial::RxIrq); |
shreeshas95 | 0:f016e9e8d48b | 218 | |
prasanthbj05 | 157:d99f525edc4c | 219 | //#if I2c |
ee12b079 | 129:d5b53088270b | 220 | //I2C to Payload (depends on pl interrupt design) |
prasanthbj05 | 157:d99f525edc4c | 221 | //PYLD_I2C_Int.rise(&isr_pyldtm); |
ee12b079 | 148:e6c7d4f87704 | 222 | |
prasanthbj05 | 157:d99f525edc4c | 223 | //#endif |
prasanthbj05 | 158:68502402270d | 224 | master.frequency(100000); |
shreeshas95 | 0:f016e9e8d48b | 225 | // DEBUG |
prasanthbj05 | 157:d99f525edc4c | 226 | |
prasanthbj05 | 155:80e7c7ff8aaf | 227 | gPC.baud(9600); |
prasanthbj05 | 157:d99f525edc4c | 228 | gPC.puts("\n\rwelcome to mng_tm_tc\r\n"); |
shreeshas95 | 0:f016e9e8d48b | 229 | // COMMON SPI |
ee12b079 | 149:8e4155426581 | 230 | // spi.format(8,0); |
ee12b079 | 149:8e4155426581 | 231 | // spi.frequency(1000000); |
ee12b079 | 149:8e4155426581 | 232 | // |
ee12b079 | 149:8e4155426581 | 233 | // // SD CARD |
prasanthbj05 | 157:d99f525edc4c | 234 | cs_sd = 1; |
prasanthbj05 | 157:d99f525edc4c | 235 | gCS_RTC = 1; |
prasanthbj05 | 157:d99f525edc4c | 236 | gCS_ADF = 1; |
ee12b079 | 149:8e4155426581 | 237 | // |
ee12b079 | 149:8e4155426581 | 238 | // //FCTN_CDMS_INIT_RTC();/* rtc initialization*/ |
ee12b079 | 149:8e4155426581 | 239 | // #if SDCARD |
prasanthbj05 | 157:d99f525edc4c | 240 | |
ee12b079 | 149:8e4155426581 | 241 | // #endif |
ee12b079 | 149:8e4155426581 | 242 | // |
ee12b079 | 149:8e4155426581 | 243 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 244 | // gPC.puts("welcome to mng_tmtc\r\n"); |
ee12b079 | 149:8e4155426581 | 245 | // #endif |
ee12b079 | 149:8e4155426581 | 246 | // |
ee12b079 | 149:8e4155426581 | 247 | // // COM_MNG_TMTC THREAD |
ee12b079 | 149:8e4155426581 | 248 | // gCOM_MNG_TMTC_THREAD = new Thread(COM_MNG_TMTC_FUN); |
ee12b079 | 149:8e4155426581 | 249 | // gCOM_MNG_TMTC_THREAD->set_priority(osPriorityAboveNormal); |
ee12b079 | 149:8e4155426581 | 250 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 251 | // gPC.puts("allocating threads\r\n"); |
ee12b079 | 149:8e4155426581 | 252 | // #endif |
ee12b079 | 149:8e4155426581 | 253 | // #if SDCARD |
ee12b079 | 149:8e4155426581 | 254 | // gSCIENCE_THREAD = new Thread(SCIENCE_FUN); |
ee12b079 | 149:8e4155426581 | 255 | // // gPC.puts("step one complete\r\n"); |
ee12b079 | 149:8e4155426581 | 256 | // gSCIENCE_THREAD->set_priority(osPriorityBelowNormal); |
ee12b079 | 149:8e4155426581 | 257 | // #endif |
ee12b079 | 149:8e4155426581 | 258 | // |
ee12b079 | 149:8e4155426581 | 259 | // #if DEBUG |
ee12b079 | 149:8e4155426581 | 260 | // gPC.puts("competed allocating threads\r\n"); |
ee12b079 | 149:8e4155426581 | 261 | // #endif |
ee12b079 | 149:8e4155426581 | 262 | // |
shreeshas95 | 0:f016e9e8d48b | 263 | // *******************INITIALISATIONS END******************** |
shreeshas95 | 0:f016e9e8d48b | 264 | |
ee12b079 | 112:b8991d9e3b6c | 265 | //RtosTimer gCDMS_HK_TIMER(FCTN_CDMS_HK_MAIN, osTimerPeriodic); |
ee12b079 | 112:b8991d9e3b6c | 266 | //gCDMS_HK_TIMER.start(5000); |
prasanthbj05 | 157:d99f525edc4c | 267 | |
prasanthbj05 | 157:d99f525edc4c | 268 | ptr_t_i2c = new Thread(test_thread); |
prasanthbj05 | 157:d99f525edc4c | 269 | ptr_t_i2c->set_priority(osPriorityRealtime); |
prasanthbj05 | 157:d99f525edc4c | 270 | |
prasanthbj05 | 157:d99f525edc4c | 271 | temp_irpt.enable_irq(); |
prasanthbj05 | 157:d99f525edc4c | 272 | temp_irpt.mode(PullUp); |
prasanthbj05 | 157:d99f525edc4c | 273 | temp_irpt.fall(&temp_isr); |
prasanthbj05 | 157:d99f525edc4c | 274 | uint8_t q=0; |
prasanthbj05 | 158:68502402270d | 275 | |
prasanthbj05 | 158:68502402270d | 276 | uint8_t TC[135]; |
prasanthbj05 | 158:68502402270d | 277 | for(uint8_t z=0;z<135;z++) |
prasanthbj05 | 158:68502402270d | 278 | TC[z] = 0x55; |
prasanthbj05 | 158:68502402270d | 279 | |
prasanthbj05 | 158:68502402270d | 280 | /*int arr2[135][3]; |
prasanthbj05 | 158:68502402270d | 281 | for(uint8_t z=0;z<135;z++) |
prasanthbj05 | 157:d99f525edc4c | 282 | { |
prasanthbj05 | 158:68502402270d | 283 | arr2[z][0]= 135; |
prasanthbj05 | 157:d99f525edc4c | 284 | arr2[z][1]=1; |
prasanthbj05 | 157:d99f525edc4c | 285 | arr2[z][2]=135 ; |
prasanthbj05 | 158:68502402270d | 286 | }*/ |
prasanthbj05 | 155:80e7c7ff8aaf | 287 | //uint8_t hk_verify[4]; |
prasanthbj05 | 157:d99f525edc4c | 288 | int arr1[44][3]={ |
prasanthbj05 | 158:68502402270d | 289 | {135,5,134}, |
prasanthbj05 | 158:68502402270d | 290 | {135 ,1,134},//11,137 |
prasanthbj05 | 158:68502402270d | 291 | {135 ,1,134},//14,200 |
prasanthbj05 | 158:68502402270d | 292 | {135 ,1,134},//1,142 |
prasanthbj05 | 158:68502402270d | 293 | {20 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 294 | {20 ,1,135},//11,135 |
prasanthbj05 | 157:d99f525edc4c | 295 | {1 ,1,135},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 296 | {14 ,1,200},//14,200 |
prasanthbj05 | 157:d99f525edc4c | 297 | {1 ,1,200},//1,200 |
prasanthbj05 | 158:68502402270d | 298 | {135 ,1,134},//0,135 |
prasanthbj05 | 157:d99f525edc4c | 299 | {1 ,1,128},//1,128 |
prasanthbj05 | 157:d99f525edc4c | 300 | {51 ,1,135},//51,135 |
prasanthbj05 | 158:68502402270d | 301 | {11 ,1,134},//11,135 |
prasanthbj05 | 157:d99f525edc4c | 302 | {0 ,1,215},//0,215 |
prasanthbj05 | 157:d99f525edc4c | 303 | {1 ,1,135},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 304 | {1 ,1,35},//1,35 |
prasanthbj05 | 158:68502402270d | 305 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 306 | {14 ,1,55},//14,55 |
prasanthbj05 | 158:68502402270d | 307 | {11 ,1,134}, |
prasanthbj05 | 158:68502402270d | 308 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 309 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 310 | {130 ,1,235},//130,235 |
prasanthbj05 | 157:d99f525edc4c | 311 | {130 ,1,35},//130,35 |
prasanthbj05 | 158:68502402270d | 312 | {1 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 313 | {0 ,1,1},//0,1 |
prasanthbj05 | 157:d99f525edc4c | 314 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 315 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 316 | {11 ,1,135}, |
prasanthbj05 | 158:68502402270d | 317 | {0 ,1,134},//0,135 |
prasanthbj05 | 157:d99f525edc4c | 318 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 319 | {11 ,1,135}, |
prasanthbj05 | 157:d99f525edc4c | 320 | {11 ,1,135}, |
prasanthbj05 | 158:68502402270d | 321 | {1 ,1,134},//1,135 |
prasanthbj05 | 157:d99f525edc4c | 322 | {0 ,1,145},//0,145 |
prasanthbj05 | 157:d99f525edc4c | 323 | {5 ,1,15},//5,15 |
prasanthbj05 | 158:68502402270d | 324 | {14 ,1,134},//14,135 |
prasanthbj05 | 158:68502402270d | 325 | {12 ,1,134},//2,135 |
prasanthbj05 | 157:d99f525edc4c | 326 | {86 ,1,165},//86,165 |
prasanthbj05 | 157:d99f525edc4c | 327 | {130 ,1,5},//130,5 |
prasanthbj05 | 157:d99f525edc4c | 328 | {230 ,1,1},//230,1 |
prasanthbj05 | 157:d99f525edc4c | 329 | {130 ,1,135},//130,135 |
prasanthbj05 | 158:68502402270d | 330 | {11 ,1,134}, |
prasanthbj05 | 157:d99f525edc4c | 331 | {11 ,1,155}, |
prasanthbj05 | 158:68502402270d | 332 | {11 ,1,134} |
prasanthbj05 | 157:d99f525edc4c | 333 | }; |
prasanthbj05 | 157:d99f525edc4c | 334 | //gPC.printf("\n\n\rInitial values:\n"); |
prasanthbj05 | 157:d99f525edc4c | 335 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 336 | //debug2(); |
prasanthbj05 | 157:d99f525edc4c | 337 | //gPC.printf("\n\r SIM->SCGC4 = 0x%08X",SIM->SCGC4); |
prasanthbj05 | 157:d99f525edc4c | 338 | Timer t; |
prasanthbj05 | 157:d99f525edc4c | 339 | //gPC.printf("\n\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 340 | gPC.printf("\n\n\rSending tc"); |
prasanthbj05 | 157:d99f525edc4c | 341 | //gPC.printf("\n\rPORTE->PCR[24] = 0x%08X",PORTE->PCR[24]); |
prasanthbj05 | 157:d99f525edc4c | 342 | //gPC.printf("\n\rPORTE->PCR[25] = 0x%08X\n",PORTE->PCR[25]); |
prasanthbj05 | 157:d99f525edc4c | 343 | |
prasanthbj05 | 157:d99f525edc4c | 344 | bool write_ack=1,read_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 345 | wait(5); |
prasanthbj05 | 157:d99f525edc4c | 346 | while(q<250) |
prasanthbj05 | 157:d99f525edc4c | 347 | { |
prasanthbj05 | 157:d99f525edc4c | 348 | //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]); |
prasanthbj05 | 158:68502402270d | 349 | wait(arr1[q][1]); |
prasanthbj05 | 158:68502402270d | 350 | //gPC.printf("\n\rIndex = %d",q); |
prasanthbj05 | 157:d99f525edc4c | 351 | //while(i2c_mutex.trylock()==false) |
prasanthbj05 | 155:80e7c7ff8aaf | 352 | //{ |
prasanthbj05 | 158:68502402270d | 353 | //gPC.printf("\n\rMain waiting for mutex"); |
prasanthbj05 | 157:d99f525edc4c | 354 | i2c_mutex.lock(); |
prasanthbj05 | 155:80e7c7ff8aaf | 355 | //} |
prasanthbj05 | 158:68502402270d | 356 | //gPC.printf("\n\n\rMutex locked by Main"); |
prasanthbj05 | 158:68502402270d | 357 | gPC.printf("\n\rGiven TC Size : %d",arr1[q][0]); |
prasanthbj05 | 158:68502402270d | 358 | gPC.printf("\n\rGiven TM Size : %d",arr1[q][2]); |
prasanthbj05 | 157:d99f525edc4c | 359 | //wait_ms(1200); |
prasanthbj05 | 158:68502402270d | 360 | write_ack = FCTN_I2C_WRITE((char*)TC,arr1[q][0]); |
prasanthbj05 | 157:d99f525edc4c | 361 | wait(1); //should poll instead of wait |
prasanthbj05 | 157:d99f525edc4c | 362 | if(write_ack==0) |
prasanthbj05 | 157:d99f525edc4c | 363 | { |
prasanthbj05 | 157:d99f525edc4c | 364 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 365 | { |
prasanthbj05 | 158:68502402270d | 366 | read_ack = FCTN_I2C_READ((char*)TM,arr1[q][2]); |
prasanthbj05 | 157:d99f525edc4c | 367 | } |
prasanthbj05 | 157:d99f525edc4c | 368 | else |
prasanthbj05 | 157:d99f525edc4c | 369 | { |
prasanthbj05 | 157:d99f525edc4c | 370 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 371 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 372 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 373 | #endif |
prasanthbj05 | 157:d99f525edc4c | 374 | I2C_busreset(); |
prasanthbj05 | 157:d99f525edc4c | 375 | #if PRINT |
prasanthbj05 | 157:d99f525edc4c | 376 | gPC.printf("\n\rPTE->DIR = 0x%08X",PTE->PDIR); |
prasanthbj05 | 157:d99f525edc4c | 377 | #endif |
prasanthbj05 | 157:d99f525edc4c | 378 | } |
prasanthbj05 | 157:d99f525edc4c | 379 | write_ack=1; |
prasanthbj05 | 157:d99f525edc4c | 380 | } |
prasanthbj05 | 157:d99f525edc4c | 381 | i2c_mutex.unlock(); |
prasanthbj05 | 158:68502402270d | 382 | //gPC.printf("\n\rMutex Unlocked by Main"); |
prasanthbj05 | 157:d99f525edc4c | 383 | //gPC.printf("\n\Flag = %d",temp_flag); |
prasanthbj05 | 157:d99f525edc4c | 384 | temp_flag=0; |
prasanthbj05 | 157:d99f525edc4c | 385 | q++; |
prasanthbj05 | 157:d99f525edc4c | 386 | } |
prasanthbj05 | 157:d99f525edc4c | 387 | //wait(5); |
prasanthbj05 | 157:d99f525edc4c | 388 | /*while(1) |
prasanthbj05 | 157:d99f525edc4c | 389 | { |
prasanthbj05 | 157:d99f525edc4c | 390 | write_ack = FCTN_I2C_WRITE((char*)TC,arr1[0][0]); |
prasanthbj05 | 157:d99f525edc4c | 391 | wait_us(1); |
prasanthbj05 | 157:d99f525edc4c | 392 | }*/ |
prasanthbj05 | 157:d99f525edc4c | 393 | |
prasanthbj05 | 157:d99f525edc4c | 394 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 395 | //debug3(); |
prasanthbj05 | 157:d99f525edc4c | 396 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 397 | //master.stop(); |
prasanthbj05 | 157:d99f525edc4c | 398 | //wait_ms(2); |
prasanthbj05 | 157:d99f525edc4c | 399 | //debug(); |
prasanthbj05 | 157:d99f525edc4c | 400 | /*while(q<5) |
prasanthbj05 | 157:d99f525edc4c | 401 | { |
prasanthbj05 | 157:d99f525edc4c | 402 | //printf("\n\rSize:%d\t\tdelay:%d",arr[q][0],arr[q][1]); |
prasanthbj05 | 157:d99f525edc4c | 403 | wait(10); |
prasanthbj05 | 157:d99f525edc4c | 404 | FCTN_I2C_WRITE((char*)TC,11); |
prasanthbj05 | 157:d99f525edc4c | 405 | wait(0.2); |
prasanthbj05 | 157:d99f525edc4c | 406 | if(BAE_I2C_GPIO == 1) |
prasanthbj05 | 157:d99f525edc4c | 407 | { |
prasanthbj05 | 157:d99f525edc4c | 408 | // printf("receiving...\r\n"); |
prasanthbj05 | 157:d99f525edc4c | 409 | FCTN_I2C_READ((char*)TM,arr1[q][2]); |
prasanthbj05 | 157:d99f525edc4c | 410 | } |
prasanthbj05 | 157:d99f525edc4c | 411 | else |
prasanthbj05 | 157:d99f525edc4c | 412 | { |
prasanthbj05 | 157:d99f525edc4c | 413 | gPC.printf("\nbae_INTR NOT HIGH"); |
prasanthbj05 | 157:d99f525edc4c | 414 | I2C_reInit(); |
prasanthbj05 | 157:d99f525edc4c | 415 | } |
prasanthbj05 | 157:d99f525edc4c | 416 | q++; |
prasanthbj05 | 157:d99f525edc4c | 417 | } |
prasanthbj05 | 157:d99f525edc4c | 418 | */ |
shreeshas95 | 0:f016e9e8d48b | 419 | while(true){ |
ee12b079 | 94:717c7908c822 | 420 | Thread::wait(osWaitForever); |
ee12b079 | 93:4ca92f9775e0 | 421 | //state = gCOM_MNG_TMTC_THREAD->get_state() + '0'; |
ee12b079 | 93:4ca92f9775e0 | 422 | gLEDG = !gLEDG; |
ee12b079 | 93:4ca92f9775e0 | 423 | //gPC.putc(state); |
shreeshas95 | 0:f016e9e8d48b | 424 | } |
shreeshas95 | 0:f016e9e8d48b | 425 | } |