430用pwm波控制舵机,舵机总是一下一下连续旋转,如何用pwm波使舵机转过某一特定的角度就停下来,以及如何使舵机反转,请各位前辈指点
#include<msp430x14x.h>
#define uint unsigned int
void init_clk(void)
{
unsigned int i;
BCSCTL1&=~XT2OFF;
do
{
IFG1&=~OFIFG;
for(i=0xff;i>0;i--);
}
while((IFG1&OFIFG));
BCSCTL2=0X00;
BCSCTL2=SELS+SELM_3;
}
void init_pwm(void)
{
P1SEL |= BIT2 + BIT3 ; //选择 p1.2-TA1 ,P1.3-TA2 作为PWM输出 第二功能
P1DIR |= BIT2 + BIT3 ;
TACCR0 = 20000; //PWM信号频率10KHZ
TACCTL1 = OUTMOD_7;
TACCR1 =1000; // 占空比1:1
TACCTL2 = OUTMOD_7;
TACCR2 = 1000;
TACTL=TASSEL_1 +MC_1+DIVS_3;
_BIS_SR(CPUOFF+GIE);
}
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
init_clk();
init_pwm();
while(1);
}
本文来自论坛,点击查看完整帖子内容。