打印
[AVR单片机]

关于ATmega的ADC和PWM功能的理解问题,请教各位高手。

[复制链接]
4677|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
碧水长天|  楼主 | 2007-6-5 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    读了ATmega48/88/168/64L的中英文手册,由如下问题不解,请大家指教,不胜感激!


问题1:关于ADC的。
      之一:在ATmega8/16/32的手册中,我没有弄明白ADC单次转换是如何设置的。手册中这样说道:“如果使能了自动触发方式,置位ADCSRA寄存器中的ADSC位将启动单次转换”。我想,既然使能了自动触发,那么位域ADS2:0将确定一种自动触发方式,即便置位ADSC能启动转换,但无论如何,ADC的启动还是会受到自动触发源的触发而进行转换,而这不是我所希望的. 我这样理解对么?
    如果我的理解正确的话,那么能否通过将触发源设为模拟比较方式,然后禁止模拟比较方式,这样只依靠置位ADSC来启动转换。这样做行吗?还有别的方法吗?
    如果我的理解错误的话,那么我该如何实现单次转换?
        
         之二:对于ATmega48/88,如果只需要8位ADC的话,那么在精度指标最高的条件下,ADC时钟频率可设到多高?对8Mhz系统时钟来说,32分频可否?

         之三:未看到有对ADC In和数字IO口进行选择的配置项目,我只想用3~4个ADC通道,余下的做普通IO,是否可以通过读PINx来完成?


问题2:关于T/C的PWM功能的。
    之一:若T/C0工作于8位相位修正PWM模式下来产生PWM,而且允许比较匹配中断。那么会不会出现如下情况:在一个PWM周期中,当TCNT0上升计数和下降计数到与比较寄存器值相等时将各产生一次比较匹配中断?
    如果会的话,在比较匹配ISR中我该如何区分这两次中断呢?
    
    之二:更新PWM中的比较寄存器的值后,是否在下一个计数周期开始时(T/C0回到0)才生效?

    之三:我想使用多路PWM,如何做到在不更改PWM占空比设置的情况下,禁止引脚OCnX(n=0/1/2,X=A/B,下同)的输出,而把该引脚当成普通的I/O口使用?我看到手册中有这样的描述:“设置位域COMnX1:COMnX0为00时,将执行正常的端口操作,不与引脚OCnX相连”。是否这样设置时,即便PWM将仍然
工作,只是引脚OCnX的输出改为由PortX决定,若重新设置COMnX1:COMnX0,则PWM波形将会重新加载在对应引脚上?如果是的话,那么此时的比较匹配中断还会发生吗?

    其实这样问题我本应该自己在硬件上测试,无奈尚无硬件,AVR单片机也是刚刚接触,不甚了解,故发到这里来劳烦大家,望指点一二,谢谢!

相关帖子

沙发
碧水长天|  楼主 | 2007-6-7 08:43 | 只看该作者

能请斑竹或者双龙的客服指点一下么?

也请AVR的高手指点一二。

使用特权

评论回复
板凳
jt4117| | 2007-6-7 13:45 | 只看该作者

唉,同感啊。avr的datasheet真是很难看懂!!!

使用特权

评论回复
地板
dai_weis| | 2007-6-7 21:07 | 只看该作者

先回答你的问题1的之3

对于ADC不用的端口做普通IO是可以的,作为ADC输入需要端口默认为高阻抗输入,如果作为普通IO则照常用就可以,按照你的IO用途配置,不过要注意电源问题,数字电源还是模拟电源,这个有可能影响ADC精度

使用特权

评论回复
5
HotPower| | 2007-6-8 00:20 | 只看该作者

没什么道理可讲,用示波器一看便知~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

120

帖子

1

粉丝