AVR多路PWM问题

我想让AVR单片机输出多路PWM,如何通过一个定时器输出两路频率一样,占空比不一样的PWM信号?用ATtiny系列单片机... 我想让AVR单片机输出多路PWM,如何通过一个定时器输出两路频率一样,占空比不一样的PWM信号?

用ATtiny 系列单片机
展开
 我来答
斛隽u2
2015-05-23 · TA获得超过133个赞
知道答主
回答量:138
采纳率:0%
帮助的人:37.5万
展开全部
如果你用单片机本身的PWM功能,应该没有办法实现你的要求。
但如果你想用定时器来产生两种频率一样,占空比不一样的PWM信号还是可以的。
首先你定义两个全局变量,如PwmCnt1和PwmCnt2。
比如定时器溢出时间是1ms,你在中断中把这两个变量都自加1。
然后在主程序主循环中做如下判断:
if(PwmCnt1 < 100)
PWM输出1

else if(PwmCnt1 < 200)
PWM输出0

else
PwmCnt1 = 0;
这样你就可以得到一个占空比为1的方波。
通过修改这两个值,你可以得到你想要的波形。当然最小时间是你定时器的溢出时间

不过这样做也会有问题,就是一旦在主程序中进入了其它的中断,就会影响PWM的精度。
对于AVR来说,还是使用单片机本身的PWM功能。我用过mega64的单片机,驱动四个步进电机。可以同时产生4路PWM信号。
更多追问追答
追问
这种方法精度不够,你说的用过mega64的单片机驱动四个步进电机。可以同时产生4路PWM信号,那东西本来就有4个定时器,输出4路PWM没问题。

我看到AVR的单片机资料,一般有两路定时器的,相对来说就有4路PWM输出功能,所以我才问怎么样才能实现而已,而且我要输出的PWM频率是一样的,你该不会像让单片机一直扫描比较寄存器吧,那样还是会有点小问题的。
追答
能说说你想做什么吗?驱动什么东西,看看有没有别的办法解决。可以Q我
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式