專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

MSP430G2553雙路舵機(jī)控制測試(PWM)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間: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();
}
 

關(guān)閉窗口

相關(guān)文章