PIC16F727的AD转换试验,碰到一个小问题:

[复制链接]
3285|6
 楼主| hsw_21 发表于 2009-11-25 14:14 | 显示全部楼层 |阅读模式
本帖最后由 hsw_21 于 2009-11-25 14:30 编辑

用的是内部Vref = Vdd = 5v, 出现一个奇怪的现象:
AD 口接地的时候,转换值总是为 61, 而不是0或者比 61更小的值。
这是什么原因呢?

是不是AD口的 输入范围给限制了?
yewuyi 发表于 2009-11-25 16:22 | 显示全部楼层
你有点搞笑了把,自己检查一下代码,转换正确是不可能的事情。
 楼主| hsw_21 发表于 2009-11-25 17:09 | 显示全部楼层

晕,让叶公见笑了。。。

本帖最后由 hsw_21 于 2009-11-25 17:12 编辑

的确是这样啊,我读取AD值用的是中断方式, 用icd2仿真的结果是:
在输入0v的情况下, ADRES = 61.

换了其他AD通道0v的情况下也是61.

嗯,我再仔细检查一下代码。。。
兰天白云 发表于 2009-11-25 18:01 | 显示全部楼层
代码问题,输入1V试试
 楼主| hsw_21 发表于 2009-11-26 10:54 | 显示全部楼层
查明原因,的确是软件问题。
ADON = 1
GODONE = 1;
改成:

ADON = 1;
Delay_us(20);   // delay 20us
GODONE  = 1;

就可以了,谢谢叶公,蓝天白云。
yewuyi 发表于 2009-11-26 13:37 | 显示全部楼层
在initsys的时候,就把ADON打开,AD模块上电后需要一定的时间才能稳定工作的。

当然,如果是那些对功耗要求特别低的系统,需要在SLEEP的状态下关闭ADON,天亮起床后再打开ADON,这个时候可以把第一次的转换值放弃,在下一个周期重新AD转换一次,从第二个值开始使用。
 楼主| hsw_21 发表于 2009-11-26 16:38 | 显示全部楼层
嗯,OK,叶公,谢谢!  :)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

417

主题

2675

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部