doppler shift / Mbed 2 deprecated Register_set_20

Dependencies:   mbed

Revision:
5:215407735ff3
Parent:
4:a263257f3a2b
Child:
6:85891eee5322
--- a/main.cpp	Wed Mar 24 15:12:50 2021 +0000
+++ b/main.cpp	Thu Mar 25 13:46:14 2021 +0000
@@ -24,6 +24,7 @@
     double human_freq; //人から受け取る周波数の値
     uint32_t _register;//最終的に欲しいレジスタの値.32ビット
     uint32_t register_data_array[16];//完成したレジスターを格納する配列
+    uint32_t reg0;//reg0_gen に渡す用の配列
     const char* filename;
     FILE *fp;
     calsat32()
@@ -41,27 +42,75 @@
     //main関数内でコマンドが0x00の時にmainでbinary()を呼ぶと計算をしてuint_32型の値を返す
     uint32_t Reg0_gen(int key,double calsat_freq,double human_freq )
     {
-        //printf("%lf %lf\r\n",calsat_freq,human_freq);
+        printf("%lf %lf\r\n",calsat_freq,human_freq);
         uint32_t freq_bit;
-        
+        uint32_t tmp = 0;
         if(key == '0') {
-            printf("key = 0");
-            uint32_t tmp = 0;
-            tmp |= ( register_data_array[2] >> 27); //この行と次の行でレジスタのデータの部分を全て0にしている
-            tmp |= (tmp << 27);
-            printf("tmp = ");
-            for(int i = 27; i > 0; i--) {
+            /* printf("reg0= ");
+             for(int i = 32; i > 0; i--) {//デバッグ用
+                if(reg0& (1 << (i - 1))) {
+                    pc.printf("1");
+                } else {
+                    pc.printf("0");
+                }
+            }*/
+            printf("\r\n");
+            
+            tmp =  reg0 >> 27; //この行と次の行でレジスタのデータの部分を全て0にしている
+            tmp = tmp << 27;
+            for(int i = 32; i > 0; i--) {//デバッグ用
                 if(tmp & (1 << (i - 1))) {
                     pc.printf("1");
                 } else {
                     pc.printf("0");
                 }
             }
+            printf("\r\n"); //001110000000000…が出力
+
+            freq_bit = binary(calsat_freq)<<4;
+            printf("freq_bit=");//デバッグ用
+            for(int i = 32; i > 0; i--) {
+                if(freq_bit & (1 << (i - 1))) {
+                    pc.printf("1");
+                } else {
+                    pc.printf("0"); //00000[23bit]0000が出力
+                }
+            }
             printf("\r\n");
-            freq_bit = binary(calsat_freq);
-            freq_bit = freq_bit<<4;
-            printf("freq_bit = ");
-            for(int i = 27; i > 0; i--) {
+            /*printf("freq_bit0=");//デバッグ用
+            for(int i = 32; i > 0; i--) {
+                if(freq_bit & (1 << (i - 1))) {
+                    pc.printf("1");
+                } else {
+                    pc.printf("0");
+                }
+            }
+            printf("\r\n");*/
+            /*freq_bit = freq_bit>>5;
+             printf("freq_bit5 = ");//デバッグ用
+             for(int i = 28; i > 0; i--) {
+                 if(freq_bit & (1 << (i - 1))) {
+                     pc.printf("1");
+                 } else {
+                     pc.printf("0");
+                 }
+             }
+             printf("\r\n");*/
+
+            /*freq_bit = freq_bit<<4;
+            printf("freq_bit4 = ");//デバッグ用
+            for(int i = 32; i > 0; i--) {
+                if(freq_bit & (1 << (i - 1))) {
+                    pc.printf("1");
+                } else {
+                    pc.printf("0");
+                }
+            }
+            printf("\r\n");*/
+            tmp |= freq_bit;
+            register_data_array[2] = tmp;
+            printf("register_data_array[2]=");//デバッグ用
+            for(int i = 32; i > 0; i--) {
                 if(tmp & (1 << (i - 1))) {
                     pc.printf("1");
                 } else {
@@ -69,48 +118,29 @@
                 }
             }
             printf("\r\n");
-            tmp |= freq_bit;
-            register_data_array[2] = tmp;
-            printf("reg2=");
-            for(int i = 27; i > 0; i--) {
-                if(tmp & (1 << (i - 1))) {
-                    pc.printf("1");
-                } else {
-                    pc.printf("0");
-                }
-            }
-           printf("\r\n");
         } else if(key == '1') {
-            
+
             freq_bit = binary(calsat_freq);
-            freq_bit = freq_bit<<4;
+            tmp = freq_bit<<4;
 
         } else if(key =='2') { //calsatから受けとる
             freq_bit = binary(human_freq);
-            freq_bit = freq_bit<<4;
+            tmp = freq_bit<<4;
         }
-        /*else if(key == '3' ) {
+        /*else if(key == '3') {
              uint32_t tmp = 0;
-             tmp |= ( register_data_array[2] >> 27); //この行と次の行でレジスタのデータの部分を全て0にしている
-             tmp |= (tmp << 27);
-
-             Shift_bit(tmp, binary(human_freq), 4);//人間が入力した周波数の値を用いたレジスタを作成する
+             tmp =  reg0 >> 27; //この行と次の行でレジスタのデータの部分を全て0にしている
+             tmp = tmp << 27;
+             freq_bit = binary(human_freq);
+             freq_bit = freq_bit<<4;
+             tmp |= freq_bit;
              register_data_array[2] = tmp;//配列の中に格納する
              show_all();
              */
         else {}
-        
 
-        /* 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))) {
+        for(int i = 32; i > 0; i--) {
+            if(tmp & (1 << (i - 1))) {
                 pc.printf("1");
             } else {
                 pc.printf("0");
@@ -225,6 +255,8 @@
         printf("\r\n");
         //格納フェーズ
         register_data_array[reg_num] = bin;
+        if(reg_num == 2)
+            reg0 = bin;
         reg_num++;
         if(reg_num == 4) {
             reg_num = 0;
@@ -251,7 +283,7 @@
         a++;
         if(_command[a-1] == 0xfd) {
             calsat_freq = doppler(_command);
-            _register = Reg0_gen(0, calsat_freq, human_freq); //reg0をcalsatの値で更新
+            _register = Reg0_gen('0', calsat_freq, human_freq); //reg0をcalsatの値で更新
             /*
             for(int j = 0; j < a; j++)
                 printf("%02hhx",_command[j]);
@@ -287,7 +319,7 @@
                     //file読み込み、calsator人の更新
                 } else if(key == '3') //reg0を人にする
                     tmp.check(key,calsat_freq);
-                    else if(key == '0') //reg0を人にする
+                else if(key == '0') //reg0を人にする
                     tmp.check(key,calsat_freq);
             }
         }