疑似的な脈波・呼吸・いびきを出力するプログラムです。

Dependencies:   mbed

Committer:
woodbed
Date:
Thu Jan 26 09:33:27 2017 +0000
Revision:
4:17cfeca0673c
Parent:
3:2f4d9f3a4618
AM???????

Who changed what in which revision?

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