doppler shift / Mbed 2 deprecated Register_set_completed_1

Dependencies:   mbed

Revision:
3:e6d72c02e045
Parent:
2:0a0b5c62d10c
Child:
4:a263257f3a2b
--- a/main.cpp	Mon Mar 22 03:55:57 2021 +0000
+++ b/main.cpp	Wed Mar 24 13:23:25 2021 +0000
@@ -39,42 +39,56 @@
         human_freq = 0;
     }
     //main関数内でコマンドが0x00の時にmainでbinary()を呼ぶと計算をしてuint_32型の値を返す
-    void Reg0_gen(int key,double calsat_freq,double human_freq ,uint32_t _register){
-              
+    uint32_t Reg0_gen(int key,double calsat_freq,double human_freq )
+    {
+        uint32_t freq_bit;
         if(key == '1') {
-               //printf("%lf %lf\r\n",calsat_freq,human_freq);
-               Shift_bit(_register, binary(calsat_freq), 23);
-           }
-         else if(key =='2'){ //calsatから受けとる
-               Shift_bit(_register, binary(human_freq), 23);//1の時calsat,2の時人
-         }
-          /*else if(key == '3' || key == '0') {
-               uint32_t tmp = 0;
-               tmp |= ( register_data_array[2] >> 27); //この行と次の行でレジスタのデータの部分を全て0にしている
-               tmp |= (tmp << 27);
-               if(key == 3){
-               Shift_bit(tmp, binary(human_freq), 4);//人間が入力した周波数の値を用いたレジスタを作成する
-               register_data_array[2] = tmp;//配列の中に格納する
-               show_all();
-               }*/
-           else {}
-            
-            for(int i = 27; i > 0; i--) {
-            if(_register & (1 << (i - 1))) {
+            //printf("%lf %lf\r\n",calsat_freq,human_freq);
+            freq_bit = binary(calsat_freq);
+
+            //Shift_bit(_register, freq_bit, 23);
+
+        } else if(key =='2') { //calsatから受けとる
+            freq_bit = binary(human_freq);
+            // Shift_bit(_register, freq_bit, 23);//1の時calsat,2の時人
+        }
+        /*else if(key == '3' || key == '0') {
+             uint32_t tmp = 0;
+             tmp |= ( register_data_array[2] >> 27); //この行と次の行でレジスタのデータの部分を全て0にしている
+             tmp |= (tmp << 27);
+             if(key == 3){
+             Shift_bit(tmp, binary(human_freq), 4);//人間が入力した周波数の値を用いたレジスタを作成する
+             register_data_array[2] = tmp;//配列の中に格納する
+             show_all();
+             }*/
+        else {}
+        freq_bit = freq_bit<<4;
+
+        /* for(int i = 23; i > 0; i--) {
+          if(freq_bit & (1 << (i - 1))) {
+              pc.printf("1");
+          } else {
+              pc.printf("0");
+          }
+        }
+        printf("\r\n");*/
+        for(int i = 27; i > 0; i--) {
+            if(freq_bit & (1 << (i - 1))) {
                 pc.printf("1");
             } else {
                 pc.printf("0");
             }
         }
-            //show(_register);
-            printf("\r\n");
-            
+
+        printf("\r\n");
+        return freq_bit;
+
     }
     void Shift_bit(uint32_t& Register, int Register_data, int Size)
     {
         Register |= (Register_data << Size);
     }
-    void file_read(char key ,double calsat_freq)
+    void file_read(char key,double calsat_freq)
     {
         /* ファイルのオープン */
         char name[100] = {};//出力はしない
@@ -93,13 +107,22 @@
             } else {
                 printf(" %d %d   %d \r\n",register_data, length,size);
                 if(l==23) {
-                     /*if(key == '1')
+                    /*if(key == '1')
                     Shift_bit(_register, binary(calsat_freq), 4);
                     if(key == '2')*/
-                        human_freq = register_data;
-                      // Shift_bit(_register, binary(register_data), 4);
-                    Reg0_gen(key, calsat_freq, human_freq, _register);
-                    size = 27;
+                    human_freq = register_data;
+                    // Shift_bit(_register, binary(register_data), 4);
+                    _register = Reg0_gen(key, calsat_freq, human_freq );
+
+                    for(int i = 27; i > 0; i--) {//デバッグ用
+                        if(_register & (1 << (i - 1))) {
+                            pc.printf("1");
+                        } else {
+                            pc.printf("0");
+                        }
+                    }
+                     printf("\r\n");
+                         size = 27;
                     //テキストファイルから受け取った値を格納するとき
                 } else {
                     Shift_bit(_register, register_data, size);
@@ -149,7 +172,7 @@
             flag += 2;
         }
         calsat_freq = 10 * data[0] + data[1] + kHz * data[2] + 100 * data[3] + 100*kHz * data[4] + 10*kHz * data[5] + 10*MHz * data[6] + MHz * data[7] + data[8] + 100*MHz * data[9];//Hz
-       printf("\n%lf\r\n",calsat_freq / 1000000); //Mhz
+        printf("\n%lf\r\n",calsat_freq / 1000000); //Mhz
         return calsat_freq / 1000000;
     }
     void show(uint32_t bin)
@@ -191,8 +214,8 @@
         _command[a] = c;
         a++;
         if(_command[a-1] == 0xfd) {
-          calsat_freq = doppler(_command);
-          Reg0_gen(1, calsat_freq, human_freq,_register); //reg0をcalsatの値で更新
+            calsat_freq = doppler(_command);
+            Reg0_gen(1, calsat_freq, human_freq); //reg0をcalsatの値で更新
             /*
             for(int j = 0; j < a; j++)
                 printf("%02hhx",_command[j]);
@@ -218,16 +241,16 @@
     while(1) {
         calsat32 tmp;
         while(device.readable()) {
+
             char c = device.getc();
             double calsat_freq = tmp.packet(c);
             if(pc.readable()) {
                 char key = pc.getc();
-                if(key == '1' ||key == '2'){
-                  tmp.check(key,calsat_freq);
-                  //file読み込み、calsator人の更新
-                }
-                  else if(key == '3')//reg0を人にする
-                tmp.check(key,calsat_freq);
+                if(key == '1' ||key == '2') {
+                    tmp.check(key,calsat_freq);
+                    //file読み込み、calsator人の更新
+                } else if(key == '3') //reg0を人にする
+                    tmp.check(key,calsat_freq);
             }
         }
     }