搜索
bottom↓
回复: 4

AVR 关于AD转换的问题

[复制链接]

出0入0汤圆

发表于 2009-7-17 17:31:09 | 显示全部楼层 |阅读模式
在avr的用户手册中 有这样一句话“在ADC 转换结束,且数据寄存器被更新后, ADIF 置位。如果ADIE 及SREG 中的全局
中断使能位I 也置位,ADC 转换结束中断服务程序即得以执行,同时ADIF 硬件清零。此
外,还可以通过向此标志写1 来清ADIF”   中的“通过向此标志写1 来清ADIF”是什么意思,如果不清零会发生什么情况?

恳请各位高手指点指点。。。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-7-19 13:20:49 | 显示全部楼层
ADIF表示当前一次ADC转换完成了,不关你是否需要这个ADC的值,一般总要把它清掉,为下一次做准备。

如果你不清零,而且ADC是单次转换的。那么当你启动ADC后,ADIF仍然为1,你如果认为是转换完成,读ADC值的话,可能就是错误的了。

出0入0汤圆

 楼主| 发表于 2009-7-19 14:54:51 | 显示全部楼层
谢谢马老师 辛苦了

出0入0汤圆

发表于 2012-4-21 20:07:17 | 显示全部楼层
machao 发表于 2009-7-19 13:20
ADIF表示当前一次ADC转换完成了,不关你是否需要这个ADC的值,一般总要把它清掉,为下一次做准备。

如果你 ...

如果是连续转换模式的话,即:ADCSRA|=(1<<ADFR);还需要考虑ADIF位吗?连续转换模式下,怎么才能判断转换结束呢?
   我的程序是这样写的:
           ADCSRA=0x00;
           ADMUX=0x40;///ADC0,
           ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;
             delay_nms(10); //给出转换的时间,1ms足够            
              adc_l0=ADCL;//先读取低八位
              adc_h0=ADCH;//再读取高八位
     红色注释行是否可以换成判断ADIF位是否置位?
    谢谢!!!!

出0入0汤圆

发表于 2012-4-21 20:11:08 | 显示全部楼层
machao 发表于 2009-7-19 13:20
ADIF表示当前一次ADC转换完成了,不关你是否需要这个ADC的值,一般总要把它清掉,为下一次做准备。

如果你 ...

是否只有在用中断服务程序处理准换结果的时候才需要判断ADIF是否置位?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 23:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表