📄 cap_test.c
字号:
#include "config.h"
#include "pin.h"
#include "function.h"
#include "data.h"
#include "fft.h"
#include <math.h>
#include <stdio.h>
#define FOUT 1000
#define PI 3.1415926535897932384626433832795
#define WOG 2*PI*FOUT
float ftemp[1024];
void cap_test(void)
{ char requst[64]; float Vol_Zx,Zx,cap; short i;
static short ref_r=1;
if(turn_flags==FINISH_TURN){
for(i=0;i<1024;i++){
ftemp[i]=timer0_getdata.Zx_data[i];
}
fft(ftemp,1024,0);
Vol_Zx=ftemp[10];
for(i=0;i<1024;i++){
ftemp[i]=timer0_getdata.R0_data[i];
}
fft(ftemp,1024,0);
switch(ref_r){
case 1: Zx=Vol_Zx/(ftemp[10]/100); break; //unit R
case 2: Zx=Vol_Zx/(ftemp[10]); break; //unit K
case 3: Zx=Vol_Zx/(ftemp[10]/10); break; //unit K
case 4: Zx=Vol_Zx/(ftemp[10]/100); break; //unit K
}
cap=1/(Zx*WOG) * 1000000; //unit nf
if(ref_r==1)
sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fuF\r\n",ref_r,Zx,cap);
else if(cap<1.0)
sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fpF\r\n",ref_r,Zx,cap*1000);
else
sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fnF\r\n",ref_r,Zx,cap);
if(ref_r==1 && Zx>500){//>500R 换档
SEL_CAP_1K;
ref_r=2;
}else if(ref_r==2 && Zx>5){
SEL_CAP_10K; //>5K 换10K档
ref_r=3;
}else if(ref_r==3 && Zx>50){
SEL_CAP_100K; //>50K 换100K档
ref_r=4;
}else if(ref_r==4 && Zx<50){
SEL_CAP_10K; //<50K 换10K档
ref_r=3;
}else if(ref_r==3 && Zx<5){
SEL_CAP_1K; //<5K 换1K档
ref_r=2;
}else if(ref_r==2 && Zx<0.5){
SEL_CAP_100R; //<500R 换100R档
ref_r=1;
}
to_host(requst);
turn_flags=WAIT_TURN;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -