如何用avr16单片机的OC0输出1.5ms脉宽20ms周期的PWM波?

就目前我所知道的先通过TCCR0设定模式例如快速PWMTOP值为0xFF即计数总值为255分频系数为1正相输出在这样的设定下如何通过设置OCR0的值来产生脉宽为1.5ms... 就目前我所知道的 先通过TCCR0设定模式 例如快速PWM TOP值为0xFF 即计数总值为255 分频系数为1 正相输出 在这样的设定下 如何通过设置OCR0的值来产生 脉宽为1.5ms 周期20ms的PWM波? 展开
 我来答
回卜去的2009
2014-05-06 · 超过23用户采纳过TA的回答
知道答主
回答量:52
采纳率:100%
帮助的人:44.4万
展开全部
你是要驱动舵机是吧?舵机的周期20ms的波的话对准度要求还是挺高的,用8位定时器0不太好,用16位定时器可以解决这个问题。。。如果必须用8位定时器0,快速PWM模式,系统时钟用6M或者8M,6,000,000怎么分频也分不出周期为20ms的波。这就需要软件处理,那就不分频,设置一个计数器“i” ,发生一次溢出中断i++。。。6,000,000/256=23437hz我们需要50hz,那就当i加到433的时候将io口拉高,if(i==468)时将io口拉低,这样也可以。
更多追问追答
追问
后面不太懂 为什么是433  然后怎么又变了468?
追答
23437/50=468也就是i 要记468次数,因为你要求1.5ms的脉宽,占空比=1.5/20=0.075.。。。。。然后468*(1-0.075)=433也就是先给433次低电平,然后给35次高电平,形成占空比,这样做有个坏处就是程序占用cpu
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式