主题:em9170+ETA197数据采集

  共有37081人关注过本帖    
客人
1楼


em9170+ETA197数据采集  发帖心情 Post By:2013-7-16 11:05:00   [只看该作者]

您好:
     关于ETA197的AD转换程序,我想问一下,经过ISA_WRITE之后,你们是通过delay延时函数等待转换结束,再用ISA_READ读取结果, 这样子的话会不会不够精确或者说不确定是否真的转换结束,为什么不用MAX197的INT中断来进行判断是否转换结束呢?以下是你们的示例代码:

int ClassETA197::GetADData(int ChIdx, int RangeIdx)
{
    unsigned char abyte;
    unsigned int  ui1, ui2;
    if( ChIdx>7 )           return -1;
    if( RangeIdx>3 )       return -1;

    abyte = NORMAL|ChIdx|RangeMode[RangeIdx];

    //ISA_WriteUchar( nSeg, 0, abyte );
   ISA_Write( hETA197 , 1 , 0 , abyte );

    // wait to make sure AD_EOC goto low
    DelayInuSec(300); //延时

    //ISA_ReadUchar( nSeg, 0, &abyte);
    //ISA_Read( hETA197 , ISA_CS1 , 0 , &abyte );

    //ISA_ReadUchar( nSeg, 0, &abyte);
    ISA_Read( hETA197 , 1 , 0 , &abyte );
    ui1 = (unsigned int)abyte;

    //ISA_ReadUchar( nSeg, 1, &abyte);
    ISA_Read( hETA197 , 1 , 1 , &abyte );
    ui2 = (unsigned int)abyte;
   
    ui1 = (ui2<<8|ui1)&0x0fff;
    return ui1;
}

  单帖管理 | 引用 | 回复 回到顶部
x10
2楼


  发帖心情 Post By:2013-7-16 12:09:00   [只看该作者]

MAX197的转换速度为100Ksps,所以稍微延时一点(10us)就可以了。在CE中,中断需要在驱动程序中实现,这样会让程序很复杂。我们的ETA108就是基于DMA/INT驱动的,主要是实现波形采集。对一般的低速数据采集,上述方法可满足需要。

  单帖管理 | 引用 | 回复 回到顶部
x10
3楼


  发帖心情 Post By:2013-7-16 12:11:00   [只看该作者]

另外,上述代码让接口电路最简化:直接连接到精简ISA总线,不需要别的东西。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

em9170+ETA197数据采集

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: