#include "msp430afe253.h"



#define   Num_of_Results   50
unsigned char *PTxData;                     // Pointer to TX data
unsigned int results[Num_of_Results];
unsigned int moy = 0;


void main(void)
{
  volatile unsigned int i;
  

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  
  
  //----------------- Conversion -----------------//
  SD24CTL = SD24REFON + SD24SSEL0;          // 1.2V ref, SMCLK
  SD24INCTL2 |= SD24INTDLY0;                // Interrupt on 3rd sample
  SD24CCTL2 |= SD24IE ;                     // Enable interrupt
  SD24CCTL2 |= SD24UNI ;                  // Unipolar conversion
  //SD24CCTL2 |= SD24OSR_128                // OSR=128 (default is 256)
  
  for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup
  
  SD24CCTL2 |= SD24SC;                      // Set bit to start conversion

  //----------------- UART -----------------//
    P1SEL |= BIT3+BIT4;                       // P1.3,1.4 = USART0 TXD/RXD
  do
  {
      IFG1 &= ~OFIFG;                       // Clear OSCFault flag
      for (i = 0x47FF; i > 0; i--);         // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
  U0CTL |= CHAR;                            // 8-bit character
  U0TCTL |= SSEL1;                          // UCLK= SMCLK
  U0BR0 = 10;                               // 1MHz 115200
  U0BR1 = 0x00;                             // 1MHz 115200
  U0MCTL = 0x00;                            // 1MHz 115200 modulation
  U0CTL &= ~SWRST;                          // Initialize USART state machine
    
  IE1 |= UTXIE0;                            // Enable USART0 TX interrupt
  
  P1SEL2 |= BIT0;                           // Set SMCLK at P1.0
  
  
  PTxData = (unsigned char *)results; 
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
   
  
}

#pragma vector=USART0TX_VECTOR
__interrupt void USART0_TX (void)
{
  
  switch (SD24IV)
  {
  case 2:                                   // SD24MEM Overflow
    break;
  case 4:                                   // SD24MEM0 IFG
    break;
  case 6:                                   // SD24MEM1 IFG     
    break;
  case 8:                                   // SD24MEM2 IFG
    TXBUF0 = SD24MEM2;                      // Save CH2 results (clears IFG)
    break;
  }

}

#pragma vector=SD24_VECTOR
__interrupt void SD24AISR (void)
{
  static unsigned int index = 0;
  switch (SD24IV)
  {
  case 2:                                   // SD24MEM Overflow
    break;
  case 4:                                   // SD24MEM0 IFG
    break;
  case 6:                                   // SD24MEM1 IFG     
    break;
  case 8:                                   // SD24MEM2 IFG
    results[index] = SD24MEM2;              // Save CH2 results (clears IFG)
    if (++index == Num_of_Results)
      {
        index = 0; 
        break;
      }
    break;
  }

}