📄 dmm_r_v_lr_test.c
字号:
//////////////////////////////////////////
#include "config.h"
#include "pin.h"
#include "data.h"
#include "function.h"
#include "max134cpl.h"
#include <math.h>
#include <stdio.h>
float vol_det(void)
{
unsigned short k,i,dat,cnt; int max134_register; float tdat,sum;
tdat=0;
{
/*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_1); //select 40V档
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);
DelayNS(20);
}
for(k=0;k<2;k++){
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");
}
if(sum > 25000 || sum < -25000)
return sum;
if(k==1){
/*registor 3*/
max134_register=0;
max134_register |=(MAX134_EXT_AC);
max134_register |=(MAX134_DRIVER_SENSE); //10-0到10-4 & current source
hostTodmm(3,max134_register);
DelayNS(20);
}
}
return sum;
}
void S_res_test(void)
{
unsigned short chg,i,dat,cnt; int org_S_range,max134_register; float tdat,sum,zero;
char requst[64]; static S_range;
tdat=0;
if(tst_run.s_res_run == STOP){
N200V_OFF;DelayNS(5); MAIN_POWER_ON; VOL_TEST;
tdat=vol_det();
if(tdat>25000 || tdat < -25000){
sprintf(requst,"err! s_resistor test result: %0.2fmV\r\n",tdat);
to_host(requst);
return;
}
N200V_OFF;DelayNS(5); MAIN_POWER_ON; S_RES_TEST;
tst_run.s_res_run=RUNNING;
tst_run.l_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_1); //select 400R档
hostTodmm(2,max134_register);
/*registor 3*/
max134_register=0;
max134_register |=(MAX134_DC);
// 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);
/*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=4;
DelayNS(20);
}
sum=0;
for(i=0;i<10;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/10);
for(dat=0;dat<100;dat++){
if((IO0PIN&DMM_DATA_READY) == 0)
break;
DelayNS(1);
}
if(dat==100){
UART0_SendStr("err1!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err2!\r\n");
}
tdat=sum;//save (Rx+a)/Ro
/*range of voltage*/
chg=0;
org_S_range=S_range;
if(tdat<0) tdat*=-1;
if((tdat > 40000) && (S_range==1)) {
S_range=2; chg=1;
}else if((tdat >40000) && (S_range==2)){
S_range=3; chg=1;
}else if((tdat >40000) && (S_range==3)){
S_range=4; chg=1;
}else if((tdat < 3000) && (S_range==4)){
S_range=3; chg=1;
}else if((tdat < 3000) && (S_range==3)){
S_range=2; chg=1;
}else if((tdat < 1000) && (S_range==2)){
S_range=1; chg=1;
}
tdat=sum;//还原符号
/*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("err3!\r\n");
}
break;
}
}
if(cnt==55000)
UART0_SendStr("err4!\r\n");
}
}
tdat-=sum; //result = (Rx+a)/Ro - (a/Ro)
tdat/=50000;
max134_register=0;
switch(S_range){
case 1: max134_register |=(MAX134_10_4); break; //unit R
case 2: max134_register |=(MAX134_10_3); break; //unit K
case 3: max134_register |=(MAX134_10_2); break; //unit K
case 4: max134_register |=(MAX134_10_1); break; //unit K
}
hostTodmm(2,max134_register);
switch(org_S_range){
case 1: tdat*=500; break; //unit R
case 2: tdat*=10; break; //unit K
case 3: tdat*=100; break; //unit K
case 4: tdat*=1000; break; //unit K
}
/*restore to read (Rx+a)/Ro*/
{
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(S_range==1){
// if(sum > -140 && sum<140)
// tdat+=3.19;
tdat-=0.75; //tdat+=2.2;
sprintf(requst,"S %d %0.2f s_resistor test result: %0.1fR\r\n",S_range,sum,tdat);
}else if(S_range==4){
if(tdat>999) tdat = -1;
sprintf(requst,"S %d %0.2f s_resistor test result: %0.2fK\r\n",S_range,sum,tdat);
}else if(S_range==2){
sprintf(requst,"S %d %0.2f s_resistor test result: %0.3fK\r\n",S_range,sum,tdat);
}else
sprintf(requst,"S %d %0.2f s_resistor test result: %0.2fK\r\n",S_range,sum,tdat);
to_host(requst);
if(chg)
DelayNS(20);
}
void vol_test(int ac_ndc)
{
unsigned short chg,i,dat,cnt; int max134_register, org_S_range; float tdat,sum,zero,Volt;
char requst[64]; static S_range;
tdat=0;
if(tst_run.vol_run==STOP){
tst_run.vol_run=RUNNING;
tst_run.s_res_run=STOP;
tst_run.l_res_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_4); //select 4000V档
hostTodmm(2,max134_register);
/*registor 3*/
max134_register=0;
if(ac_ndc==DC_TEST){
max134_register |=(MAX134_DC);
}else{
max134_register |=(MAX134_EXT_AC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -