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.
Diff: main.cpp
- 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);
}
}
}