Dummy program to demonstrate problems: working code
Dependencies: SLCD mbed-rtos mbed
Fork of MNG_TC by
adf.h
00001 DigitalOut cs_adf(D10); 00002 DigitalOut led2(LED_RED); 00003 InterruptIn IRQ(D8); 00004 Ticker ticker; 00005 unsigned char buffer_half=1; 00006 unsigned char buffer_counter = 0; 00007 bool transmission_done = false; 00008 bool sent_tmfrom_SDcard; 00009 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xc2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00}; 00010 //void inline bbram_write(){ 00011 // SPI_mutex.lock(); 00012 // cs_adf=0; 00013 // spi.write(0xB0);//PHY_OFF 00014 // wait_us(300); 00015 // cs_adf=1; 00016 // SPI_mutex.unlock(); 00017 // 00018 // SPI_mutex.lock(); 00019 // // Write bbram 00020 // cs_adf=0; 00021 // for(int i=0;i<66;i++){ 00022 // spi.write(bbram_buffer[i]); 00023 // } 00024 // cs_adf=1; 00025 // SPI_mutex.unlock(); 00026 //} 00027 00028 00029 /******************************************************************************************/ 00030 00031 //void initiate(void){ 00032 // SPI_mutex.lock(); 00033 // cs_adf=0; 00034 // spi.write(0xFF); 00035 // spi.write(0xFF); 00036 // cs_adf=1; 00037 //// wait_ms(2); 00038 // 00039 // cs_adf=0; 00040 // spi.write(0x08); // TRANSMIT_DATA LENGTH 00041 // spi.write(0x14); 00042 // spi.write(0xFF); 00043 // cs_adf=1; 00044 //// wait_ms(2); 00045 // cs_adf=0; 00046 // spi.write(0x08); // TRANSMIT_DATA LENGTH 00047 // spi.write(0x15); 00048 // spi.write(0xFF); 00049 // cs_adf=1; 00050 //// wait_ms(2); 00051 // 00052 // cs_adf=0; 00053 // spi.write(0x09); 00054 // spi.write(0x24); // TX_BASE ADDRESS 0x20(starting Tx Byte) 00055 // spi.write(0x20); 00056 // cs_adf=1; 00057 //// wait_ms(2); 00058 // 00059 // cs_adf=0; 00060 // spi.write(0x09); 00061 // spi.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size 00062 // spi.write(0xE0); 00063 // cs_adf=1; 00064 //// wait_ms(2); 00065 // 00066 // cs_adf=0; 00067 // spi.write(0x09); 00068 // spi.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled 00069 // spi.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given 00070 // cs_adf=1; 00071 //// wait_ms(2); 00072 // 00073 // 00074 // cs_adf=0; 00075 // spi.write(0x09); 00076 // spi.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled 00077 // spi.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given 00078 // cs_adf=1; 00079 //// wait_ms(2); 00080 // SPI_mutex.unlock(); 00081 // } 00082 // 00083 // 00084 00085 void write_data(void){ 00086 00087 cs_adf=0; 00088 spi.write(0x0B);//IRQ_SOURCE_Random write //To read CMD = 2B 36 FF FF 00089 spi.write(0x36);//Address : 0x336 00090 spi.write(0xFF);//Put Low 00091 cs_adf=1; 00092 00093 cs_adf=0; 00094 static bool first_2_time = true; 00095 buffer_counter=0; 00096 00097 if(first_2_time==false && last_buffer==false){ 00098 00099 spi.write(0x18); 00100 if(buffer_half==1){ 00101 spi.write(0x20); 00102 buffer_half = 2; 00103 } 00104 else if(buffer_half==2){ 00105 spi.write(0x90); 00106 buffer_half = 1; 00107 } 00108 00109 buffer_counter = 0; 00110 while(buffer_counter<112){ 00111 spi.write(buffer_112[buffer_counter]); 00112 buffer_counter++; 00113 } 00114 00115 } 00116 00117 if(first_2_time == true && last_buffer==false){ 00118 00119 spi.write(0x18); 00120 if(buffer_half==1){ 00121 spi.write(0x20); 00122 buffer_half=2; 00123 } 00124 else{ 00125 spi.write(0x90); 00126 buffer_half=1; 00127 first_2_time = false; 00128 } 00129 00130 while(buffer_counter<112){ 00131 spi.write(buffer_112[buffer_counter]); 00132 buffer_counter++; 00133 } 00134 00135 } 00136 00137 if(last_buffer){ 00138 cs_adf=0; 00139 spi.write(0x18); 00140 spi.write(0x20); 00141 00142 while(buffer_counter<112){ 00143 spi.write(buffer_112[buffer_counter]); 00144 buffer_counter++; 00145 } 00146 cs_adf=1; 00147 00148 ticker.detach(); 00149 cs_adf=0; 00150 spi.write(0xB1); 00151 cs_adf=1; 00152 transmission_done=true; 00153 } 00154 00155 cs_adf=1; 00156 } 00157 00158 00159 void check(){ 00160 00161 if(IRQ){ 00162 VAR_SPACE::mng_tmtc_thread->signal_set(0x02); 00163 } 00164 } 00165 00166 // 00167 //void send_data(void){ 00168 // SPI_mutex.lock(); 00169 // cs_adf=0; 00170 // spi.write(0xBB); 00171 // cs_adf=1; 00172 //// wait_us(300); 00173 // 00174 // cs_adf=0; 00175 // spi.write(0xFF); 00176 // spi.write(0xFF); 00177 // cs_adf=1; 00178 // SPI_mutex.unlock(); 00179 //// wait_ms(2); 00180 // if(sent_tmfrom_SDcard){ 00181 // printf("inside if\r\n"); 00182 // send_tm_from_SD_card(); 00183 // } 00184 // else{ 00185 // printf("inside else\r\n"); 00186 // snd_tm.transmit_data(buffer_112,&last_buffer); 00187 // } 00188 //// SPI_mutex.lock(); 00189 //// write_data(); 00190 //// SPI_mutex.unlock(); 00191 //// if(sent_tmfrom_SDcard) 00192 //// { 00193 //// send_tm_from_SD_card(); 00194 //// } 00195 //// else 00196 //// { 00197 //// snd_tm.transmit_data(buffer_112,&last_buffer); 00198 //// } 00199 //// SPI_mutex.lock(); 00200 //// write_data(); 00201 //// SPI_mutex.unlock(); 00202 //// if(sent_tmfrom_SDcard) 00203 //// { 00204 //// send_tm_from_SD_card(); 00205 //// } 00206 //// else 00207 //// { 00208 //// snd_tm.transmit_data(buffer_112,&last_buffer); 00209 //// } 00210 //// SPI_mutex.lock(); 00211 //// cs_adf=0; 00212 //// spi.write(0xB1); 00213 //// cs_adf=1; 00214 //// SPI_mutex.unlock(); 00215 //// wait_us(300); 00216 //// SPI_mutex.lock(); 00217 //// cs_adf=0; 00218 //// spi.write(0xFF); 00219 //// spi.write(0xFF); 00220 //// cs_adf=1; 00221 //// 00222 ////// wait_ms(2); 00223 //// 00224 //// cs_adf=0; 00225 //// spi.write(0xB5); 00226 //// cs_adf=1; 00227 ////// cout<<"B5 given"<<ENDL; 00228 //// SPI_mutex.unlock(); 00229 //// wait_us(300); 00230 ////// int b5=t.read_us(); 00231 //// SPI_mutex.lock(); 00232 //// cs_adf=0; 00233 //// spi.write(0xFF); 00234 //// spi.write(0xFF); 00235 //// cs_adf=1; 00236 //// SPI_mutex.unlock(); 00237 ////// wait_ms(2); 00238 //// ticker.attach_us(&check,32000); 00239 //// 00240 //// while(!transmission_done){ 00241 //// led2=!led2; 00242 //// printf("x"); 00243 //// Thread::signal_wait(0x2); 00244 //// 00245 //// SPI_mutex.lock(); 00246 //// write_data(); 00247 //// SPI_mutex.unlock(); 00248 //// if(sent_tmfrom_SDcard){ 00249 //// send_tm_from_SD_card(); 00250 //// } 00251 //// else{ 00252 //// snd_tm.transmit_data(buffer_112,&last_buffer); 00253 //// } 00254 //// } 00255 //} 00256 // 00257 // 00258 00259 void inline spi_SND_SDCard(uint64_t x,uint64_t y ){ 00260 start_block_num = x; 00261 end_block_num = y; 00262 sent_tmfrom_SDcard = true; 00263 spi.format(8,0); 00264 spi.frequency(1000000); 00265 00266 // bbram_write(); 00267 // initiate(); 00268 // send_data(); 00269 00270 } 00271 00272 void read_TC(TC_list* TC_ptr){ 00273 unsigned char service_subtype = 0; 00274 uint64_t starting_add = 0, ending_add = 0; 00275 service_subtype = (TC_ptr->TC_string[2])&0x0f; 00276 starting_add = (TC_ptr->TC_string[5]) + ( (TC_ptr->TC_string[4])<<8 ) + ( (TC_ptr->TC_string[3]) <<16); 00277 ending_add = (TC_ptr->TC_string[8]) + ( (TC_ptr->TC_string[7])<<8 ) + ( (TC_ptr->TC_string[6]) <<16); 00278 spi_SND_SDCard(starting_add , ending_add); 00279 } 00280 00281 00282 void inline adf_not_SDcard(){ 00283 spi.format(8,0); 00284 spi.frequency(1000000); 00285 sent_tmfrom_SDcard = false; 00286 // bbram_write(); 00287 SPI_mutex.lock(); 00288 cs_adf=0; 00289 spi.write(0xB0);//PHY_OFF 00290 wait_us(300); 00291 cs_adf=1; 00292 SPI_mutex.unlock(); 00293 00294 SPI_mutex.lock(); 00295 // Write bbram 00296 cs_adf=0; 00297 for(int i=0;i<66;i++){ 00298 spi.write(bbram_buffer[i]); 00299 } 00300 cs_adf=1; 00301 SPI_mutex.unlock(); 00302 // initiate(); 00303 00304 SPI_mutex.lock(); 00305 cs_adf=0; 00306 spi.write(0xFF); 00307 spi.write(0xFF); 00308 cs_adf=1; 00309 // wait_ms(2); 00310 00311 cs_adf=0; 00312 spi.write(0x08); // TRANSMIT_DATA LENGTH 00313 spi.write(0x14); 00314 spi.write(0xFF); 00315 cs_adf=1; 00316 // wait_ms(2); 00317 cs_adf=0; 00318 spi.write(0x08); // TRANSMIT_DATA LENGTH 00319 spi.write(0x15); 00320 spi.write(0xFF); 00321 cs_adf=1; 00322 // wait_ms(2); 00323 00324 cs_adf=0; 00325 spi.write(0x09); 00326 spi.write(0x24); // TX_BASE ADDRESS 0x20(starting Tx Byte) 00327 spi.write(0x20); 00328 cs_adf=1; 00329 // wait_ms(2); 00330 00331 cs_adf=0; 00332 spi.write(0x09); 00333 spi.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size 00334 spi.write(0xE0); 00335 cs_adf=1; 00336 // wait_ms(2); 00337 00338 cs_adf=0; 00339 spi.write(0x09); 00340 spi.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled 00341 spi.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given 00342 cs_adf=1; 00343 // wait_ms(2); 00344 00345 00346 cs_adf=0; 00347 spi.write(0x09); 00348 spi.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled 00349 spi.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given 00350 cs_adf=1; 00351 // wait_ms(2); 00352 SPI_mutex.unlock(); 00353 // send_data(); 00354 00355 SPI_mutex.lock(); 00356 cs_adf=0; 00357 spi.write(0xBB); 00358 cs_adf=1; 00359 // wait_us(300); 00360 00361 cs_adf=0; 00362 spi.write(0xFF); 00363 spi.write(0xFF); 00364 cs_adf=1; 00365 SPI_mutex.unlock(); 00366 // wait_ms(2); 00367 if(sent_tmfrom_SDcard){ 00368 send_tm_from_SD_card(); 00369 } 00370 else{ 00371 snd_tm.transmit_data(buffer_112,&last_buffer); 00372 } 00373 SPI_mutex.lock(); 00374 write_data(); 00375 SPI_mutex.unlock(); 00376 if(sent_tmfrom_SDcard) 00377 { 00378 send_tm_from_SD_card(); 00379 } 00380 else 00381 { 00382 snd_tm.transmit_data(buffer_112,&last_buffer); 00383 } 00384 SPI_mutex.lock(); 00385 write_data(); 00386 SPI_mutex.unlock(); 00387 if(sent_tmfrom_SDcard) 00388 { 00389 send_tm_from_SD_card(); 00390 } 00391 else 00392 { 00393 snd_tm.transmit_data(buffer_112,&last_buffer); 00394 } 00395 SPI_mutex.lock(); 00396 cs_adf=0; 00397 spi.write(0xB1); 00398 cs_adf=1; 00399 SPI_mutex.unlock(); 00400 wait_us(300); 00401 SPI_mutex.lock(); 00402 cs_adf=0; 00403 spi.write(0xFF); 00404 spi.write(0xFF); 00405 cs_adf=1; 00406 00407 // wait_ms(2); 00408 00409 cs_adf=0; 00410 spi.write(0xB5); 00411 cs_adf=1; 00412 // cout<<"B5 given"<<ENDL; 00413 SPI_mutex.unlock(); 00414 wait_us(300); 00415 // int b5=t.read_us(); 00416 SPI_mutex.lock(); 00417 cs_adf=0; 00418 spi.write(0xFF); 00419 spi.write(0xFF); 00420 cs_adf=1; 00421 SPI_mutex.unlock(); 00422 // wait_ms(2); 00423 ticker.attach_us(&check,32000); 00424 00425 while(!transmission_done){ 00426 led2=!led2; 00427 Thread::signal_wait(0x2); 00428 00429 SPI_mutex.lock(); 00430 write_data(); 00431 SPI_mutex.unlock(); 00432 if(sent_tmfrom_SDcard){ 00433 send_tm_from_SD_card(); 00434 } 00435 else{ 00436 snd_tm.transmit_data(buffer_112,&last_buffer); 00437 } 00438 } 00439 }
Generated on Thu Jul 21 2022 03:45:37 by 1.7.2