doppler shift / Mbed 2 deprecated Register_set_16_5

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
KINU
Date:
Mon Mar 22 03:55:57 2021 +0000
Parent:
1:515864d13410
Commit message:
ddddd

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 515864d13410 -r 0a0b5c62d10c main.cpp
--- a/main.cpp	Wed Mar 17 16:35:21 2021 +0000
+++ b/main.cpp	Mon Mar 22 03:55:57 2021 +0000
@@ -23,7 +23,7 @@
     char _command[128];
     double human_freq; //人から受け取る周波数の値
     uint32_t _register;//最終的に欲しいレジスタの値.32ビット
-    uint32_t register_data_array[16];//完成したレジスターを格納する配列sho
+    uint32_t register_data_array[16];//完成したレジスターを格納する配列
     const char* filename;
     FILE *fp;
     calsat32()
@@ -39,26 +39,36 @@
         human_freq = 0;
     }
     //main関数内でコマンドが0x00の時にmainでbinary()を呼ぶと計算をしてuint_32型の値を返す
-    void Reg0_gen(int key,double calsat_freq,double human_freq ){ //keyはコマンド
+    void Reg0_gen(int key,double calsat_freq,double human_freq ,uint32_t _register){
+              
         if(key == '1') {
-               Shift_bit(_register, binary(calsat_freq), 4);
-               
+               //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), 4);//1の時calsat,2の時人
-          
+               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))) {
+                pc.printf("1");
+            } else {
+                pc.printf("0");
+            }
+        }
+            //show(_register);
+            printf("\r\n");
+            
     }
     void Shift_bit(uint32_t& Register, int Register_data, int Size)
     {
@@ -87,13 +97,9 @@
                     Shift_bit(_register, binary(calsat_freq), 4);
                     if(key == '2')*/
                         human_freq = register_data;
-                      // Shift_bit(_register, binary(register_data), 4);printf("ggg");
-                        
-                    Reg0_gen(key, calsat_freq, human_freq);
+                      // Shift_bit(_register, binary(register_data), 4);
+                    Reg0_gen(key, calsat_freq, human_freq, _register);
                     size = 27;
-
-                    /*    doppler_data = doppler(_command);
-                      Reg0_gen(key,doppler_data);*/
                     //テキストファイルから受け取った値を格納するとき
                 } else {
                     Shift_bit(_register, register_data, size);
@@ -102,11 +108,11 @@
                         printf(" = reg_%d ",num[register_num - 1]);
                         show(_register);
                         register_num++;
-                        _register = 0;
+                        //_register = 0;
                         size = 0;
                     }
                     if(size == 32) {
-                        //これで一つ完成.この値をどういう風にやるかは未定show()みたいなのを作るか?
+                        //これで一つ完成.
                         printf(" = reg_%d ",num[register_num - 1]);
                         show(_register);
                         register_num++;
@@ -143,7 +149,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)
@@ -186,7 +192,7 @@
         a++;
         if(_command[a-1] == 0xfd) {
           calsat_freq = doppler(_command);
-          Reg0_gen(1, calsat_freq, human_freq); //reg0をcalsatの値で更新
+          Reg0_gen(1, calsat_freq, human_freq,_register); //reg0をcalsatの値で更新
             /*
             for(int j = 0; j < a; j++)
                 printf("%02hhx",_command[j]);
@@ -198,7 +204,7 @@
     }
     void check(char key,double calsat_freq)
     {
-        printf("%c",key);
+        printf("key = %c\r\n",key);
         if(_command[4] == 0x00) {
             printf("---------------------------Start-----------------------------\r\n");
             file_read(key,calsat_freq);
@@ -208,6 +214,7 @@
 int main()
 {
     Serial device( p9, p10, 9600);
+    printf("Start\r\n");
     while(1) {
         calsat32 tmp;
         while(device.readable()) {
@@ -220,7 +227,6 @@
                   //file読み込み、calsator人の更新
                 }
                   else if(key == '3')//reg0を人にする
-             
                 tmp.check(key,calsat_freq);
             }
         }