Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem
Diff: ILF3_rev1.cpp
- Revision:
- 10:b34306f7add6
- Parent:
- 9:1d75106ccfa2
- Child:
- 13:e138a91ed2cb
--- a/ILF3_rev1.cpp Tue Apr 26 08:34:58 2022 +0000 +++ b/ILF3_rev1.cpp Wed Apr 27 06:29:56 2022 +0000 @@ -223,6 +223,7 @@ Timeout oneshot2; Timeout oneshot3; Timeout oneshot4; +Timeout oneshot5;//CAL番号未送信タイムアウト用 /*** SD-CARD ***/ SDFileSystem sd(P0_9, P0_8, P0_7, P0_6, "sd"); //SDFileSystem name(mosi, miso, sck, cs, mount); @@ -231,9 +232,9 @@ I2C i2c(P0_10,P0_11); //(PinName sda, PinName scl) I2Cを定義 /*** UART ver3 ***/ -//Serial uart(P0_15,P0_16,19200); -//Serial pc(USBTX,USBRX,9600); //mbed⇔PCデバック用 -Serial pc(P0_15,P0_16,19200); //ILF3⇔PCデバック用 +//RawSerial uart(P0_15,P0_16,19200); +//RawSerial pc(USBTX,USBRX,9600); //mbed⇔PCデバック用 +RawSerial pc(P0_15,P0_16,19200);//ILF3⇔PCデバック用 /*** interruput ***/ //InterruptIn seq_yobi(P0_19); @@ -548,6 +549,7 @@ void read_syoudo(char* c);//EEPROMから照度データ(PwmDuty)を読み込んでセットする void seq_serialsend(/*int noc*/);//シーケンサへのシリアル出力 void seq_serialrecive(/*int noc*/);//シーケンサへのシリアル入力 +void seq_timeout();//シーケンサからCAL番号が一定時間出力されなければ前回のCAL番号で測定 /******************************************************************************* @@ -567,7 +569,7 @@ char ch_num ;//選択中の測定チャネル(0~3) int cat;//検査カテゴリNo. float fdata[4][4];//ファイル出力用 -char seq_name[3];// +char seq_name[3];//CAL番号一時格納用配列 //structure @@ -588,7 +590,7 @@ short low_limit_ocp_v; // 過充電防止検査の下限規格[V] ver3 short up_limit_ocp_v; // 過充電防止検査の上限規格[V] ver3 float wait_voc; // リセット立上りからVOC測定までの待機時間[s] 1bit 1s 換算 ver3 -} ; +}; //parameter @@ -736,7 +738,7 @@ wait(0.1); - //seq_serialsend( meas_num ); //自動モード中のシーケンサ通信 + seq_serialsend( meas_num ); //自動モード中のシーケンサ通信 //測定終了ver3 //seq_busy = 0;//DegitalOut busy @@ -2717,9 +2719,6 @@ Jyushin = i2c.read ((addr_gu + 0x01), crdata, 3, true); - //シーケンサからシリアル受信割り込みイネーブル(デバック用) - pc.attach(seq_serialrecive,Serial::RxIrq); - while(1) { //スタートスイッチで測定開始 if ( sw_start == 0 ) { @@ -2780,9 +2779,6 @@ }//if wait(0.1); }//While - - //シーケンサからシリアル受信割り込みディスイネーブル(デバック用) - //pc.attach(NULL,Serial::RxIrq); } @@ -2996,7 +2992,6 @@ *********************************/ void meas_sub() { - int sdata;//シリアル通信STX格納(デバック用) auto_int_hyouji(); gu_cursor(0,2); @@ -3004,18 +2999,18 @@ gu_fontsize(2); + //STX受信待ち抜け割込みイネーブル + oneshot5.attach(seq_timeout, 5); + pc.attach(seq_serialrecive, RxIrq); //シーケンサからSTX受信するまでループ while(1){ - if ( seq_name[0] == 'A' ){ + if ( seq_name[3] == 'B' ){ break; - } - /* - sdata = pc.getc(); - if(sdata == 0x02){ - break; - } - */ } + }//while + seq_name[0] = 0;//CAL名受渡後STX初期化 + seq_name[3] = 0;//CAL名受渡後EXT初期化 + oneshot5.detach(); read_regnum();//CAL登録No.読込 @@ -3025,7 +3020,7 @@ hantei( number_of_channels );//判定LED - seq_serialsend(); //デバック用シーケンサ通信関数呼出 + seq_serialsend();//デバック用シーケンサ通信関数呼出 wait(0.5); @@ -3716,10 +3711,7 @@ if( err_f[i] == 1) { led_red[i] = 1; - } /*else { - led_green[i] = 1; - }*/ - else if(seq_name[0] == 'A') { + } else { led_green[i] = 1; } @@ -5099,25 +5091,19 @@ シーケンサ通信 ****************************************/ - +//一定時間CAL名未送信 +void seq_timeout(){ + seq_name[0] = 'A'; + seq_name[3] = 'B'; +} + +//CAL名受信 void seq_serialrecive(){ - seq_name[0] = pc.getc(); - led_green[0] = 1; - wait(0.5); - led_green[0] = 0; - - /* - while(seq_name[2] == 0x03){ - seq_name[0] = pc.getc(); - seq_name[1] = pc.getc(); - seq_name[2] = pc.getc(); - } - */ - } +//測定データ送信 void seq_serialsend(/*int noc*/) //デバック時int nocコメントアウト { char STX = 2;