主题: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总线,不需要别的东西。
|
|
单帖管理 | 引用 | 回复 |