UD-GS01治具の試作プログラムです

Dependencies:   mbed nRF24L01P SDFileSystem

Revision:
6:bf0572ed7c6b
Parent:
5:24ea1bd807e6
Child:
7:bad081470837
--- a/Goto_UD-GS01.cpp	Wed Dec 09 05:03:49 2020 +0000
+++ b/Goto_UD-GS01.cpp	Wed Dec 09 08:19:42 2020 +0000
@@ -5,6 +5,7 @@
 #include "nRF24L01P.h"
 #include <assert.h>
 #include <stdbool.h>
+//#include "SDFileSystem.h"
 RawSerial  pc(PA_2, PA_3,115200);  //ここはpcとケーブルでつないだときにシリアル通信させてたところだから、ここから牛のUARTにつなぐだけで大丈夫なはず。→ここは元々ST基板のPC部分(パキッと折れそうな方)との通信用に使われてるから他のシリアルは無理らしい。
 RawSerial  UDGS01(PA_0, PA_1, 115200);        // UD-GS01とのシリアル通信用にUARTピンを新たに定義。
 Ticker     interrput;
@@ -27,7 +28,7 @@
 int bufferidx=0;
 
 nRF24L01P my_nrf24l01p(D11, D12, D13, D10, D9,D8);    // mosi, miso, sck, csn, ce, irq
-//nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10);    // mosi, miso, sck, csn, ce, irq
+
 
 void timer(){     /*タイマー割り込みによるSPEAKER out*/
    uint16_t ain;
@@ -56,8 +57,13 @@
         txData1[txDataIdx] = UDGS01.getc();  //getcharだと、PCからのキーボード入力という標準コンソール?のやつだからだめらしい
 //        pc.printf("tx[%d] = %s", txDataIdx, &txData[txDataIdx]);
         txDataIdx++;
+        
+        if(txData1[txDataIdx] == 0x0A){ //改行(0x0A)があればその時点で送りたい
+              memcpy(txData2, txData1, txDataIdx);
+              txDataIdx = 0;
+              snd_flg = 2;
               
-        if (txDataIdx == TRANSFER_SIZE) {//最初の32回
+        }else if (txDataIdx == TRANSFER_SIZE) {//最初の32回
            memcpy(txData2, txData1, TRANSFER_SIZE);
                
                txDataIdx=0;
@@ -65,7 +71,7 @@
                
         }
                
-        }
+    }
     
 }
 
@@ -92,9 +98,6 @@
       
 int main() {
 
- 
-   
-
     my_nrf24l01p.powerUp();
     my_nrf24l01p.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY);//2400-2525
     my_nrf24l01p.setRfOutputPower(NRF24L01P_TX_PWR_MINUS_12_DB);//mAX 0  -6 -12 -18
@@ -111,21 +114,30 @@
     my_nrf24l01p.setReceiveMode();
     my_nrf24l01p.enable();
     
+//    SDFileSystem *sd = new SDFileSystem(D11, D12, D13, D10, "sd", NC, SDFileSystem::SWITCH_NONE, 20000000); //SDカードのやつ
+//    FILE *fp;
+    
     wait_ms(100);
    // my_nrf24l01p.write( NRF24L01P_PIPE_P0, (char*)rxData,1);//dummy
 
-    interrput.attach(&timer, 1);//100 usec 10Khz
+    interrput.attach(&timer, 0.5);//100 usec 10Khz
     UDGS01.attach(recieve,Serial::RxIrq);//牛からのデータ受信したら割り込み発生してrecieveを呼び出す
 
  //   my_nrf24l01p.flush_rx_fifo();
  while(1){
        
        if ( my_nrf24l01p.readable(NRF24L01P_PIPE_P0) ) {    //受信可能であれば
-            
+           
          rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, (char*)(rxData1),TRANSFER_SIZE );
          if(/*rxData_equal(rxData1, rxData2)==*/1){ //rxData1で読んだ値が以前コピーしたのと完全一致なら0, 違えば1を出す。              
             
              memcpy(rxData2, rxData1, TRANSFER_SIZE);
+             
+//             fp = fopen("/sd/log/log(UD-GS01).txt", "a");
+//             fputs(rxData2, fp);
+//             wait(1);
+//             fclose(fp);
+             
              rcv_flg = 1;
             
          }
@@ -145,6 +157,11 @@
 //               }
                pc.putc('1');
                wait(1);
+         }else if (snd_flg==2)  {//後半のバッファ         
+               snd_flg=0;
+               my_nrf24l01p.write( NRF24L01P_PIPE_P0, (char*)txData2 , TRANSFER_SIZE  );
+               pc.putc('2');
+               wait(1);
          }