cdms_i2c_hardware_test

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of standaloneworkingi2c_cdms by Team Fox

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?

UserRevisionLine numberNew 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 }