Please read ahead and help,
#include "msp430g2553.h"
float D = 7.5;
int /*total*/count = 0;
void main (void)
{
//float T, X, D = 7;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= BIT2; // P1.2 output
P1SEL |= BIT2; // P1.2 options select
P1REN |= BIT3;
P1IE |= BIT3; // P1.3 interrupt enabled
P1IES |= BIT3;
P1IFG &= ~BIT3; // P1.3 IFG cleared
__enable_interrupt(); // enable all interrupts
TA0CCR0 = 100; // PWM Period
TA0CCTL1 = OUTMOD_7; // CCR1 reset/set
// X = D/100; T = 512 * X;
TA0CCR1 = 7.5;
TA0CTL = TASSEL_2 + MC_1 + TACLR;
__bis_SR_register(LPM0_bits); // Enter LPM0
__no_operation(); // For debugger
while(1) {}
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
// if ( TA0CCR1 == 45 ) {
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3;
// } // toggle the interrupt edge,
//
// else {
count++;
switch( count )
{
case 1: D = 15;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
break;
case 2: D = 22.5;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
break;
case 3: D = 30;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
break;
case 4: D = 37.5;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
break;
case 5: D = 45;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
break;
default : D = 7.5;
// TA0CCR1 = ( 100 * (D/100) );
// TA0CTL = TASSEL_2 + MC_1 + TACLR;
// P1IFG &= ~BIT3; // P1.3 IFG cleared
// P1IES ^= BIT3; // toggle the interrupt edge,
count = 0;
break;
}
TA0CCR1 = ( 100 * (D/100) );
TA0CTL = TASSEL_2 + MC_1 + TACLR;
P1IFG &= ~BIT3; // P1.3 IFG cleared
P1IES ^= BIT3; // toggle the interrupt edge,
}
//}