Subversion Repositories Code-Repo

Rev

Blame | Last modification | View Log | RSS feed

#include <msp430.h> 

int main(void) {
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
        
    /* --- Set Oscillator Settings ---------------------- */
        BCSCTL1 = XT2OFF;           // Turn off XT2 oscillator, ACLK = low freq mode/1
        BCSCTL1 = CALBC1_16MHZ;      // Set DCO to callibrated 16Mhz
        DCOCTL  = CALDCO_16MHZ;      // Set DCO to callibrated 16Mhz
        BCSCTL2 = SELM_0 | DIVM_0 | DIVS_3; // MCLK = DCO/1, SMCLK = MCLK/8
        BCSCTL3 = LFXT1S_0 | XCAP_2;        // LFXT1 = 32.768khz, 10pF termination
        IE1 &= ~OFIE;               // Disable oscillator fault interrupt
        /* -------------------------------------------------- */

//      /* --- Set Timer Settings --------------------------- */
//      // Timer A clock source = ACLK/1, continuous mode, interrupt enabled
//      TA0CTL = TASSEL_1 | ID_0 | MC_2 | TACLR | TAIE;
//      TACCTL0 = CCIE;     // Enable timer A comparator 0 interrupt
//      TACCR0  = 32768;    // Set initial comparator value
//      /* -------------------------------------------------- */

        UCB0CTL0 = UCMSB+UCMST+UCMODE_0;                // 3-pin, 8-bit SPI master
        UCB0CTL1 = UCSSEL_2+UCSWRST;                            // SMCLK
        UCB0BR0 = 2;                                                            // UCLK/2
        UCB0BR1 = 0;
        //UCB0MCTL = 0;
        P1SEL |= BIT5 + BIT6 + BIT7;
        P1SEL2 |= BIT5 + BIT6 + BIT7;
        P1OUT |= BIT5 + BIT6 + BIT7;
        P1DIR |= BIT5 + BIT7;
        P1DIR &= ~BIT6;
        UCB0CTL1 &= ~UCSWRST;                                           // **Initialize USCI state machine**

//      /* --- Set Port Settings ---------------------------- */
//      // Set port direction to output
//      P1DIR = BIT0 | BIT6;
//      // Set initial port values
//      P1OUT = ~(BIT0 | BIT6);
//      /* -------------------------------------------------- */

        // Go into low power mode with interrupts enabled
//      _BIS_SR(LPM1_bits + GIE);

        unsigned char c = 0;
        while (UC0IFG & UCB0TXIFG == 0); // wait while not ready for TX
        UCB0TXBUF = 0xAB; // write
        while (UC0IFG & UCB0RXIFG == 0); // wait for RX buffer (full)
        c = UCB0RXBUF;

        while(1);
}

//#pragma vector=TIMER0_A0_VECTOR
//__interrupt void Timer0_A0(void) {
//      // This vector gets called on timer A comparator 0 interrupt
//      P1OUT ^= BIT0;      // Toggle LED
//      TACCR0 += 32768;    // Add offset to CCR0
//      TACCTL0 &= ~CCIFG;  // Reset the interrupt flag
//}

//#pragma vector=TIMER0_A1_VECTOR
//__interrupt void Timer0_A1(void) {
//      // This vector gets called on timer A overflow and comparators 1 and 2
//      P1OUT ^= BIT6;      // Toggle LED
//      TACTL &= ~TAIFG;    // Reset the interrupt flag
//}