📄 lm339.txt
字号:
/***********************************
Tester : UTS2000/A680
Part Number : L439(LM339)
Test Program : L439A1_D
Date : 2006.11.03
Author : TS.Huang
***********************************/
/** Add Output Leakage Current Test**/
/**2006-08-25**/
/** Add Output Saturation Voltage Test**/
/**2006-10-18**/
/** Add Input Common Voltage **/
/**2006-10-19**/
/** Change the VCM voltage(+-14.0&13.9) to 13.55&13.65 And -14.8&-14.9**/
/**2006-12-17**/
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <user.h>
void Icc(void);
void vout(void);
void Vos(void);
void output(void);
void vsat(void);
void main()
{
terminal="1034Xprober";
ROW=8;
CHIP_NUMBER=14284; /*测试管脚总数*/
PARAMETER[0]="6u439A_a"; /*0-8为测试的参数值*/
PARAMETER[1]=" 1. Icc";
PARAMETER[2]=" 2. Output Voltage Swing";
PARAMETER[3]=" 3. Output Voltage(Common Mode)";
PARAMETER[4]=" 4. Vos";
PARAMETER[5]=" 5. Ios";
PARAMETER[6]=" 6. Ib";
PARAMETER[7]=" 7. Output Leakage Current";
PARAMETER[8]=" 8. Vsat";
menu();
finaltest=0;/*以下为测试程序*/
do {
reset();
test();
Icc();
if (failflg==1)
{
fail_number(1);
display(01);
continue;
}
vout();
if (failflg==2)
{
fail_number(2);
display(02);
continue;
}
if (failflg==3)
{
fail_number(3);
display(03);
continue;
}
Vos();
if (failflg==4)
{
fail_number(4);
display(04);
continue;
}
if (failflg==5)
{
fail_number(5);
display(05);
continue;
}
if (failflg==6)
{
fail_number(6);
display(06);
continue;
}
output();
if (failflg==7)
{
fail_number(7);
display(07);
continue;
}
vsat();
if (failflg==8)
{
fail_number(8);
display(10);
continue;
}
okpass();
}while (1);/*只要满足以上部分则为fail*/
}
void Icc()
{
float i1,i2;
int n;
dis_connect(1,2,3,4,5,6,7,8,9,10,11,12,13,14,0);
disconnect_5v_relay(1,2,3,4,5,6,8,9,10,11,0);
wait(5);
ground_pin(12,0);
force_vcc("on",0.1);
wait(2);
force_vcc("on",5);
wait(5);
i1=i_vcc(3,10)*1000;
dis_connect(12,0);
connect_vs2(12,0);/*VS2为测试机提供的电压值,12为探针台卡上的第12通道*/
wait(5);
force_vs2("on",-1);
force_vcc("on",1);
wait(5);
force_vs2("on",-15);
force_vcc("on",15);
wait(5);
i2=i_vcc(3,10)*1000-0.12;
dis_connect(12,0);
force_vs2("off",0);
force_vcc("off",0);
if (displaymode==0)
{
lcprintf("\n ********* UTC L439 TEST DATA *********\n");
lcprintf(" ********* TEST THE L439 ICC *********\n");
lcprintf(" ICC(+5.0V)=%7.3f; ICC(+30V)=%7.3f \n\n",i1,i2);
}
saveitem("%7.3f %7.3f ",i1,i2);
if (judge==0)
{
if ( ( fabs(i1-0.8) > 0.5 )|| ( i2 >2.0))
{
failflg=1;
return;
}
}
failflg=0;
return;
}
void vout()
{
float uoh1,uol1;
float uoh2,uol2;
float uoh3,uol3;
float uoh4,uol4;
float vcmh_a1,vcmh_b1;
float vcml_a1,vcml_b1;
float vcmh_a2,vcmh_b2;
float vcml_a2,vcml_b2;
float vcmh_c1,vcmh_d1;
float vcml_c1,vcml_d1;
float vcmh_c2,vcmh_d2;
float vcml_c2,vcml_d2;
int n;
connect_5v_relay(3,0);
connect_vs2(12,0);/**VEE**/
connect_vs3(5,7,9,11,0);
connect_vs1(4,6,8,10,0);
connect_5v_relay(4,0);/**Open Gain**/
wait(5);
force_vcc("on",15); /**15V**/
force_vs2("on",-15);/**-15V**/
wait(5);
force_vs1("on",13.55);/**13.55**/
force_vs3("on",13.65);/**13.65**/
wait(5);
vcmh_a1=measure_pin(1,3,5);
vcmh_b1=measure_pin(2,3,5);
vcmh_c1=measure_pin(13,3,5);
vcmh_d1=measure_pin(14,3,5);
force_vs1("on",13.65);/**13.65**/
force_vs3("on",13.55);/**13.55**/
wait(5);
vcml_a1=measure_pin(1,3,5);
vcml_b1=measure_pin(2,3,5);
vcml_c1=measure_pin(13,3,5);
vcml_d1=measure_pin(14,3,5);
force_vs1("on",-14.8);/**-14.8**/
force_vs3("on",-14.9);/**-14.9**/
wait(5);
vcml_a2=measure_pin(1,3,5);
vcml_b2=measure_pin(2,3,5);
vcml_c2=measure_pin(13,3,5);
vcml_d2=measure_pin(14,3,5);
force_vs1("on",-14.9);/**-14.9**/
force_vs3("on",-14.8);/**-14.8**/
wait(5);
vcmh_a2=measure_pin(1,3,5);
vcmh_b2=measure_pin(2,3,5);
vcmh_c2=measure_pin(13,3,5);
vcmh_d2=measure_pin(14,3,5);
dis_connect(4,6,8,10,0);
force_vs3("on",0);
force_vs1("off",0);
connect_5v_relay(1,4,0);/*D4,Open Gain*/
wait(5);
force_vs3("on", 0.3);
wait(5);
uoh1=measure_pin(1,3,5);
uoh2=measure_pin(2,3,5);
uoh3=measure_pin(13,3,5);
uoh4=measure_pin(14,3,5);
force_vs3("on", -0.3);
wait(5);
uol1=measure_pin(1,3,5);
uol2=measure_pin(2,3,5);
uol3=measure_pin(13,3,5);
uol4=measure_pin(14,3,5);
force_vs1("off",0);
force_vs2("off",0);
force_vs3("off",0);
dis_connect(1,2,3,4,5,6,7,8,9,10,11,12,0);
disconnect_5v_relay(1,2,3,4,0);
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 OUTPUT VOLTAGE SWING *******\n");
lcprintf(" VcmH_A(+)=%7.3fV ; VcmH_B(+)=%7.3fV\n",vcmh_a1,vcmh_b1);
lcprintf(" VcmL_A(+)=%7.3fV ; VcmL_B(+)=%7.3fV\n",vcml_a1,vcml_b1);
lcprintf(" VcmH_A(-)=%7.3fV ; VcmH_B(-)=%7.3fV\n",vcmh_a2,vcmh_b2);
lcprintf(" VcmL_A(-)=%7.3fV ; VcmL_B(-)=%7.3fV\n",vcml_a2,vcml_b2);
lcprintf(" VcmH_C(+)=%7.3fV ; VcmH_D(+)=%7.3fV\n",vcmh_c1,vcmh_d1);
lcprintf(" VcmL_C(+)=%7.3fV ; VcmL_D(+)=%7.3fV\n",vcml_c1,vcml_d1);
lcprintf(" VcmH_C(-)=%7.3fV ; VcmH_D(-)=%7.3fV\n",vcmh_c2,vcmh_d2);
lcprintf(" VcmL_C(-)=%7.3fV ; VcmL_D(-)=%7.3fV\n",vcml_c2,vcml_d2);
lcprintf(" VOH_A =%7.3fV ; VOH_B =%7.3fV ; VOH_C =%7.3fV ; VOH_D =%7.3fV\n",uoh1,uoh2,uoh3,uoh4);
lcprintf(" VOL_A =%7.3fV ; VOL_B =%7.3fV ; VOL_C =%7.3fV ; VOL_D =%7.3fV\n",uol1,uol2,uol3,uol4);
}
saveitem("%7.3f %7.3f ",vcmh_a1,vcmh_b1);
saveitem("%7.3f %7.3f ",vcml_a1,vcml_b1);
saveitem("%7.3f %7.3f ",vcmh_a2,vcmh_b2);
saveitem("%7.3f %7.3f ",vcml_a2,vcml_b2);
saveitem("%7.3f %7.3f ",vcmh_c1,vcmh_d1);
saveitem("%7.3f %7.3f ",vcml_c1,vcml_d1);
saveitem("%7.3f %7.3f ",vcmh_c2,vcmh_d2);
saveitem("%7.3f %7.3f ",vcml_c2,vcml_d2);
saveitem("%7.3f %7.3f %7.3f %7.3f ",uoh1,uoh2,uoh3,uoh4);
saveitem("%7.3f %7.3f %7.3f %7.3f ",uol1,uol2,uol3,uol4);
if (judge==0)
{
if ( ( uoh1 < 14.5 ) || ( uoh2 < 14.5 )|| ( uol1 > -14.3 ) || ( uol2 > -14.3 )
||( uoh3 < 14.5 ) || ( uoh4 < 14.5 )|| ( uol3 > -14.3 ) || ( uol4 > -14.3 )
)
{
failflg=2;
return;
}
if ( ( vcmh_a1 < 14.5 ) || ( vcmh_b1 < 14.5 )|| ( vcml_a1 > -14.3 ) || ( vcml_b1 > -14.3 )
||( vcmh_a2 < 14.5 ) || ( vcmh_b2 < 14.5 )|| ( vcml_a2 > -14.3 ) || ( vcml_b2 > -14.3 )
||( vcmh_c1 < 14.5 ) || ( vcmh_d1 < 14.5 )|| ( vcml_c1 > -14.3 ) || ( vcml_d1 > -14.3 )
||( vcmh_c2 < 14.5 ) || ( vcmh_d2 < 14.5 )|| ( vcml_c2 > -14.3 ) || ( vcml_d2 > -14.3 )
)
{
failflg=3;
return;
}
}
failflg=0;
return;
}
void Vos()
{
float vo10,vo20,vo30,vo40;
float vo11,vo21,vo31,vo41;
float vo12,vo22,vo32,vo42;
float vo13,vo23,vo33,vo43;
float ios1,ios2,ios3,ios4,ib1,ib2,ib3,ib4;
int n;
connect_5v_relay(1,2,3,0);
ground_pin(12,0);
force_vcc("on",5);
wait(5);
vo10=measure_pin(1,3,5);
vo20=measure_pin(2,3,5);
vo30=measure_pin(13,3,5);
vo40=measure_pin(14,3,5);
disconnect_5v_relay(1,2,0);
wait(5);
vo11=measure_pin(1,3,5);
vo21=measure_pin(2,3,5);
vo31=measure_pin(13,3,5);
vo41=measure_pin(14,3,5);
ios1=(vo10-vo11)*100;
ios2=(vo20-vo21)*100;
ios3=(vo30-vo31)*100;
ios4=(vo40-vo41)*100;
connect_5v_relay(1,0);
wait(5);
vo12=measure_pin(1,3,5);
vo22=measure_pin(2,3,5);
vo32=measure_pin(13,3,5);
vo42=measure_pin(14,3,5);
disconnect_5v_relay(1,0);
connect_5v_relay(2,0);
wait(5);
vo13=measure_pin(1,3,5);
vo23=measure_pin(2,3,5);
vo33=measure_pin(13,3,5);
vo43=measure_pin(14,3,5);
ib1=(vo13-vo12)*50;
ib2=(vo23-vo22)*50;
ib3=(vo33-vo32)*50;
ib4=(vo43-vo42)*50;
dis_connect(12,0);
force_vcc("off",0);
disconnect_5v_relay(1,2,3,4,0);
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 Vos ********\n");
lcprintf(" Vo10=%7.3fV ; Vo20=%7.3fV ;Vo30=%7.3fV ; Vo40=%7.3fV\n",vo10,vo20,vo30,vo40);
lcprintf(" Vo11=%7.3fV ; Vo21=%7.3fV ;Vo31=%7.3fV ; Vo41=%7.3fV\n",vo11,vo21,vo31,vo41);
}
saveitem("%7.3f %7.3f %7.3f %7.3f ",vo10,vo20,vo30,vo40);
saveitem("%7.3f %7.3f %7.3f %7.3f ",vo11,vo21,vo31,vo41);
if (judge==0)
{
if ( ( fabs(vo10) > 3 ) || ( fabs(vo20) > 3 ) ||( fabs(vo30) > 3 ) || ( fabs(vo40) > 3 ) )
{
failflg=4;
return;
}
}
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 Ios ********\n");
lcprintf(" Io_A=%7.3fnA ; Io_B=%7.3fnA ; Io_C=%7.3fnA ; Io_D=%7.3fnA\n",ios1,ios2,ios3,ios4);
}
saveitem("%7.3f %7.3f %7.3f %7.3f ",ios1,ios2,ios3,ios4);
if (judge==0)
{
if ( ( fabs(ios1) > 40 ) || ( fabs(ios2) > 40 ) ||( fabs(ios3) > 40 ) || ( fabs(ios4) > 40 ) )
{
failflg=5;
return;
}
}
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 Ib ********\n");
lcprintf(" Ib_A=%7.3fnA ; Ib_B=%7.3fnA ; Ib_C=%7.3fnA ; Ib_D=%7.3fnA\n",ib1,ib2,ib3,ib4);
}
saveitem("%7.3f %7.3f %7.3f %7.3f ",ib1,ib2,ib3,ib4);
if (judge==0)
{
if ( ( fabs(ib1) > 150 ) || ( fabs(ib2) > 150 ) ||( fabs(ib3) > 150 ) || ( fabs(ib4) > 150 ) )
{
failflg=6;
return;
}
}
failflg=0;
return;
}
void output()
{
float leak1_5v,leak2_5v;
float leak1_30v,leak2_30v;
float leak1_35v,leak2_35v;
float leak3_5v,leak4_5v;
float leak3_30v,leak4_30v;
float leak3_35v,leak4_35v;
connect_vs1(3,0);
connect_5v_relay(4,0);
ground_pin(4,6,8,10,12,0);/**VEE**/
connect_vs3(5,7,9,11,0);
wait(5);
force_vs1("on",0.1);
force_vcc("on",0.1);
wait(5);
force_vs1("on",5);
force_vs3("on",1);
force_vcc("on",5);
wait(50);
leak1_5v=measure_inter_pin(3,1,3,50)/8.5*1000;
leak2_5v=measure_inter_pin(3,2,3,10)/8.5*1000;
leak3_5v=measure_inter_pin(3,13,3,10)/8.5*1000;
leak4_5v=measure_inter_pin(3,14,3,10)/8.5*1000;
force_vs1("on",30);
wait(50);
leak1_30v=measure_inter_pin(3,1,3,50)/8.5*1000;
leak2_30v=measure_inter_pin(3,2,3,10)/8.5*1000;
leak3_30v=measure_inter_pin(3,13,3,10)/8.5*1000;
leak4_30v=measure_inter_pin(3,14,3,10)/8.5*1000;
dis_connect(12,0);
connect_vs2(12,0);
wait(5);
force_vcc("on",5);
force_vs1("on",32);
force_vs2("on",-5);
force_vs3("on",1);
wait(30);
leak1_35v=measure_inter_pin(3,1,3,30)/8.5*1000;
leak2_35v=measure_inter_pin(3,2,3,10)/8.5*1000;
leak3_35v=measure_inter_pin(3,13,3,10)/8.5*1000;
leak4_35v=measure_inter_pin(3,14,3,10)/8.5*1000;
force_vcc("off",0);
force_vs1("off",0);
force_vs2("off",0);
force_vs3("off",0);
dis_connect(1,2,3,4,5,6,7,8,12,0);
disconnect_5v_relay(4,0);
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 OUTPUT Leakage Current *******\n");
lcprintf(" Leak1_5V =%4.1fnA; Leak2_5V =%4.1fnA; Leak1_5V =%4.1fnA; Leak2_5V =%4.1fnA\n",leak1_5v,leak2_5v,leak3_5v,leak4_5v);
lcprintf(" Leak1_30V=%4.1fnA; Leak2_30V=%4.1fnA; Leak1_30V=%4.1fnA; Leak2_30V=%4.1fnA\n",leak1_30v,leak2_30v,leak3_30v,leak4_30v);
lcprintf(" Leak1_35V=%4.1fnA; Leak2_35V=%4.1fnA; Leak1_35V=%4.1fnA; Leak2_35V=%4.1fnA\n",leak1_35v,leak2_35v,leak3_35v,leak4_35v);
}
saveitem("%4.1f %4.1f %4.1f %4.1f ",leak1_5v,leak2_5v,leak3_5v,leak4_5v);
saveitem("%4.1f %4.1f %4.1f %4.1f ",leak1_30v,leak2_30v,leak3_30v,leak4_30v);
saveitem("%4.1f %4.1f %4.1f %4.1f ",leak1_35v,leak2_35v,leak3_35v,leak4_35v);
if (judge==0)
{
if ( fabs(leak1_5v)>25 ||fabs(leak2_5v)>25
||fabs(leak3_5v)>25 ||fabs(leak4_5v)>25
||fabs(leak1_30v)>130||fabs(leak2_30v)>130
||fabs(leak3_30v)>130||fabs(leak4_30v)>130
||fabs(leak1_35v)>130||fabs(leak2_35v)>130
||fabs(leak3_35v)>130||fabs(leak4_35v)>130)
{
failflg=7;
return;
}
}
failflg=0;
return;
}
void vsat()
{
float vsat1,vsat2,vsat3,vsat4;
int n;
connect_5v_relay(4,0);
ground_pin(5,7,9,11,12,0);/**VEE**/
connect_vs2(1,0);
connect_vs3(4,6,8,10,0);
wait(5);
force_vcc("on",5);
force_vs2_current("on",4.0e-3);
force_vs3("on",1.5);/*1.5V*/
wait(5);
vsat1=measure_pin(1,3,10);
dis_connect(1,0);
connect_vs2(2,0);
force_vs2_current("on",4.0e-3);
wait(5);
vsat2=measure_pin(2,3,10);
dis_connect(2,0);
connect_vs2(13,0);
force_vs2_current("on",4.0e-3);
wait(5);
vsat3=measure_pin(13,3,10);
dis_connect(13,0);
connect_vs2(14,0);
force_vs2_current("on",4.0e-3);
wait(5);
vsat4=measure_pin(14,3,10);
force_vs1("off",0);
force_vs2_current("off",0);
force_vs3("off",0);
force_vcc("off",0);
dis_connect(4,5,6,7,8,9,10,11,12,13,14,0);
disconnect_5v_relay(4,0);
if (displaymode==0)
{
lcprintf(" ********* TEST THE L439 OUTPUT Saturation Voltage*******\n");
lcprintf(" Vsat1=%7.3fV ; Vsat2=%7.3fV ; Vsat3=%7.3fV ; Vsat4=%7.3fV\n",vsat1,vsat2,vsat3,vsat4);
}
saveitem("%7.3f %7.3f %7.3f %7.3f ",vsat1,vsat2,vsat3,vsat4);
if (judge==0)
{
if (fabs(vsat1-0.2)>0.15||fabs(vsat2-0.2)>0.15||fabs(vsat3-0.2)>0.15||fabs(vsat4-0.2)>0.15)
{
failflg=8;
return;
}
}
failflg=0;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -