A/D转换好像总是没有完成

ko1982   2009-5-7 22:37 楼主
16F73进行A/D转换,设置了ACDON1,ACDON0等,有一局while(ADG0);就是等待A/D转换完毕置位ADG0,但是好像总是没有完成,也就是总是执行不到while(ADG0);的下一句。不知道是什么原因?谢谢!

回复评论 (15)

对应管脚的TRIS要设置成输入(1),而且还要设置多路开关。 另外, 可能别的配置还有问题。  
点赞  2009-5-7 23:00
友情up
点赞  2009-5-7 23:44
按理说,就是没先通道,它也是能完成转换的

片内ADC一般都有一个启动条件,你看看你启动转换了吗?

呵呵
点赞  2009-5-8 08:46
哇赛,LBING7又出山了,顶一下。
点赞  2009-5-8 09:13
设置如下:
1、ADCON1=0x00;  //VREF=VDD,RA0-RA3全为模拟输入;
2、ADCON0=10 000 001;//时钟选择FOSC/32(我使用的是20M晶振),选择通道0:RA0/AN0,AD使能
3、ADG0=1;//启动A/D
4、根据ADG0是否为0判断转换是否完成。

有一个地方不明白:
在2中设置ADCON0的BIT2位是A/D转换状态位,在配置ADCON0时该配置为1还是0?
因为在第3步启动A/D转换时要设置ADG0=1,实际上就是设置ADCON0的BIT2位。那么第2步是不是就不用设置ADCON0的BIT2位=1了?
点赞  2009-5-10 08:48
另外,引脚已经配置为输入了(置1)
点赞  2009-5-10 08:49
你到安装目录下找个例子看看吧
点赞  2009-5-10 09:41
GOOGLE了一下

要不LZ你贴下下代码

另外,你是不是在仿真的状态下进行?要不你把仿真断掉,全速运行看看,在转换完成后

点些LED或是置某个管脚状态,看看是不是真的没有启动

记得有些片子的仿真状态下是奇慢的
点赞  2009-5-10 15:19
跟时钟选择有关系吗?我选择的是FOSC/32
点赞  2009-5-11 21:35
看看它的ADC的结构,能不能用这个时钟源

呵呵
点赞  2009-5-12 13:13
16F73进行A/D转换,设置了ACDON1,ACDON0等,有一局while(ADG0);就是等待A/D转换完毕置位ADG0,但是好像总是没有完成,也就是总是执行不到while(ADG0);的下一句。不知道是什么原因?谢谢!
设置如下:
1、ADCON1=0x00;  //VREF=VDD,RA0-RA3全为模拟输入;
2、ADCON0=10 000 001;//时钟选择FOSC/32(我使用的是20M晶振),选择通道0:RA0/AN0,AD使能
3、ADG0=1;//启动A/D
4、根据ADG0是否为0判断转换是否完成。


到底转化完毕是置位还是清零ADGO啊???
点赞  2009-5-12 21:08
转换完毕是清零ADGO
点赞  2009-5-12 22:45
这种结构的AD应该是置1,开始转换

ADC转换完后,自动硬件清0

不过不知道,能不能产生中断,MCU去响应中断去了
点赞  2009-5-13 08:59
如何判断产生中断了?
我看有的程序是判断ADG0是否为0,有的是判断ADIF,不知道有何区别?在哪儿设置?
点赞  2009-5-13 14:53
如何使用中断来产生A/D?
点赞  2009-5-13 21:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复