智能车制作
标题:
新手求教关于舵机控制的问题
[打印本页]
作者:
zdbkaka
时间:
2011-10-24 16:28
标题:
新手求教关于舵机控制的问题
void PLL_Init(void)
{
REFDV=1; // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)
SYNR=2; // fPLL= fVCO/(2 × POSTDIV)
while(!(CRGFLG&0x08));
CLKSEL=0x80;
}
void PWM_Init(void)
{
PWME=0x00; //禁止PWM
PWMCTL=0x00; //不级联
PWMPOL_PPOL1=1; //极性设置
PWMCAE_CAE1=0; //对齐方式设置
PWMPRCLK=0x03; //时钟预分频寄存器设置
PWMCNT01=0; //控制寄存器设置
PWMCLK_PCLK1=1; //时钟源选择PWM-SA
PWMSCLA=150; //时钟设置
PWMPER1=50; //周期寄存器设置
PWMDTY1=13.5; //占空比设置,使小车处在平衡位置
PWME_PWME1=1; //使能PWM
}
void main(void)
{
int i,j;
PLL_Init();
PWM_Init();
while(1)
{
for(i=0;i<60000;i++)
{
PWMDTY1=15;
}
for(j=0;j<60000;j++)
{
PWMDTY1=11;
}
}
}
我这个程序怎么不能实现小车的左右来回摆动?
作者:
turf456
时间:
2011-10-24 19:49
用示波器看看
作者:
power4719
时间:
2011-10-24 21:07
void PWM_Init(void)函数不再循环里吧
作者:
zdbkaka
时间:
2011-10-25 21:38
对于2楼的回答,那是初始化,不用放在循环里。我这个纠结的问题今天解决了。不知道为什么,今天重新下载了一下程序,什么也没改。放到车上就好用了。谢谢各位的回答。
作者:
000
时间:
2011-10-25 21:51
for(i=0;i<60000;i++)
{
PWMDTY1=15;
}
for(j=0;j<60000;j++)
{
PWMDTY1=11;
}
不的占空比,对应舵机不同的角度。
一会PWMDTY1=15;,延时一会PWMDTY1=11;那就是一会左一会右了呗。
int i ,j;有问题
要用 unsigned int
控制舵机的pwm频率要对!你自己查舵机资料,算算看,和你这个PWM的频率对不对的上!
另外控制角度的 占空比的 时间要对!就是高电平持续时间!也是去看资料。
另外切忌,舵机和单片机等等要共地!
你pwm各参数我没算。你自己去算算看。
作者:
000
时间:
2011-10-25 21:53
本帖最后由 000 于 2011-10-25 21:55 编辑
自己去看C语言,变量定义那里。什么都告诉你,你学不到东西的。
作者:
zdbkaka
时间:
2011-10-26 17:11
回复
6#
000
谢啦。问题都解决了。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2