智能车制作

标题: 请问PWMDTY只能在PWME置1前设置吗? [打印本页]

作者: papa2009    时间: 2010-1-8 21:18
标题: 请问PWMDTY只能在PWME置1前设置吗?
像下面这样将初始化定义为一个子程序,然后在main函数里调用它后再设置PWMDTY就无法实现吗?
程序跑的时候舵机总是会偏向最右,PWMDTY的数值设置时没错的,放在PWME前就可以实现,在后面就不行了,有人可以给我分析一下吗?

void pwminitial()//PWM初始化,通道01,23控制电机,通道45控制舵机
{             
  PWMPOL=0x2A;//通道01,23,45输出波形开始极性为1
  PWMCAE=0x00;//左对齐输出模式   
  PWMCTL=0x70;//通道01,23,45级联
  PWMCLK=0x20;//通道45选择SA为时钟源   
  PWMSCLA=0x04;//通道45时钟SA为3MHz(24/(2*4))
        
  PWMPER01=6000;//设定通道01输出频率(4kHz)
  PWMPER23=6000;//设定通道23输出频率(4kHz)
  
  PWMPER45=60000;//设定通道45输出频率(50Hz)
  PWME=0x2A;//通道01,23使能
}
作者: chenrunshe_007    时间: 2010-1-9 00:52
本帖最后由 chenrunshe_007 于 2010-1-9 01:09 编辑

回复 1# papa2009
完全可以的。
你说"PWMDTY的数值设置时没错的",怎么知道没错,写出来让我们分析一下么。舵机打向最左或者最右有两种情况:
1.PWM的占空比设错了,肯定超过了范围
2.舵机坏了
如果没示波器的话你可以在单步运行时查看一下PWM里面负责计数的寄存器的值和PWM输出脚电平的变化情况,看看超过舵机承受的范围没有。如果真是如你所说PWMDTY换了个位置就不行了那真是诡异了。
作者: papa2009    时间: 2010-1-9 11:45
回复 2# chenrunshe_007


    我试过在上面的子程序里为PWMDTY赋值,而main函数里不去改动它,那它就可以转动我然一想要的角度了,所以这个应该是没问题的,舵机也没事……
程序里我可以给通道01和23改变PWMDTY,但是45的就不行了……
对了,每次改完PWMDTY后好像循环一次回来又会变回它们的初始值……不知道是不是硬件的问题
作者: sunrong    时间: 2011-3-19 21:48
我的也是这样的问题,请问是怎么解决的,我已经调了快两天了




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2