一个关于单片机AD转换的问题

采用的是ST的单片机,H/L_PWR_DET就是AD口。这个口每次只采样一次问题1:AD转换的时候经常采到一个很大的值,值是固定的255,采到的时间不固定,比较奇怪问题2... 采用的是ST的单片机,H/L_PWR_DET就是AD口。这个口每次只采样一次
问题1:AD转换的时候经常采到一个很大的值,值是固定的255,采到的时间不固定,比较奇怪
问题2:AD转换的时候,连续采样,第一个值比较大,不管如何延时,都是如此。只有这一个端口如此
目前1的处理办法:如果采到的值是255,把它丢掉。
目前2的处理办法:采3个值,1,2丢掉,只要第3个。

转换程序如下:
uchar ADC_DirectGetAdcValue(uchar cCh){ uchar re,i; ADC_TDRL = 0xFB; ADC_CSR = (cCh)&0x0f; ADC_CR1_ADON = 1; for(i = 0;i <10;i++) { CLEAR_WATCHDOG; } ADC_CR1_ADON = 1; while(!(ADC_CSR&0x80)); re = ADC_DRH; i = ADC_DRL; return re;}
for循环里面的值越大,255出现我机率越大。奇怪!!!!
问题已经搞定。
1,与中断无关
2,电压不波动
3,其实是 255 的值出现,是正常的,去它去掉就好
4,其实端口采样到的第一个值是不能要的
展开
 我来答
我是一值鱼
2014-08-10 · TA获得超过632个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:276万
展开全部

建议你把除了ADC以外的所有中断都关掉,再试试,

  1. 已经能读出值了,说明ADC应该没问题

  2. 数据不稳定,有可能是有其他操作中断了ADC的采样过程,所以可以关闭所有中断,只保留ADC试一下

  3. 也可能是参考电压不对,或者压根外部输入电压就是波动的,可以拿台示波器,测测你的VCCA,Vref和输入电压的波动情况

问题搞定了你倒是确认采纳啊?就我一个人回答还不赶紧采纳

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式