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

Dependencies:   mbed

Committer:
woodbed
Date:
Mon Dec 12 07:48:43 2016 +0000
Revision:
1:97c5a956a371
Parent:
0:63339e4deacf
Child:
2:1e0021f8eb7d
?????20161212

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