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.cpp
- Revision:
- 12:60fb2daa673f
- Parent:
- 11:73676f3114f1
--- a/ILF3.cpp Wed Apr 27 06:19:26 2022 +0000
+++ b/ILF3.cpp Thu Apr 28 00:07:54 2022 +0000
@@ -123,7 +123,7 @@
#define wait_poweron 4 //[s]電源投入からリセットまでの時間
#define time_reset 0.5 //reset Hの時間 ver1.1.3
#define TIME_RELAY_ON 0.5 //外付けリードリレー用 Ton[s]
-#define TIME_RELAY_OFF 0.2 //外付けリードリレー用 Toff[s]
+#define TIME_RELAY_OFF 0.1 //外付けリードリレー用 Toff[s]
const int ton_rr = 0.1; //内蔵リードリレー ton[s]
const int toff_rr = 0.1; //内蔵リードリレー toff]
const bool tenken = true; //日常点検用 マニュアルモードにて True:測定CHのみVSS出力 False:全CH,VSS出力
@@ -269,19 +269,6 @@
DigitalOut( P1_25 ), //io12
};
-/*
-DigitalOut io[] = { // 配列を用意します
- DigitalOut( P0_25 ), //io1 配列の1番目の要素をP0_25で初期化したDigitalOutに
- DigitalOut( P0_26 ), //io2
- DigitalOut( P0_23 ), //io3
- DigitalOut( P0_24 ), //io4
- DigitalOut( P1_22 ), //io5
- DigitalOut( P1_23 ), //io6
- DigitalOut( P1_24 ), //io7
- DigitalOut( P1_25 ) //io8
-};
-*/
-
DigitalOut range[] = { // 配列を用意します
DigitalOut( P2_3 ), //range1 配列の1番目の要素を**で初期化したDigitalOutに
DigitalOut( P2_2 ), //range2
@@ -324,26 +311,6 @@
DigitalOut( P2_8 ) //so8
};
-//ver1.1.0
-/*
-DigitalOut seq_hantei[] = {
- DigitalOut( P0_21 ),
- DigitalOut( P0_22 ),
- DigitalOut( P3_25 ),
- DigitalOut( P3_26 )
-};
-
-DigitalOut seq_busy(P0_20);
-//DigitalIn
-DigitalIn seq_start(P4_28);
-DigitalIn seq_cal_a(P2_6);
-DigitalIn seq_cal_b(P2_7);
-DigitalIn seq_cal_c(P2_8);
-DigitalIn seq_kosuu_a(P2_13);
-DigitalIn seq_kosuu_b(P2_9);
-//DigitalIn seq_yobi(P0_19);
-*/
-
/*** PWM ***/
PwmOut leds[] = { //配列を用意
PwmOut(P2_5), //LED1
@@ -369,7 +336,7 @@
SD Card
*******************************************************************************/
-float fdata[4][4];//ファイル出力用
+double fdata[4][4];//ファイル出力用
void sd_writetext(char* text);
/*******************************************************************************
@@ -527,8 +494,8 @@
void compute_adc(int adc_con, long *avg);//(ADCのCONFIG, 計算結果)
void gu_putdec(short* x);//2byteを10進で表示
void gu_putdeck(short* x);//2byteを10進で表示。1/1000.
-void gu_putdeci(float* x);// ver1.1.4
-void gu_putdeci_mA(float* x);// ver1.1.4
+void gu_putdeci(double* x);
+void gu_putdeci_mA(double* x);
void meas_current_automode(char amount);//AutoMOdeの電流測定サブ iop ocp共通
void auto_run();//自動測定モード
void auto_meas(char noc);//一括測定。ch:測定する総チャンネル数
@@ -551,13 +518,15 @@
char io_voc; //VOC測定時のIO操作。ON(=VDD)の場合は”0x01"OFF(=OPEN)は"0x00"
char err_f[4];//ch1~4 規格外発生時のフラグ 0or1
short V[4];//ADC入力値を3倍した値 測定値[V] 16進数
-float I[4];//電流測定値チャンネル毎の
+double I[4];//電流測定値チャンネル毎の
short R[4];//抵抗測定値
short voc[4];//ADC入力値を3倍した値 測定値[mV] 16進数
short vocp[4];//過充電防止時のHD測定電圧
-float iop[4];//2byte 補数あり 測定値 1bit 0.01uA
-float ocp[4];//2byte 補数あり 測定値
+double iop[4];//2byte 補数あり 測定値 1bit 0.01uA
+double ocp[4];//2byte 補数あり 測定値
char ch_num ;//選択中の測定チャネル(0~3)
+int cat;//検査カテゴリNo.
+char seq_name[4];//CAL番号一時格納用配列
//structure
struct cal_info {
@@ -589,6 +558,76 @@
void read_caliber(cal_info *cal, int num);
void write_caliber_information(cal_info *cal, int num);
+
+
+/*******************************************************************************
+
+ シーケンサ通信
+
+ ver3.0.0
+
+*******************************************************************************/
+//一定時間CAL名未送信
+void seq_timeout(){
+ seq_name[0] = 'A';
+ seq_name[3] = 'B';
+}
+
+//CAL名受信
+void seq_serialrecive(){
+ seq_name[0] = uart.getc();
+}
+
+
+//測定データ送信
+void seq_serialsend(/*int noc*/) //デバック時int nocコメントアウト
+{
+ char STX = 2;
+ char EXT = 3;
+ int i;
+ int CH[] = {1,2,3,4};
+ int noc = 4;
+
+ for(i = 0; i <= ( noc - 1); i++){
+//PCデバック用 pc.→uart.に変更で装置用へ変更出来る
+ uart.printf("%c" , STX);
+ uart.printf("%d" , CH[i]);
+ uart.printf("%c" , ',');
+ uart.printf("%s\n" , calinfo.name);
+ uart.printf("%c" , ',');
+
+ //アンテナ抵抗値
+ if(R[i] < res_vref && R[0] >= 0){
+ uart.printf("%d" , R[i]);
+ }
+ else{
+ uart.printf("%s" , "OL");
+ }
+
+ uart.printf("%c" , ',');
+ uart.printf("%f" , fdata[i][0]); //Iop
+ uart.printf("%c" , ',');
+ uart.printf("%f" , fdata[i][1]); //Idd
+ uart.printf("%c" , ',');
+ uart.printf("%f" , fdata[i][2]); //Voc
+ uart.printf("%c" , ',');
+ uart.printf("%d" , vocp[i]);
+ uart.printf("%c" , ',');
+
+ if(err_f == 0){ //void hanteiのエラーフラグを流用
+ uart.printf("%s" , "PASS");
+ }
+ else{
+ uart.printf("%s" , "FAIL");
+ }
+
+ uart.printf("%c" , ',');
+ uart.printf("%d" , cat);
+ uart.printf("%c\n" , EXT);
+ }//for
+
+}
+
/*******************************
ver1.2.5
@@ -649,8 +688,10 @@
*******************************************************************************/
void seq()
{
+ /*
char crdata[3];
char cmd_gu[32];
+ */
seq_int_hyouji(true);
@@ -662,16 +703,17 @@
//if( seq_start == 0 ) {
if ( seq_in[0] == 0 ){
- seq_int_hyouji(false);
+ //seq_int_hyouji(false);
trigger();
- seq_int_hyouji(true);
+ //seq_int_hyouji(true);
}
- wait(0.3);
-
+ wait(0.2);
+
+ /*
crdata[0] = 0;
crdata[1] = 0;
crdata[2] = 0;
@@ -701,6 +743,7 @@
}//end if
}//end if
+ */
}//while(1)
}
@@ -1124,7 +1167,8 @@
void flip()
{
short sdata; //_2byte reading data of ADC
- float fdata; // ver1.1.4
+ //float fdata; // ver1.1.4
+ double ddata;
switch ( ch_num ) {
case 0:
@@ -1139,12 +1183,14 @@
//sdata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
/*ver1.1.4*/
- fdata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
+ //fdata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
+ ddata = sdata * 5 * 0.25;//プリアンプのGAINが1/5なのでここで5倍.ADC14bit分解能で、1bitあたり0.25mv
gu_cursor(0,4);
gu_print1(" ");
+ gu_putdeci(&ddata);
/*ver1.1.4*/
- gu_putdeci(&fdata);
+ //gu_putdeci(&fdata);
//gu_putdeci(&sdata);
houden[ ch_num ] = 1; //Discharge
@@ -1225,7 +1271,7 @@
short vss;
short sdata;
int r_flag;
- float ima;
+ double ima;
short ssdata;
ch_num = 0; //初期電流測定CH.
@@ -3330,10 +3376,10 @@
積分時間 2s
容量 20uF
**************************************/
-void gu_putdeci(float* idata)
+void gu_putdeci(double* idata)
{
- float uA; //ver1.1.4
+ double uA; //ver1.1.4
long y; //ver1.1.4
long x; //ver1.1.4
@@ -3400,9 +3446,9 @@
ADC_LSB:0.25mV
シャント抵抗1kΩ
**************************************/
-void gu_putdeci_mA(float* idata)
+void gu_putdeci_mA(double* idata)
{
- float uA; //ver1.1.4
+ double uA; //ver1.1.4
long y; //ver1.1.4
long x; //ver1.1.4
@@ -3658,6 +3704,9 @@
//short kekka;
//short goukei;
//int bosu = 2;
+
+ short ssdata1;
+ short ssdata2;
switch(ch) {
case 0:
@@ -3670,7 +3719,20 @@
com = adc_config(2,0);//ch1(adc),12bit
i2c.write( addr_ADC1, &com, 1);
wait(0.1);
- sdata = read_adc(addr_ADC1);
+ ssdata1 = read_adc(addr_ADC1);
+
+ wait(0.1);
+
+ i2c.write( addr_ADC1, &com, 1);
+ wait(0.1);
+ ssdata2 = read_adc(addr_ADC1);
+
+ //0.001 *5 * 10 Vの差異がある場合 ゼロ値にする
+ if ( abs(ssdata1 - ssdata2) > 10 ){
+ sdata = 0;
+ } else {
+ sdata = ( ssdata1 + ssdata2 ) /2;
+ }
break;