#include <msp430.h>
#include "Pwm.h"
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer, if not, System will continue to Reset!
P1DIR |= 0x01; // configure P1.0 as output
P4DIR |= 0x80; // configure P4.7 as output
P1DIR &= ~(0x01 << 1);
P1OUT = 0x02;
P1REN |= 0x01 << 1;
P2DIR &= ~(0x01 << 1);
P2OUT = 0x02;
P2REN |= 0x01 << 1;
PWM_Init();
while(1)
{
if(P2IN & 0x02) // P2.1
{
if(P1IN & 0x02)
{
TA0CCR3 = 52;
P1OUT &= 0xFE; // P1.0
P4OUT &= 0x7F; //
}
else
{
TA0CCR3 = 36;
P1OUT &= 0xFE; // P1.0
P4OUT |= 0x80; // P4.7
}
}
else
{
TA0CCR3 = 68;
P1OUT |= 0x01; //
P4OUT &= 0x7F; //
}
}
}
/*
* ACLK = 32768Hz
* SMCLK = 1MHz
* MCLK = 8MHz?
*/
#include "Pwm.h"
void PWM_Init()
{
TA0CTL = 0x0110;
TA0CCR0 = 655;
TA0CCTL3 = 0x00E0;
TA0CCR3 = 33;
TA0CCTL4 = 0x00E0;
TA0CCR4 = 48;//65;
P1DIR |= 0x30;
P1SEL |= 0x30;
TA0CTL |= 1<<2;
}