搜索
bottom↓
回复: 11

发现了一个关于M128 A/D令人百思不得其解的问题

[复制链接]

出0入0汤圆

发表于 2008-4-12 02:15:53 | 显示全部楼层 |阅读模式
我利用AVRSTUDIO在M128上进行JATG调试时,单步运行,观察A/D几个I/O端口寄存器,为什么ADSCRA中的值与我设定的不同呢?
当我令ADSCRA=0xE5时,寄存器里显示的是0xF5,当我令ADSCRA=0xC5时,它显示的是0x95,这是为什么呢 ?
那如果我想要启动单次转换,不用中断的话,应该如何设置ADSCRA的值??
另外,在上述情况下应该检测ADSC位还是ADIF位等待其转换完毕~!~!
希望马老师能为我解答一下~!~!

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

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

出0入0汤圆

发表于 2008-4-12 12:16:33 | 显示全部楼层
认真看一下数据手册这种情况是正常的.当然是ADIF位

出0入0汤圆

 楼主| 发表于 2008-4-12 20:08:58 | 显示全部楼层
如果我是判断ADIF的话,它跟我设定的初值不同我如何知道它正常工作了,如果按照手册上,ADIF=1证明转换完毕,那么如果ADSC位始终无法置1 那么怎么证明开始采集了???又如何证明转换完毕了,我已经读了好多次手册了,我觉得是在理解这个A/D转换上有差异,按照手册上说,ADSC位是ADC启动转换位,置1代表转换开始,转换完成时会变为0,那么为什么不用检测此位来判断ADC是否结束??ADIF=0代表转换尚未完成或无ADC转换,那么判断此位是否为1来判断ADC与上面有什么区别~!~!现在的问题是这两种判断方法都无法完成阿,我设定的值在寄存器里面看都不同,我不明白为什么楼上的高手说是正常现象~!~!
是否有人愿意帮我解答一下呢??

出0入0汤圆

发表于 2008-4-13 00:16:16 | 显示全部楼层
ADIF=1证明转换完毕,需要触发中断服务程序,在中断服务程序由硬件自动清零,或用软件清零.
你有中断服务程序吗,正常触发了吗?若没有中断服务程序,用软件清零了吗?

出0入0汤圆

 楼主| 发表于 2008-4-13 19:32:49 | 显示全部楼层
我没有用到中断,所以希望用检测位的方式来完成ADC,那这样是说就不能用检测ADIF位了是吗?我还是想问为什么我的设定值与在AVRSTUDIO中ADSCRA寄存器看到的值不同,当我设定为0xC5时,显示的却是0x95,也就是说ADSC位没被置1,那么这样是不是ADC就没有转换阿~!~!而且我不用中断的话,是不是就该用检测此位是否为0来判断ADC是否结束了~!~!

出0入0汤圆

发表于 2008-4-13 20:37:22 | 显示全部楼层
ADSCRA设定为0xC5时表示单次转换开始,此时ADSC位没被置1,开始转换,ADIF位为0,未转换结束;
当读ADSCRA时转换已结束,此时ADSC位为0,ADIF位为1,即0X95.
无论单次或连续转换都应该以ADIF位为1作为转换结束数据有效的标志,然后触发中断由硬件自动清ADIF位,或用软件清ADIF位(如果没有启用中断的话).
当然如果是单次转换的话,以ADSC位是否为0来判断ADC是否结束了从时序上看可能可以,但不推荐.

出0入0汤圆

发表于 2008-4-13 20:40:37 | 显示全部楼层
楼上错发一个字,应为:
ADSCRA设定为0xC5时表示单次转换开始,此时ADSC位被置1,开始转换,ADIF位为0,未转换结束;
当读ADSCRA时转换已结束,此时ADSC位为0,ADIF位为1,即0X95.
无论单次或连续转换都应该以ADIF位为1作为转换结束数据有效的标志,然后触发中断由硬件自动清ADIF位,或用软件清ADIF位(如果没有启用中断的话).
当然如果是单次转换的话,以ADSC位是否为0来判断ADC是否结束了从时序上看可能可以,但不推荐.

出0入0汤圆

 楼主| 发表于 2008-4-14 09:47:14 | 显示全部楼层
那这样是不是就是说我实际已经设置了,0xC5,但由于是靠分频来提供ADC时钟周期,所以在瞬间就完成了转换,所以观察它时与我设置的不同~!~!这与单步执行程序的时间由我自己控制的是不同的??是不是应该这样解释呢??

出0入0汤圆

发表于 2008-4-14 19:04:21 | 显示全部楼层
?Bit 6 ?ADSC: ADC Start Conversion
In Single Conversion mode, write this bit to one to start each conversion. In Free Running mode, write this bit to one to start the first conversion. The first conversion after ADSC has been written after the ADC has been enabled, or if ADSC is written at the same time as the ADC is enabled, will take 25 ADC clock cycles instead of the normal 13. This first conversion performs initialization of the ADC.
ADSC will read as one as long as a conversion is in progress. When the conversion is complete, it returns to zero. Writing zero to this bit has no effect.

?Bit 5 ?ADFR: ADC Free Running Select
When this bit is written to one, the ADC operates in Free Running mode. In this mode, the ADC samples and updates the data registers continuously. Writing zero to this bit will terminate Free Running mode.

?Bit 4 ?ADIF: ADC Interrupt Flag
This bit is set when an ADC conversion completes and the data registers are updated. The ADC Conversion Complete Interrupt is executed if the ADIE bit and the I-bit in SREG are set. ADIF is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, ADIF is cleared by writing a logical one to the flag.

Beware that if doing a read-modify-write on ADCSRA, a pending interrupt can be disabled. This also applies if the SBI and CBI instructions are used.

出0入0汤圆

发表于 2012-5-2 09:12:44 | 显示全部楼层
machao 发表于 2008-4-14 19:04
?Bit 6 ?ADSC: ADC Start Conversion
In Single Conversion mode, write this bit to one to start each  ...

看过了很多遍中文说明手册,再看英文手册,感觉一下英文的原汁原味~

出0入0汤圆

发表于 2012-5-2 09:24:02 | 显示全部楼层
ztxfhl 发表于 2008-4-13 20:40
楼上错发一个字,应为:
ADSCRA设定为0xC5时表示单次转换开始,此时ADSC位被置1,开始转换,ADIF位为0,未转换结 ...


"无论单次或连续转换都应该以ADIF位为1作为转换结束数据有效的标志,然后触发中断由硬件自动清ADIF位,或用软件清ADIF位(如果没有启用中断的话). "我一直在纠结的问题终于解决了,以前以为ADIF只有在中断的时候才能用呢~
           另外,
“或用软件清ADIF位(如果没有启用中断的话). ”是不是应该这样的:
                  while(!(ADCSRA&(1<<ADIF)));//等待转换结束
                                               ADCSRA|=(1<<ADIF);//清楚ADIF位,
              我有点不明白,为什么软件清除ADIF位,是写“1”呢?不是ADIF已经是1了吗???

出0入0汤圆

发表于 2012-5-3 09:23:30 | 显示全部楼层
我有点不明白,为什么软件清除ADIF位,是写“1”呢?不是ADIF已经是1了吗???


let me give you a piece of advice that you will benefit infinitely in the future:

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

本版积分规则

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

GMT+8, 2024-4-25 23:26

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

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