已回答假定已回答

ad7798/ad7799停止转换的问题

billypeng 在 2015-6-4 詢問的問題
最後回覆由hpkamen於2015-7-8提供

    我现在使用ad7798/ad7799做精密AD转换,信号经放大后送到ad7798/ad7799,一般情况下,如果信号强度缓慢变化,工作一直正常;但如果信号强度剧烈变化时,ad7798/ad7799就停止转换,即使信号很弱了,也不能恢复。我在软件中重置ad7798/ad7799都无法解决问题,只能重启设备。

    我想知道,这种情况该如何处理?还是我重置方法错了?文档中说如果出错,需要送四个0xff重置,但没有说如何检查出错。

 

ad7798/ad7799设置为连续转换,系统通过时钟中断检查转换结果。时钟中断5ms调用一次。check_ad7798在时钟中断中调用。


void check_ad7798(void)

 

{

    static uchar count = 0;

    if(PINB & BIT(PB3)){          //每5ms调用一次,10次则是50ms。 按123HZ的转换速率,每次应该是10ms以下。

      count++;                  //所以50ms还没有转换完的话,肯定是出问题了,需要重新初始化。

    if(count<10)

          return;

    init_ad7798();                        //重新初始化,送四个0xff

    init_ad7798_channel(CONF_CH1, 0);

    count = 0;

    return;  

    }

  //在这里读取数据

}

結果