导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ad676的问题求助,有图和程序。

* 86142: ad676的问题求助,有图和程序。

   worminnight 
worminnight发表的帖子 

 ad676的问题求助,有图和程序。
用过ad676的大大请进,有几个很棘手的问题。

如图:
51控制AD676,7404晶振1.8M

1把7474接成2分频(datasheet的参考图)。
multisim,仿真,波形符合预期。
按图接电路,共连了两个。不加AD676,在1端分别施加0V和5V,工作正常。
加AD676后,busy为高,但clk无输出。怀疑是驱动问题,经过2个非门,现象依旧。

最后没办法,用51的一条管脚给clk,但是很奇怪。不知道什么原因。


2一直没法正常采样,最后在sample输出加非门,让上电复位后sample为低(51默认高输出),同时在smple,busy并接104电容,能正常工作。
我在AD676板和控制板之间使用40pin排线连接,是不是线太长了。


3关于误差。
使用51给clk脉冲,测试系统误差。
输入前接低通,AD426 16路模拟开关。

ad676经过自校准,但误差始终为50mv左右。

基准源调整至10.000V,观察使采样值溢出的输入电压,大约为10.050V,精度无法保证。

676的datasheet

//*******************************//
//********AD676初始化程序********
///*******************************//
//增加1级反相
void AD676_SelfCal(void)
{

AD676_CAL=1;


while(AD676_BUSY==0)
    {
    CLK=!CLK;
    AD676_CAL=0;
    }

AD676_CAL=0;

}

//*******************************//
//********AD676程序**************//
///******************************//
int AD676(unsigned char channel)

{
unsigned int ad676data;
unsigned char ad676datah,ad676datal;
//AD426 channel Select
switch(channel)
    {
    //Ul
    case 1:
        {ADG426WR_Ul=0;}
        break;
    default:
        break;
    }
//AD676 Sample
if((channel>  =1) && (channel  <=16))
    {
    //AD676 sample反向输入 7404
    //AD676 busy  反向输入 7404
    //AD676 get
    AD676_SAMPLE=0;
    AD676_SAMPLE=0;
    
    AD676_SAMPLE=1;
    while(AD676_BUSY==0)
        {
        CLK=!CLK;
    //    AD676_SAMPLE=1;
        }
    AD676_SAMPLE=1;

    //AD676_BUSY==0,data ready
    ad676datah=AD676H8_ADD;
    ad676datal=AD676L8_ADD;
    
ad676jk_h=ad676datah;  
ad676jk_l=ad676datal; 
    
    ad676data= (int)(ad676datah  <  <8) + (int)(ad676datal) ;
    }    
//通道不正确可能返回不正确的值
return(ad676data);
}

//*******************************//
//********AD676绦?*******
///*******************************//
int AD676_contin(void)

{    
unsigned int ad676data;
unsigned char ad676datah,ad676datal;
    //AD676 sample反向输入 7404
    //AD676 busy  反向输入 7404
    //AD676 get
AD676_SAMPLE=0;
AD676_SAMPLE=0;
AD676_SAMPLE=1;
while(AD676_BUSY=0)
    {
    CLK=!CLK;
//    AD676_SAMPLE=1;
    }
AD676_SAMPLE=1;
//AD676_SAMPLE=0;
//AD676_BUSY==0,data ready

//ad676datah=AD676H8_ADD;
//ad676datal=AD676L8_ADD;
//ad676data= (unsigned int)(ad676datah  <  <8) + (unsigned int)(ad676datal) ;
return(ad676data);
}


 


按此在新窗口浏览图片


发表时间:2005年11月25日5:14:51

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:uuuuupppppuuuuuppppp
[下一篇帖子]:基于89C2051单片机技术的心率计请各大侠帮看看行得通吗? /P P 基于89C2051单片机