#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();
}