📄 dmm_r_v_lr_test.c
字号:
max134_register |=(MAX134_DRIVER_SENSE); //10-0到10-4 & current source
// max134_register |=(MAX134_OHMS_R2);
hostTodmm(3,max134_register);
/*registor 3*/
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
// max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
S_range=1;
DelayNS(20);
}
sum=0;
for(i=0;i<5;i++){
for(cnt=0;cnt<55000;cnt++){
if(IO0PIN&DMM_DATA_READY){
tdat=(unsigned short)dmmTohost(4)*10000 + (unsigned short)dmmTohost(3)*1000 + \
(unsigned short) dmmTohost(2)*100 + (unsigned short)dmmTohost(1)*10 + \
(unsigned short)dmmTohost(0);
if(tdat>50000) tdat-=100000;
dat=dmmTohost(5);
sum+=(tdat/5);
for(dat=0;dat<100;dat++){
if((IO0PIN&DMM_DATA_READY) == 0)
break;
DelayNS(1);
}
if(dat==100){
UART0_SendStr("err5!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err6!\r\n");
}
tdat=sum;
/*range of voltage*/
if(tdat<0) tdat*=-1;
chg=0;
org_S_range=S_range;
if((tdat < 3000) && (S_range==1)) {
S_range=2; chg=1;
}else if((tdat <3000) && (S_range==2)){
S_range=3; chg=1;
}else if((tdat <3000) && (S_range==3)){
S_range=4; chg=1;
}else if((tdat > 40000) && (S_range==4)){
S_range=3; chg=1;
}else if((tdat > 40000) && (S_range==3)){
S_range=2; chg=1;
}else if((tdat > 40000) && (S_range==2)){
S_range=1; chg=1;
}
tdat=sum;//store test result
/*read zero*/
{
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
DelayNS(15);
sum=0;
for(i=0;i<5;i++){
for(cnt=0;cnt<55000;cnt++){
if(IO0PIN&DMM_DATA_READY){
zero=(unsigned short)dmmTohost(4)*10000 + (unsigned short)dmmTohost(3)*1000 + \
(unsigned short) dmmTohost(2)*100 + (unsigned short)dmmTohost(1)*10 + \
(unsigned short)dmmTohost(0);
if(zero>50000) zero-=100000;
dat=dmmTohost(5);
sum+=(zero/5);
for(dat=0;dat<100;dat++){
if((IO0PIN&DMM_DATA_READY) == 0)
break;
DelayNS(1);
}
if(dat==100){
UART0_SendStr("err7!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err8!\r\n");
}
}
tdat-=sum; //result = (Vx+a)/Vref - (a/Vref)
if(ac_ndc==AC_TEST)
tdat=tdat*2;
Volt=tdat;
/*registor 3*/
max134_register=0;
if(ac_ndc==DC_TEST){
max134_register |=(MAX134_DC);
}else{
max134_register |=(MAX134_EXT_AC);
}
max134_register |=(MAX134_DRIVER_SENSE); //10-0到10-4 & current source
// max134_register |=(MAX134_OHMS_R2);
hostTodmm(3,max134_register);
max134_register=0;
switch(S_range){
case 1: max134_register |=(MAX134_10_4);break;
case 2: max134_register |=(MAX134_10_3);break;
case 3: max134_register |=(MAX134_10_2);break;
case 4: max134_register |=(MAX134_10_1);break;
}
hostTodmm(2,max134_register);
switch(org_S_range){
case 1: tdat=(Volt*2.0001)/10;break; //1M && 10M
case 2: tdat=(Volt*1.001)/100;break; //100K && 10M
case 3: tdat=(Volt*1.01)/1000;break; //10K && 10M
case 4: tdat=(Volt*1.1)/10000;break; //1K && 10M
}
/*restore to read (Vx+a)/Rref*/
{
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
// max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
}
if(ac_ndc==AC_TEST)
sprintf(requst,"S %d t_v %0.2f ac_voltage test result: %0.2fV\r\n",S_range,Volt,tdat);
else
sprintf(requst,"S %d t_v %0.2f dc_voltage test result: %0.2fV\r\n",S_range,Volt,tdat);
to_host(requst);
if(chg)
DelayNS(20);
}
void L_res_test(void)
{
unsigned short chg,i,dat,cnt; int org_S_range,max134_register; float Tdat,tdat,sum,zero,Irx,Iro;
char requst[64]; static S_range;
tdat=0;
if(tst_run.l_res_run==STOP){
tst_run.l_res_run=RUNNING;
tst_run.s_res_run=STOP;
tst_run.vol_run=STOP;
/*registor 0*/
hostTodmm(0,0); //register 0
/*registor 1*/
max134_register=0;
// max134_register |=(MAX134_10_0);
max134_register |=(MAX134_FILTER_SHORT);
// max134_register |=(MAX134_DIVIDE_5);//结果/5;
max134_register |=(MAX134_50HZ);//50Hz
hostTodmm(1,max134_register);
/*registor 2*/
max134_register=0;
max134_register |=(MAX134_10_2); //select 4V档
hostTodmm(2,max134_register);
/*registor 3*/
max134_register=0;
max134_register |=(MAX134_DC);
max134_register |=(MAX134_DRIVER_SENSE); //10-0到10-4 & current source
// max134_register |=(MAX134_OHMS_R2);
hostTodmm(3,max134_register);
/*registor 3*/
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
// max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
L_RES_RANGE10K;
S_range=1;
DelayNS(20);
}
sum=0;
for(i=0;i<5;i++){
for(cnt=0;cnt<55000;cnt++){
if(IO0PIN&DMM_DATA_READY){
tdat=(unsigned short)dmmTohost(4)*10000 + (unsigned short)dmmTohost(3)*1000 + \
(unsigned short) dmmTohost(2)*100 + (unsigned short)dmmTohost(1)*10 + \
(unsigned short)dmmTohost(0);
if(tdat>50000) tdat-=100000;
dat=dmmTohost(5);
sum+=(tdat/5);
for(dat=0;dat<100;dat++){
if((IO0PIN&DMM_DATA_READY) == 0)
break;
DelayNS(1);
}
if(dat==100){
UART0_SendStr("err9!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err10!\r\n");
}
Tdat=tdat=sum;
/*range of voltage*/
/*read zero*/
{
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
DelayNS(15);
sum=0;
for(i=0;i<5;i++){
for(cnt=0;cnt<55000;cnt++){
if(IO0PIN&DMM_DATA_READY){
zero=(unsigned short)dmmTohost(4)*10000 + (unsigned short)dmmTohost(3)*1000 + \
(unsigned short) dmmTohost(2)*100 + (unsigned short)dmmTohost(1)*10 + \
(unsigned short)dmmTohost(0);
if(zero>50000) zero-=100000;
dat=dmmTohost(5);
sum+=(zero/5);
for(dat=0;dat<100;dat++){
if((IO0PIN&DMM_DATA_READY) == 0)
break;
DelayNS(1);
}
if(dat==100){
UART0_SendStr("err11!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err12!\r\n");
}
}
zero=sum;
tdat-=sum; //result = (Vx+a)/Vref - (a/Vref)
//
if(Tdat<0) Tdat*=-1;
chg=0;
org_S_range=S_range;
if((Tdat < 3000) && (S_range==1)) {
S_range=2; chg=1;
L_RES_RANGE100K;
}else if((Tdat <3000) && (S_range==2)){
L_RES_RANGE1000K;
S_range=3; chg=1;
}else if((Tdat <3000) && (S_range==3)){
L_RES_RANGE10000K;
S_range=4; chg=1;
}else if((Tdat > 35000) && (S_range==4)){
S_range=3; chg=1;
L_RES_RANGE1000K;
}else if((Tdat > 35000) && (S_range==3)){
S_range=2; chg=1;
L_RES_RANGE100K;
}else if((Tdat > 35000) && (S_range==2)){
S_range=1; chg=1;
L_RES_RANGE10K;
}
/* Rx=((200-Vr)/Vr)xR0 */
tdat=(tdat*(1.1))/10000; /*I(Rx)=I(Ro) + I(R10M)=Vt/Ro + I(R10M) Rx=200V/((I(Ro)+ I(R10M))=200V/(I(Ro)+1/10*I(Ro)*/
if(tdat<0)
tdat=0;
switch(org_S_range){/*0.002-2.2M shuld be chaged in V3*/
case 1: Iro=((tdat / 0.01)); break; //0.01M
case 2: Iro=((tdat / 0.1)); break; //0.1M
case 3: Iro=((tdat / 1)); break; //1M
case 4: Iro=((tdat / 10)); break; //10M
}
Irx=Iro*1*(1+0.1); /*current of 1M//10M*/
if(Irx<0.00001)
Irx=0.00001;
sum=tdat;
tdat=(200-Iro*1)/Irx;
if(tdat>2000) tdat=-1;
/*restore to read (Vx+a)/Rref*/
{
max134_register=0;
// max134_register |=(MAX134_CURRENT);
// max134_register |=(MAX134_X2);
// max134_register |=(MAX134_READ_ZERO);
// max134_register |=(MAX134_FILTER_ON);
hostTodmm(4,max134_register);
}
sprintf(requst,"S %d vol:%0.2f l_resistor test result: %0.2fM\r\n",S_range,sum,tdat);
to_host(requst);
if(chg)
DelayNS(20);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -