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

Dependencies:   mbed

Committer:
woodbed
Date:
Tue Dec 13 07:36:28 2016 +0000
Revision:
2:1e0021f8eb7d
Parent:
1:97c5a956a371
Child:
3:2f4d9f3a4618
UART??

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