专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

MSP430G2553双路舵机控制测试(PWM)

作者:佚名   来源:本站原创   点击数:  更新时间:2014年04月17日   【字体:


#include "msp430g2553.h"
#define uint unsigned int
#define STE 180 
#define MIN 500 
#define MAX 2400
#define PWM_P 20000
const uint stepval=(MAX-MIN)/STE;
uint deg[200];
void ang_con()
{
    uint i,degnow=MIN;
    for(i = 200;i > 0;i--)
    {
        deg[200-i] = degnow;
        degnow += stepval;
    }
}
void pwm_out()
{
    P2DIR |= BIT1 + BIT4;
    P2SEL |= BIT1 + BIT4;
    TA1CCR0  = PWM_P;
    TA1CCTL1 = OUTMOD_7;
    TA1CCR1  = deg[0];
    TA1CCTL2 = OUTMOD_7;
    TA1CCR2  = deg[100];
    TA1CTL   = TASSEL_2 + TACLR + MC_1;
}
void move_test()
{
    uint i;
    for(i=180;i>0;i--)
    {
        TA1CCR1 = deg[180-i];
        __delay_cycles(100000);
    }
    TA0CCR1 = deg[180-i];
    __delay_cycles(1000000);
    for(i=100;i>30;i--)
    {
        TA1CCR2 = deg[i];
        __delay_cycles(100000);
    }
    TA1CCR2 = deg[100];
    __delay_cycles(1000000);
}
void main ()
{
    WDTCTL = WDTPW + WDTHOLD;
    ang_con();
    pwm_out();
    while(1)
        move_test();
}
 

关闭窗口

相关文章