智能车制作
标题:
请问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://111.231.132.190/)
Powered by Discuz! X3.2