| 250 |
Kevin |
1 |
#include <msp430.h>
|
|
|
2 |
|
|
|
3 |
int main(void) {
|
|
|
4 |
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
|
|
|
5 |
|
|
|
6 |
/* --- Set Oscillator Settings ---------------------- */
|
|
|
7 |
BCSCTL1 = XT2OFF; // Turn off XT2 oscillator, ACLK = low freq mode/1
|
|
|
8 |
BCSCTL1 = CALBC1_16MHZ; // Set DCO to callibrated 16Mhz
|
|
|
9 |
DCOCTL = CALDCO_16MHZ; // Set DCO to callibrated 16Mhz
|
|
|
10 |
BCSCTL2 = SELM_0 | DIVM_0 | DIVS_3; // MCLK = DCO/1, SMCLK = MCLK/8
|
|
|
11 |
BCSCTL3 = LFXT1S_0 | XCAP_2; // LFXT1 = 32.768khz, 10pF termination
|
|
|
12 |
IE1 &= ~OFIE; // Disable oscillator fault interrupt
|
|
|
13 |
/* -------------------------------------------------- */
|
|
|
14 |
|
|
|
15 |
// /* --- Set Timer Settings --------------------------- */
|
|
|
16 |
// // Timer A clock source = ACLK/1, continuous mode, interrupt enabled
|
|
|
17 |
// TA0CTL = TASSEL_1 | ID_0 | MC_2 | TACLR | TAIE;
|
|
|
18 |
// TACCTL0 = CCIE; // Enable timer A comparator 0 interrupt
|
|
|
19 |
// TACCR0 = 32768; // Set initial comparator value
|
|
|
20 |
// /* -------------------------------------------------- */
|
|
|
21 |
|
|
|
22 |
UCB0CTL0 = UCMSB+UCMST+UCMODE_0; // 3-pin, 8-bit SPI master
|
|
|
23 |
UCB0CTL1 = UCSSEL_2+UCSWRST; // SMCLK
|
|
|
24 |
UCB0BR0 = 2; // UCLK/2
|
|
|
25 |
UCB0BR1 = 0;
|
|
|
26 |
//UCB0MCTL = 0;
|
|
|
27 |
P1SEL |= BIT5 + BIT6 + BIT7;
|
|
|
28 |
P1SEL2 |= BIT5 + BIT6 + BIT7;
|
|
|
29 |
P1OUT |= BIT5 + BIT6 + BIT7;
|
|
|
30 |
P1DIR |= BIT5 + BIT7;
|
|
|
31 |
P1DIR &= ~BIT6;
|
|
|
32 |
UCB0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
|
|
|
33 |
|
|
|
34 |
// /* --- Set Port Settings ---------------------------- */
|
|
|
35 |
// // Set port direction to output
|
|
|
36 |
// P1DIR = BIT0 | BIT6;
|
|
|
37 |
// // Set initial port values
|
|
|
38 |
// P1OUT = ~(BIT0 | BIT6);
|
|
|
39 |
// /* -------------------------------------------------- */
|
|
|
40 |
|
|
|
41 |
// Go into low power mode with interrupts enabled
|
|
|
42 |
// _BIS_SR(LPM1_bits + GIE);
|
|
|
43 |
|
|
|
44 |
unsigned char c = 0;
|
|
|
45 |
while (UC0IFG & UCB0TXIFG == 0); // wait while not ready for TX
|
|
|
46 |
UCB0TXBUF = 0xAB; // write
|
|
|
47 |
while (UC0IFG & UCB0RXIFG == 0); // wait for RX buffer (full)
|
|
|
48 |
c = UCB0RXBUF;
|
|
|
49 |
|
|
|
50 |
while(1);
|
|
|
51 |
}
|
|
|
52 |
|
|
|
53 |
//#pragma vector=TIMER0_A0_VECTOR
|
|
|
54 |
//__interrupt void Timer0_A0(void) {
|
|
|
55 |
// // This vector gets called on timer A comparator 0 interrupt
|
|
|
56 |
// P1OUT ^= BIT0; // Toggle LED
|
|
|
57 |
// TACCR0 += 32768; // Add offset to CCR0
|
|
|
58 |
// TACCTL0 &= ~CCIFG; // Reset the interrupt flag
|
|
|
59 |
//}
|
|
|
60 |
|
|
|
61 |
//#pragma vector=TIMER0_A1_VECTOR
|
|
|
62 |
//__interrupt void Timer0_A1(void) {
|
|
|
63 |
// // This vector gets called on timer A overflow and comparators 1 and 2
|
|
|
64 |
// P1OUT ^= BIT6; // Toggle LED
|
|
|
65 |
// TACTL &= ~TAIFG; // Reset the interrupt flag
|
|
|
66 |
//}
|