⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal.c

📁 包含了AD7714的中文使用资料和源码资料
💻 C
字号:
#define FlashTab 0x1000
typedef struct
{
    unsigned int neg;
    unsigned int zero;
    unsigned int pos;
}StructCalTab;
_rom StructCalTab Cal_Flash_Tab[] _at(0x7ffa) ={
/*    {0x1801,0x8000,0xe7ff},//0-5v
    {0x1801,0x8000,0xe7ff},//+/-100mv
    {0x1801,0x8000,0xe7ff},//+/-60mv
    {0x1801,0x8000,0xe7ff},//+/-25mv  */	

{0x1801,0x8000,0x0e666},//0-4v 01-04
{0x17f5,0x7ff8,0xe7ff},//+/-100mv
{0x17f0,0x7ff3,0xe7fd},//+/-60mv
{0x17dc,0x7fd5,0xe7e2},//+/-25mv    //There is something wrong.


};
StructCalTab Cal_Ram_Tab[]={
    {0x199a,0x8000,0xe7ff},//0.8-4v
    {0x2e16,0x8000,0x0d1ea},//+/-100mv
    {0x1db4,0x8000,0x0e24c},//+/-60mv
    {0x2e16,0x8000,0x0d1ea},//+/-25mv
};
_rom StructCalTab Cal_Code_Tab[]={
    {0x199a,0x8000,0x0e666},//0-4v
    {0x2e16,0x8000,0x0d1ea},//+/-100mv
    {0x1db4,0x8000,0x0e24c},//+/-60mv
    {0x2e16,0x8000,0x0d1ea},//+/-25mv
};
typedef struct
{
    float neg_a;
    float neg_b;
    float pos_a;
    float pos_b;
}StructFact;
_rom StructFact CodeFact[]={
    {26213.6/26623.0,32768*(1-26213.6/26623.0),26623.0/26213.6,32768*(1-26623.0/26213.6)},
    {20970.88/26623.0,32768*(1-20970.88/26623.0),26623.0/20970.88,32768*(1-26623.0/20970.88)},
    {25165.056/26623.0,32768*(1-25165.056/26623.0),26623.0/25165.056,32768*(1-26623.0/25165.056)},
    {20970.88/26623.0,32768*(1-20970.88/26623.0),26623.0/20970.88,32768*(1-26623.0/20970.88)},
/*    {1.0,0,1.0,0},
    {1.0,0,1.0,0},
    {1.0,0,1.0,0},
    {1.0,0,1.0,0}, */
};    											       
StructFact Cal_Fact[4];
unsigned int Cal_Ram_Zero[4];
extern unsigned char chn_mv[8];
typedef struct {
    unsigned char tcover :1;
    unsigned char ad7714 :1;
    unsigned char tmp100 :1;
    unsigned char ram    :1;    
    unsigned char rom    :1;    
    unsigned char fpga   :1;    
}strErrFlg;
extern strErrFlg ErrFlg;

void Cal_Make_Fact(void)//form Cal_Fact[4] & Cal_Ram_Zero[4]
{
    unsigned char i,sign;
    unsigned int y0,y1,x0,x1;
    float tempfloat;
    StructCalTab *pRam;
    _rom StructCalTab *pCode;
    _rom StructCalTab *pFlash;
    StructFact *pFact;
    _rom StructFact *pCodeFact;
    //float *pCodeFact;
    for(i=0;i<4;i++)
    {
        pRam = Cal_Ram_Tab+i;
        pFlash = Cal_Flash_Tab+i;
        pCodeFact = CodeFact+i;
//        pCode = (StructCalTab *)&Cal_Code_Tab[i];
        pCode = Cal_Code_Tab+i;
        tempfloat = (float)(pFlash->neg);
        tempfloat = tempfloat*(pCodeFact->neg_a)+pCodeFact->neg_b;
        if(tempfloat <0) tempfloat=0;
        tempfloat = tempfloat+0.5;
        x0 = (unsigned int)tempfloat;
        pRam->neg = x0;
        
        tempfloat = (float)(pFlash->zero);
        tempfloat = tempfloat*(pCodeFact->neg_a)+pCodeFact->neg_b;
        if(tempfloat <0) tempfloat=0;
        tempfloat = tempfloat+0.5;
        x0 = (unsigned int)tempfloat;
        if(x0 < pCode->neg) x0 = pCode->neg;
        pRam->zero = x0;
           
        tempfloat = (float)(pFlash->pos);
        tempfloat = tempfloat*(pCodeFact->neg_a)+pCodeFact->neg_b;
        if(tempfloat <0) tempfloat=0;
        tempfloat = tempfloat+0.5;
        x0 = (unsigned int)tempfloat;
        if(x0 < pCode->zero) x0 = pCode->zero;
        pRam->pos = x0;
    }
        
    for(i=0;i<4;i++)
    {
        pRam= Cal_Ram_Tab+i;
        pCode =Cal_Code_Tab+i;
        pFact = Cal_Fact+i;
        y0 = pCode->neg;
        y1 = pCode->zero;
        x0 = pRam->neg;
        x1 = pRam->zero;
        if(x0>=x1)
        {
            pFact->neg_a = 1.0;
            pFact->neg_b = 0.0;
        }
        else
        {
            pFact->neg_a = (float)(y1 - y0)/(float)(x1 - x0);
            pFact->neg_b = (float)y1 - (pFact->neg_a * x1);
        }
        
        y0 = pCode->zero;
        y1 = pCode->pos;
        x0 = pRam->zero;
        x1 = pRam->pos;
        if(x0>=x1)
        {
            pFact->pos_a = 1.0;
            pFact->pos_b = 0.0;
        }
        else
        {
            pFact->pos_a = (float)(y1 - y0)/(float)(x1 - x0);
            pFact->pos_b = (float)y1 - (pFact->pos_a * x1);
        }
        
        Cal_Ram_Zero[i] = pRam->zero;
    }
}
          
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -