電気信号発生器用プログラム 初版

Dependencies:   mbed

Committer:
woodbed
Date:
Fri Mar 24 04:43:46 2017 +0000
Revision:
0:8b203a46dfb1
????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
woodbed 0:8b203a46dfb1 1 #include "mbed.h"
woodbed 0:8b203a46dfb1 2
woodbed 0:8b203a46dfb1 3 int mode = 0; //0=電気信号発生器 1=駆動信号発生器
woodbed 0:8b203a46dfb1 4 int revision = 1;
woodbed 0:8b203a46dfb1 5
woodbed 0:8b203a46dfb1 6 //Serial Port Setting
woodbed 0:8b203a46dfb1 7 Serial pc(p13, p14); // シリアルポートのインスタンス
woodbed 0:8b203a46dfb1 8
woodbed 0:8b203a46dfb1 9 //PWM Port Setting
woodbed 0:8b203a46dfb1 10 PwmOut signal_1(p23);
woodbed 0:8b203a46dfb1 11 PwmOut signal_2(p22);
woodbed 0:8b203a46dfb1 12 PwmOut signal_3(p21);
woodbed 0:8b203a46dfb1 13
woodbed 0:8b203a46dfb1 14 //Ticker
woodbed 0:8b203a46dfb1 15 Ticker timer;
woodbed 0:8b203a46dfb1 16
woodbed 0:8b203a46dfb1 17 //Digital Out
woodbed 0:8b203a46dfb1 18 DigitalOut ledch1(LED1);
woodbed 0:8b203a46dfb1 19
woodbed 0:8b203a46dfb1 20 //cos Wave
woodbed 0:8b203a46dfb1 21 float coswave[256];
woodbed 0:8b203a46dfb1 22
woodbed 0:8b203a46dfb1 23 //status flug
woodbed 0:8b203a46dfb1 24 int status1 =0; //suatus1 : 0=波形出力停止中, 1=波形出力中
woodbed 0:8b203a46dfb1 25
woodbed 0:8b203a46dfb1 26 //User set Wave Paramater 初期値
woodbed 0:8b203a46dfb1 27 int sample_dt = 100; //microsec 10kHz
woodbed 0:8b203a46dfb1 28 float hb_carr_freq = 8.7; //Hz
woodbed 0:8b203a46dfb1 29 float hb_mod_freq = 1; //Hz
woodbed 0:8b203a46dfb1 30 float hb_carr_level = 0.18; //min=0 max=0.5 0.5以上ではMOD 50%以上で振幅が飽和する
woodbed 0:8b203a46dfb1 31 float hb_mod_ratio = 63; //0-100 %
woodbed 0:8b203a46dfb1 32 float resp_freq = 0.3; //Hz
woodbed 0:8b203a46dfb1 33 float resp_level = 0.6; //min=0 max=1
woodbed 0:8b203a46dfb1 34 float snore_freq = 150; //Hz
woodbed 0:8b203a46dfb1 35 float snore_level = 0.26; //min=0 max=1
woodbed 0:8b203a46dfb1 36 int snore_oncycle = 10000; //On Time = snore_oncycle * sample_dt, snore_oncycle < snore_allcycle;
woodbed 0:8b203a46dfb1 37 int snore_allcycle = 33333; //OFF Time = (allcycle - oncycle) * sample_dt
woodbed 0:8b203a46dfb1 38 int snore_onoff = 1; //0: ALL Time ON, 1:On Time only
woodbed 0:8b203a46dfb1 39
woodbed 0:8b203a46dfb1 40 //Set wave paramater
woodbed 0:8b203a46dfb1 41 //HB_carr
woodbed 0:8b203a46dfb1 42 float hb_carr_period = 1000000*1/hb_carr_freq; //microSec
woodbed 0:8b203a46dfb1 43 float hb_carr_n = 0;
woodbed 0:8b203a46dfb1 44 float hb_carr_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 45 float hb_carr_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 46 float hb_carr_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 47 float hb_carr_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 48 float hb_carr_table_dt = hb_carr_period/256;
woodbed 0:8b203a46dfb1 49 float hb_carr_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 50 float hb_carr_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 51
woodbed 0:8b203a46dfb1 52 //HB_mod
woodbed 0:8b203a46dfb1 53 float hb_mod_period = 1000000*1/hb_mod_freq;
woodbed 0:8b203a46dfb1 54 float hb_mod_n = 0;
woodbed 0:8b203a46dfb1 55 float hb_mod_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 56 float hb_mod_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 57 float hb_mod_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 58 float hb_mod_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 59 float hb_mod_table_dt = hb_mod_period/256;
woodbed 0:8b203a46dfb1 60 float hb_mod_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 61 float hb_mod_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 62
woodbed 0:8b203a46dfb1 63 float hb_mod_ra = hb_mod_ratio * 0.01;
woodbed 0:8b203a46dfb1 64 float hb_signal = 0;
woodbed 0:8b203a46dfb1 65 float mod_signal = 0;
woodbed 0:8b203a46dfb1 66
woodbed 0:8b203a46dfb1 67 //RESP
woodbed 0:8b203a46dfb1 68 float resp_period = 1000000*1/resp_freq; //microSec
woodbed 0:8b203a46dfb1 69 float resp_n = 0;
woodbed 0:8b203a46dfb1 70 float resp_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 71 float resp_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 72 float resp_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 73 float resp_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 74 float resp_table_dt = resp_period/256;
woodbed 0:8b203a46dfb1 75 float resp_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 76 float resp_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 77 float resp_signal = 0;
woodbed 0:8b203a46dfb1 78
woodbed 0:8b203a46dfb1 79 //SNORE Paramater
woodbed 0:8b203a46dfb1 80 float snore_period = 1000000*1/snore_freq; //microSec
woodbed 0:8b203a46dfb1 81 float snore_n = 0;
woodbed 0:8b203a46dfb1 82 float snore_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 83 float snore_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 84 float snore_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 85 float snore_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 86 float snore_table_dt = snore_period/256; //2016/12/12 255->256
woodbed 0:8b203a46dfb1 87 float snore_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 88 float snore_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 89 int snore_cycle = 0;
woodbed 0:8b203a46dfb1 90 float snore_signal = 0;
woodbed 0:8b203a46dfb1 91
woodbed 0:8b203a46dfb1 92 int pwidth_1 = 0;
woodbed 0:8b203a46dfb1 93 int pwidth_2 = 0;
woodbed 0:8b203a46dfb1 94 int pwidth_3 = 0;
woodbed 0:8b203a46dfb1 95
woodbed 0:8b203a46dfb1 96 // Debug use only ----
woodbed 0:8b203a46dfb1 97 int dbcount = 0;
woodbed 0:8b203a46dfb1 98
woodbed 0:8b203a46dfb1 99 // End of debug use ----
woodbed 0:8b203a46dfb1 100
woodbed 0:8b203a46dfb1 101 //Signal Culcurate
woodbed 0:8b203a46dfb1 102 void signal_culc(){
woodbed 0:8b203a46dfb1 103
woodbed 0:8b203a46dfb1 104 //HB section
woodbed 0:8b203a46dfb1 105 //HB_carr
woodbed 0:8b203a46dfb1 106 hb_carr_n_sample = (hb_carr_period - hb_carr_tstart) / sample_dt;
woodbed 0:8b203a46dfb1 107 hb_carr_tend = fmod((hb_carr_period - hb_carr_tstart) , sample_dt);
woodbed 0:8b203a46dfb1 108 if(hb_carr_tend == 0){
woodbed 0:8b203a46dfb1 109 hb_carr_n_sample = hb_carr_n_sample-1;
woodbed 0:8b203a46dfb1 110 }
woodbed 0:8b203a46dfb1 111 hb_carr_t_samplepoint = hb_carr_tstart + sample_dt * hb_carr_n; //time of sampling point
woodbed 0:8b203a46dfb1 112 hb_carr_n_samplepoint = hb_carr_t_samplepoint / hb_carr_table_dt;
woodbed 0:8b203a46dfb1 113 if(hb_carr_n_samplepoint >= 256){
woodbed 0:8b203a46dfb1 114 hb_carr_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 115 }
woodbed 0:8b203a46dfb1 116 hb_carr_v_samplepoint = coswave[(int)hb_carr_n_samplepoint];
woodbed 0:8b203a46dfb1 117 if(hb_carr_n > (int)hb_carr_n_sample) {
woodbed 0:8b203a46dfb1 118 hb_carr_n =0;
woodbed 0:8b203a46dfb1 119 hb_carr_tstart = sample_dt - hb_carr_tend;
woodbed 0:8b203a46dfb1 120 }
woodbed 0:8b203a46dfb1 121 else {
woodbed 0:8b203a46dfb1 122 hb_carr_n++;
woodbed 0:8b203a46dfb1 123 }
woodbed 0:8b203a46dfb1 124 //HB_mod
woodbed 0:8b203a46dfb1 125 //A(1+macosωmt)*cosωct Acosωct = fcarr(t),ma = modulation ratio,
woodbed 0:8b203a46dfb1 126 hb_mod_n_sample = (hb_mod_period - hb_mod_tstart) / sample_dt;
woodbed 0:8b203a46dfb1 127 hb_mod_tend = fmod((hb_mod_period - hb_mod_tstart) , sample_dt);
woodbed 0:8b203a46dfb1 128 if(hb_mod_tend == 0){
woodbed 0:8b203a46dfb1 129 hb_mod_n_sample = hb_mod_n_sample-1;
woodbed 0:8b203a46dfb1 130 }
woodbed 0:8b203a46dfb1 131 hb_mod_t_samplepoint = hb_mod_tstart + sample_dt * hb_mod_n; //time of sampling point
woodbed 0:8b203a46dfb1 132 hb_mod_n_samplepoint = hb_mod_t_samplepoint / hb_mod_table_dt;
woodbed 0:8b203a46dfb1 133 if(hb_mod_n_samplepoint >= 256){
woodbed 0:8b203a46dfb1 134 hb_mod_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 135 }
woodbed 0:8b203a46dfb1 136 hb_mod_v_samplepoint = hb_mod_ra*(coswave[(int)hb_mod_n_samplepoint]);
woodbed 0:8b203a46dfb1 137 if(hb_mod_n > (int)hb_mod_n_sample) {
woodbed 0:8b203a46dfb1 138 hb_mod_n =0;
woodbed 0:8b203a46dfb1 139 hb_mod_tstart = sample_dt - hb_mod_tend;
woodbed 0:8b203a46dfb1 140 }
woodbed 0:8b203a46dfb1 141 else {
woodbed 0:8b203a46dfb1 142 hb_mod_n++;
woodbed 0:8b203a46dfb1 143 }
woodbed 0:8b203a46dfb1 144
woodbed 0:8b203a46dfb1 145 //HB_AM MOD
woodbed 0:8b203a46dfb1 146
woodbed 0:8b203a46dfb1 147 hb_signal = 0.5*(hb_carr_level*(1+hb_mod_v_samplepoint)*hb_carr_v_samplepoint)+0.5;//0-1 -> 0V-3.3V
woodbed 0:8b203a46dfb1 148
woodbed 0:8b203a46dfb1 149 //debug part
woodbed 0:8b203a46dfb1 150 /*
woodbed 0:8b203a46dfb1 151 if(dbcount>=100){
woodbed 0:8b203a46dfb1 152 pc.printf("%f, %f, %f\n",hb_signal,mod_signal,hb_mod_v_samplepoint);
woodbed 0:8b203a46dfb1 153 dbcount = 0;
woodbed 0:8b203a46dfb1 154 }
woodbed 0:8b203a46dfb1 155 dbcount++;
woodbed 0:8b203a46dfb1 156 */
woodbed 0:8b203a46dfb1 157 //end debug part
woodbed 0:8b203a46dfb1 158
woodbed 0:8b203a46dfb1 159 //RESP section
woodbed 0:8b203a46dfb1 160 resp_n_sample = (resp_period - resp_tstart) / sample_dt;
woodbed 0:8b203a46dfb1 161 resp_tend = fmod((resp_period - resp_tstart) , sample_dt);
woodbed 0:8b203a46dfb1 162 if(resp_tend == 0){
woodbed 0:8b203a46dfb1 163 resp_n_sample = resp_n_sample-1;
woodbed 0:8b203a46dfb1 164 }
woodbed 0:8b203a46dfb1 165 resp_t_samplepoint = resp_tstart + sample_dt * resp_n; //time of sampling point
woodbed 0:8b203a46dfb1 166 resp_n_samplepoint = resp_t_samplepoint / resp_table_dt;
woodbed 0:8b203a46dfb1 167 if(resp_n_samplepoint >= 256){
woodbed 0:8b203a46dfb1 168 resp_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 169 }
woodbed 0:8b203a46dfb1 170 resp_v_samplepoint = resp_level*(coswave[(int)resp_n_samplepoint]);
woodbed 0:8b203a46dfb1 171 resp_signal = 0.5*resp_v_samplepoint+0.5; //0-1 -> 0V-3.3V
woodbed 0:8b203a46dfb1 172 if(resp_n > (int)resp_n_sample) {
woodbed 0:8b203a46dfb1 173 resp_n =0;
woodbed 0:8b203a46dfb1 174 resp_tstart = sample_dt - resp_tend;
woodbed 0:8b203a46dfb1 175 }
woodbed 0:8b203a46dfb1 176 else {
woodbed 0:8b203a46dfb1 177 resp_n++;
woodbed 0:8b203a46dfb1 178 }
woodbed 0:8b203a46dfb1 179
woodbed 0:8b203a46dfb1 180 //SNORE section
woodbed 0:8b203a46dfb1 181 snore_n_sample = (snore_period - snore_tstart) / sample_dt; //
woodbed 0:8b203a46dfb1 182 snore_tend = fmod((snore_period - snore_tstart) , sample_dt);
woodbed 0:8b203a46dfb1 183 if(snore_tend == 0){
woodbed 0:8b203a46dfb1 184 snore_n_sample = snore_n_sample-1;
woodbed 0:8b203a46dfb1 185 }
woodbed 0:8b203a46dfb1 186 else {
woodbed 0:8b203a46dfb1 187 }
woodbed 0:8b203a46dfb1 188 snore_t_samplepoint = snore_tstart + sample_dt * snore_n; //time of sampling point
woodbed 0:8b203a46dfb1 189 snore_n_samplepoint = snore_t_samplepoint / snore_table_dt;
woodbed 0:8b203a46dfb1 190 if(snore_n_samplepoint >= 256){
woodbed 0:8b203a46dfb1 191 snore_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 192 }
woodbed 0:8b203a46dfb1 193 snore_v_samplepoint = snore_level*(coswave[(int)snore_n_samplepoint]);
woodbed 0:8b203a46dfb1 194 if(snore_n > (int)snore_n_sample) {
woodbed 0:8b203a46dfb1 195 snore_n =0; //2016/12/12 1->0
woodbed 0:8b203a46dfb1 196 snore_tstart = sample_dt - snore_tend;
woodbed 0:8b203a46dfb1 197 }
woodbed 0:8b203a46dfb1 198 else {
woodbed 0:8b203a46dfb1 199 snore_n++;
woodbed 0:8b203a46dfb1 200 }
woodbed 0:8b203a46dfb1 201 if(snore_onoff==0){
woodbed 0:8b203a46dfb1 202 }
woodbed 0:8b203a46dfb1 203 else if(snore_onoff==1){
woodbed 0:8b203a46dfb1 204 if (snore_cycle <= snore_oncycle) {
woodbed 0:8b203a46dfb1 205 snore_cycle++;
woodbed 0:8b203a46dfb1 206 }
woodbed 0:8b203a46dfb1 207 else if (snore_cycle>snore_oncycle && snore_cycle <= snore_allcycle){
woodbed 0:8b203a46dfb1 208 snore_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 209 snore_cycle++;
woodbed 0:8b203a46dfb1 210 }
woodbed 0:8b203a46dfb1 211 else {
woodbed 0:8b203a46dfb1 212 snore_cycle = 0;
woodbed 0:8b203a46dfb1 213 }
woodbed 0:8b203a46dfb1 214 }
woodbed 0:8b203a46dfb1 215 snore_signal = 0.5*snore_v_samplepoint+0.5; //0-1 -> 0V-3.3V
woodbed 0:8b203a46dfb1 216
woodbed 0:8b203a46dfb1 217 //PWM Output Pulse width
woodbed 0:8b203a46dfb1 218 pwidth_1 = hb_signal * sample_dt;
woodbed 0:8b203a46dfb1 219 pwidth_2 = resp_signal * sample_dt;
woodbed 0:8b203a46dfb1 220 pwidth_3 = snore_signal * sample_dt;
woodbed 0:8b203a46dfb1 221
woodbed 0:8b203a46dfb1 222 signal_1.pulsewidth_us(pwidth_1);
woodbed 0:8b203a46dfb1 223 signal_2.pulsewidth_us(pwidth_2);
woodbed 0:8b203a46dfb1 224 signal_3.pulsewidth_us(pwidth_3);
woodbed 0:8b203a46dfb1 225 }
woodbed 0:8b203a46dfb1 226
woodbed 0:8b203a46dfb1 227 //チッカー割り込みハンドラ
woodbed 0:8b203a46dfb1 228 void attime(){
woodbed 0:8b203a46dfb1 229 if(status1==1){
woodbed 0:8b203a46dfb1 230 ledch1=0;
woodbed 0:8b203a46dfb1 231 signal_culc();
woodbed 0:8b203a46dfb1 232 }
woodbed 0:8b203a46dfb1 233 else{
woodbed 0:8b203a46dfb1 234 ledch1=!ledch1;
woodbed 0:8b203a46dfb1 235 }
woodbed 0:8b203a46dfb1 236 }
woodbed 0:8b203a46dfb1 237
woodbed 0:8b203a46dfb1 238 //Serial 受信割り込みハンドラ
woodbed 0:8b203a46dfb1 239 void isrRx() {
woodbed 0:8b203a46dfb1 240
woodbed 0:8b203a46dfb1 241 /* UART受信コマンド
woodbed 0:8b203a46dfb1 242 start: 波形出力スタート
woodbed 0:8b203a46dfb1 243 stop: 波形出力ストップ
woodbed 0:8b203a46dfb1 244 St: 割り込み周期[μsec]
woodbed 0:8b203a46dfb1 245 carrf: 脈波AM変調波搬送波周波数[Hz]
woodbed 0:8b203a46dfb1 246 modf: 脈波AM変調波変調周波数[Hz]
woodbed 0:8b203a46dfb1 247 carrl: 脈波振幅
woodbed 0:8b203a46dfb1 248 modr: 脈波変調波変調率[%]
woodbed 0:8b203a46dfb1 249 respf: 呼吸周波数[Hz]
woodbed 0:8b203a46dfb1 250 respl: 呼吸振幅
woodbed 0:8b203a46dfb1 251 snorf: 体動・イビキ周波数[Hz]
woodbed 0:8b203a46dfb1 252 snorl: 体動・イビキ振幅
woodbed 0:8b203a46dfb1 253 snon: 体動・イビキONサイクル
woodbed 0:8b203a46dfb1 254 snall: 体動・イビキALLサイクル
woodbed 0:8b203a46dfb1 255 sncn: 体動・イビキ断続制御
woodbed 0:8b203a46dfb1 256 */
woodbed 0:8b203a46dfb1 257
woodbed 0:8b203a46dfb1 258 char scan[10];
woodbed 0:8b203a46dfb1 259 float para;
woodbed 0:8b203a46dfb1 260
woodbed 0:8b203a46dfb1 261 pc.scanf("%s",scan); // 文字列受信バッファより取り出し
woodbed 0:8b203a46dfb1 262 // pc.printf("read = %s\n",scan);
woodbed 0:8b203a46dfb1 263
woodbed 0:8b203a46dfb1 264 if(strcmp(scan,"start")==0){
woodbed 0:8b203a46dfb1 265 pc.printf("go\n");
woodbed 0:8b203a46dfb1 266 status1=1; //波形出力状態へ遷移
woodbed 0:8b203a46dfb1 267 }
woodbed 0:8b203a46dfb1 268 else if(strcmp(scan,"stop")==0){
woodbed 0:8b203a46dfb1 269 pc.printf("end\n");
woodbed 0:8b203a46dfb1 270 status1=0; //波形出力停止へ遷移
woodbed 0:8b203a46dfb1 271 }
woodbed 0:8b203a46dfb1 272 else if(strcmp(scan,"dt")==0){
woodbed 0:8b203a46dfb1 273 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 274 sample_dt = para;
woodbed 0:8b203a46dfb1 275 pc.printf("dt = %f\n",sample_dt);
woodbed 0:8b203a46dfb1 276 }
woodbed 0:8b203a46dfb1 277 else if(strcmp(scan,"carrf")==0){
woodbed 0:8b203a46dfb1 278 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 279 hb_carr_freq = para;
woodbed 0:8b203a46dfb1 280 hb_carr_period = 1000000*1/hb_carr_freq; //microSec
woodbed 0:8b203a46dfb1 281 hb_carr_n = 0;
woodbed 0:8b203a46dfb1 282 hb_carr_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 283 hb_carr_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 284 hb_carr_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 285 hb_carr_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 286 hb_carr_table_dt = hb_carr_period/256;
woodbed 0:8b203a46dfb1 287 hb_carr_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 288 hb_carr_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 289 pc.printf("carrf = %f\n",hb_carr_freq);
woodbed 0:8b203a46dfb1 290 hb_mod_period = 1000000*1/hb_mod_freq;
woodbed 0:8b203a46dfb1 291 hb_mod_n = 0;
woodbed 0:8b203a46dfb1 292 hb_mod_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 293 hb_mod_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 294 hb_mod_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 295 hb_mod_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 296 hb_mod_table_dt = hb_mod_period/256;
woodbed 0:8b203a46dfb1 297 hb_mod_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 298 hb_mod_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 299 }
woodbed 0:8b203a46dfb1 300 else if(strcmp(scan,"modf")==0){
woodbed 0:8b203a46dfb1 301 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 302 hb_mod_freq = para;
woodbed 0:8b203a46dfb1 303 hb_mod_period = 1000000*1/hb_mod_freq;
woodbed 0:8b203a46dfb1 304 hb_mod_n = 0;
woodbed 0:8b203a46dfb1 305 hb_mod_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 306 hb_mod_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 307 hb_mod_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 308 hb_mod_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 309 hb_mod_table_dt = hb_mod_period/256;
woodbed 0:8b203a46dfb1 310 hb_mod_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 311 hb_mod_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 312 pc.printf("modf = %f\n",hb_mod_freq);
woodbed 0:8b203a46dfb1 313 hb_carr_n = 0;
woodbed 0:8b203a46dfb1 314 hb_carr_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 315 hb_carr_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 316 hb_carr_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 317 hb_carr_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 318 hb_carr_table_dt = hb_carr_period/256;
woodbed 0:8b203a46dfb1 319 hb_carr_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 320 hb_carr_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 321 }
woodbed 0:8b203a46dfb1 322 else if(strcmp(scan,"carrl")==0){
woodbed 0:8b203a46dfb1 323 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 324 hb_carr_level = para;
woodbed 0:8b203a46dfb1 325 pc.printf("carrl = %f\n",hb_carr_level);
woodbed 0:8b203a46dfb1 326 }
woodbed 0:8b203a46dfb1 327 else if(strcmp(scan,"modr")==0){
woodbed 0:8b203a46dfb1 328 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 329 hb_mod_ratio = para;
woodbed 0:8b203a46dfb1 330 hb_mod_ra = hb_mod_ratio *0.01;
woodbed 0:8b203a46dfb1 331 pc.printf("modr = %f\n",hb_mod_ra);
woodbed 0:8b203a46dfb1 332 }
woodbed 0:8b203a46dfb1 333 else if(strcmp(scan,"respf")==0){
woodbed 0:8b203a46dfb1 334 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 335 resp_freq = para;
woodbed 0:8b203a46dfb1 336 resp_period = 1000000*1/resp_freq;//microSec
woodbed 0:8b203a46dfb1 337 resp_n = 0;
woodbed 0:8b203a46dfb1 338 resp_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 339 resp_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 340 resp_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 341 resp_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 342 resp_table_dt = resp_period/256;
woodbed 0:8b203a46dfb1 343 resp_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 344 resp_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 345 pc.printf("respf = %f\n",resp_freq);
woodbed 0:8b203a46dfb1 346 }
woodbed 0:8b203a46dfb1 347 else if(strcmp(scan,"respl")==0){
woodbed 0:8b203a46dfb1 348 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 349 resp_level = para;
woodbed 0:8b203a46dfb1 350 pc.printf("respl = %f\n",resp_level);
woodbed 0:8b203a46dfb1 351 }
woodbed 0:8b203a46dfb1 352 else if(strcmp(scan,"snorf")==0){
woodbed 0:8b203a46dfb1 353 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 354 snore_freq = para;
woodbed 0:8b203a46dfb1 355 snore_period = 1000000*1/snore_freq; //microSec
woodbed 0:8b203a46dfb1 356 snore_n = 0; //2016/12/12 1->0
woodbed 0:8b203a46dfb1 357 snore_n_sample = 0; //The maximum number of sampling points in the signal
woodbed 0:8b203a46dfb1 358 snore_tend = 0; //The remainder of sampling points in the signal
woodbed 0:8b203a46dfb1 359 snore_tstart = 0; //start offset of sampling time
woodbed 0:8b203a46dfb1 360 snore_t_samplepoint = 0;
woodbed 0:8b203a46dfb1 361 snore_table_dt = snore_period/256;
woodbed 0:8b203a46dfb1 362 snore_n_samplepoint = 0;
woodbed 0:8b203a46dfb1 363 snore_v_samplepoint = 0;
woodbed 0:8b203a46dfb1 364 snore_cycle = 0;
woodbed 0:8b203a46dfb1 365 pc.printf("snorf = %f\n",snore_freq);
woodbed 0:8b203a46dfb1 366 }
woodbed 0:8b203a46dfb1 367 else if(strcmp(scan,"snorl")==0){
woodbed 0:8b203a46dfb1 368 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 369 snore_level = para;
woodbed 0:8b203a46dfb1 370 pc.printf("snorl = %f\n",snore_level);
woodbed 0:8b203a46dfb1 371 }
woodbed 0:8b203a46dfb1 372 else if(strcmp(scan,"snon")==0){
woodbed 0:8b203a46dfb1 373 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 374 snore_oncycle = (int)para;
woodbed 0:8b203a46dfb1 375 pc.printf("snon = %d\n",snore_oncycle);
woodbed 0:8b203a46dfb1 376 }
woodbed 0:8b203a46dfb1 377 else if(strcmp(scan,"snall")==0){
woodbed 0:8b203a46dfb1 378 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 379 snore_allcycle = (int)para;
woodbed 0:8b203a46dfb1 380 pc.printf("snall = %d\n",snore_allcycle);
woodbed 0:8b203a46dfb1 381 }
woodbed 0:8b203a46dfb1 382 else if(strcmp(scan,"sncn")==0){
woodbed 0:8b203a46dfb1 383 pc.scanf("%f",&para);
woodbed 0:8b203a46dfb1 384 snore_onoff = (int)para;
woodbed 0:8b203a46dfb1 385 pc.printf("sncn = %d\n",snore_onoff);
woodbed 0:8b203a46dfb1 386 }
woodbed 0:8b203a46dfb1 387 else if(strcmp(scan,"ack")==0){
woodbed 0:8b203a46dfb1 388 pc.printf("carrf = %f\n",hb_carr_freq);
woodbed 0:8b203a46dfb1 389 pc.printf("carrl = %f\n",hb_carr_level);
woodbed 0:8b203a46dfb1 390 pc.printf("modf = %f\n",hb_mod_freq);
woodbed 0:8b203a46dfb1 391 pc.printf("modr = %f\n",hb_mod_ra);
woodbed 0:8b203a46dfb1 392 pc.printf("respf = %f\n",resp_freq);
woodbed 0:8b203a46dfb1 393 pc.printf("respl = %f\n",resp_level);
woodbed 0:8b203a46dfb1 394 pc.printf("snorf = %f\n",snore_freq);
woodbed 0:8b203a46dfb1 395 pc.printf("snorl = %f\n",snore_level);
woodbed 0:8b203a46dfb1 396 pc.printf("snon = %d\n",snore_oncycle);
woodbed 0:8b203a46dfb1 397 pc.printf("snall = %d\n",snore_allcycle);
woodbed 0:8b203a46dfb1 398 pc.printf("sncn = %d\n",snore_onoff);
woodbed 0:8b203a46dfb1 399 }
woodbed 0:8b203a46dfb1 400 else if(strcmp(scan,"mr")==0){
woodbed 0:8b203a46dfb1 401 pc.printf("mode = %d\n",mode);
woodbed 0:8b203a46dfb1 402 pc.printf("revision = %d\n",revision);
woodbed 0:8b203a46dfb1 403 }
woodbed 0:8b203a46dfb1 404 else {
woodbed 0:8b203a46dfb1 405 pc.printf("Command Error\n");
woodbed 0:8b203a46dfb1 406 }
woodbed 0:8b203a46dfb1 407 }
woodbed 0:8b203a46dfb1 408
woodbed 0:8b203a46dfb1 409 int main() {
woodbed 0:8b203a46dfb1 410 pc.printf("Start Up\n");
woodbed 0:8b203a46dfb1 411
woodbed 0:8b203a46dfb1 412 //Make cos wave
woodbed 0:8b203a46dfb1 413 int i;
woodbed 0:8b203a46dfb1 414 for(i=0;i<=255;i++){
woodbed 0:8b203a46dfb1 415 coswave[i]=cos(2.0*3.1415*i/256); //2017/1/5 0.5*(cos(2.0*3.1415*i/256));
woodbed 0:8b203a46dfb1 416 }
woodbed 0:8b203a46dfb1 417 i = 0;
woodbed 0:8b203a46dfb1 418
woodbed 0:8b203a46dfb1 419 signal_1.period_us(sample_dt); //Pulse_cycle = 100usec = 10kHz
woodbed 0:8b203a46dfb1 420 signal_2.period_us(sample_dt);
woodbed 0:8b203a46dfb1 421 signal_3.period_us(sample_dt);
woodbed 0:8b203a46dfb1 422
woodbed 0:8b203a46dfb1 423 int j;
woodbed 0:8b203a46dfb1 424 j = sample_dt;
woodbed 0:8b203a46dfb1 425 timer.attach_us(&attime,j); //⇒UART割り込み”START”に移動
woodbed 0:8b203a46dfb1 426
woodbed 0:8b203a46dfb1 427 pc.attach(isrRx, Serial::RxIrq); // 割込みハンドラ登録
woodbed 0:8b203a46dfb1 428 NVIC_SetPriority(UART1_IRQn,1);
woodbed 0:8b203a46dfb1 429
woodbed 0:8b203a46dfb1 430 while(1) {
woodbed 0:8b203a46dfb1 431 }
woodbed 0:8b203a46dfb1 432 }