Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- 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);
}
}