View difference between Paste ID: HtP5yfDW and vjmG4W94
SHOW: | | - or go back to the newest paste.
1
#include <msp430.h>
2
#include <signal.h>
3
4
static volatile long count =0;
5
6
static inline void init_timer_A() {
7
8
	
9
	TACCR0 = 25000; // since clk = 1MHhz => 25us count
10
	TACTL = TASSEL1 | MC0; 
11
	//TACCTL0 |= OUTMOD2; / Toggle mode - OUTMODx = 100
12
	TACCTL0 |= CCIE; //enable interrupt for capture/compatre;
13
}
14
15
16
static inline void uart_init() {
17
//config uart for 9600 bps
18
	P1SEL = BIT1 + BIT2;
19
	P1SEL2 = BIT1 + BIT2; 
20
	
21
	UCA0CTL1 |= UCSSEL_2; //select UCSSELx = 10 - SMCLK
22
	UCA0BR0 = 104;
23
	UCA0BR1 = 0;
24
	UCA0MCTL = UCBRS0; //modulation control.
25
	UCA0CTL1 &= ~UCSWRST; //this enables Rx and Txhardware
26
27
	IE2 |= UCA0RXIE;
28
}
29
30
31
32
interrupt(TIMER0_A0_VECTOR) timer_blink(void) {
33
	//generate delay for 500ms
34
	count++;
35
	if(count >= 20)  {
36
		P1OUT ^= (BIT0 + BIT6);
37
		count = 0;
38
	}
39
}
40
41
interrupt(USCIAB0RX_VECTOR) echo(void) {
42
	while(!(IFG2 & UCA0TXIFG));
43
	UCA0TXBUF = UCA0RXBUF; //echo
44
}
45
46
int main(int argc, const char *argv[])
47
{
48
	WDTCTL = WDTPW + WDTHOLD;
49
	__write_status_register(OSCOFF);
50
	P1DIR = BIT0 + BIT6;
51
	P1OUT = BIT0;
52
53
	if(CALBC1_1MHZ != 0xff) { //set up for 1Mhz operting freq.
54
		DCOCTL=0;
55
		BCSCTL1 = CALBC1_1MHZ;
56
		DCOCTL = CALDCO_1MHZ;
57
	}
58
59
	uart_init();
60
	init_timer_A();
61
	eint();
62
	LPM0;
63
	while(1) {
64
	}
65
	return 0;
66
}