//  MSP432P401M

/************************************************************************************************/
//   SAYALI PATHAK
//   3 Feb 2017 (Created)
//   8 Feb 2017 (Changes)
#include "MSP432P401M.h"
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

/* Standard Includes */
#include <stdint.h>
#include <string.h>

extern void init_uart(void);
extern void dev_init(void);

//Defining variables for inclinometer ADC conversions
//SAYALI PATHAK 8 Feb 2017
// uint16_t curADCResult;
// float normalizedADCRes;
static volatile uint16_t curADCResult;

uint32_t currentPowerState;

//Defining variables for inclinometer voltage to angel conversions
//SAYALI PATHAK 21 FEB 2017
unsigned char vsenseout;
unsigned char lAngle;
unsigned char readdata;



//*************************************************************************************
//Main code
int main(void)
{
     //Stop watchdog timer
        WDT_A->CTL = WDT_A_CTL_PW |  WDT_A_CTL_HOLD;

  /* Initializing Variables */
      curADCResult = 0;


    // Configure GPIO
        //  P5->SEL1 |= BIT4 | BIT6 | BIT7;         // Enable A/D channel A0
        //  P5->SEL0 |= BIT4 | BIT6 | BIT7;         // and VeREF+ and VeREF-

        P5->SEL1 |=  BIT6 | BIT7;         // VeREF+ and VeREF-
        P5->SEL0 |=  BIT6 | BIT7;        // set as a secondary function (ADC Ref pin)
        P8->SEL1 |= BIT6;                //Enable A/D channel A19
        P8->SEL0 |= BIT6;                //set as a secondary function (ADC Ref pin)

    //unused pin setup
         P10->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);    // set P10 as output direction
         P10->REN |= BIT0 +  BIT1 + BIT2 + BIT3;                   //enable pull-up/pull-down resistors on P10
         P10->OUT &= ~(BIT0 +  BIT1 + BIT2 + BIT3);                //Set P10 resistors to pull down

         P1->DIR |= (BIT1 + BIT4 + BIT5 + BIT6 + BIT7);
         P1->REN |= BIT1 + BIT4 + BIT5 + BIT6 + BIT7;
         P1->OUT &= ~(BIT1 + BIT4 + BIT5 + BIT6 + BIT7);

         P2->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);
         P2->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7;
         P2->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);

         P3->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);
         P3->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7;
         P3->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);

         P4->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);
         P4->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7;
         P4->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);

         P5->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4  + BIT5);
         P5->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 ;
         P5->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);

         P6->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);
         P6->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7;
         P6->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);

         P7->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);
         P7->REN |= BIT0 + BIT1 + BIT2 + BIT3 +BIT4 + BIT5 + BIT6 + BIT7;
         P7->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7);

         P8->DIR |= BIT0 + BIT1 + BIT2 + BIT3 +BIT4 + BIT5  + BIT7;
         P8->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5  + BIT7;
         P8->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5  + BIT7);

         P9->DIR |= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);
         P9->REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 ;
         P9->OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);

         dev_init();


    // Configure ADC14
    // Turn on ADC14, set sampling time
         ADC14->CTL0 = ADC14_CTL0_ON | ADC14_CTL0_SHP| ADC14_CTL0_SHT0_2 |ADC14_CTL0_SSEL_2 | ADC14_CTL0_PDIV_2 | ADC14_CTL0_CONSEQ_2 | ADC14_CTL0_MSC;
    // Use sampling timer, 14-bit conversion results
         ADC14->CTL1 = ADC14_CTL1_RES_3;
    // Vr+ = VeREF+ (ext) and Vr-=VeREF-, A0
    //   ADC14->MCTL[0] =  ADC14_MCTLN_VRSEL_14 | ADC14_MCTLN_INCH0 | ADC14_MCTLN_EOS  ;
    // Vr+ = VeREF+ (ext) and Vr-=VeREF-, A19
         ADC14->MCTL[0] =  ADC14_MCTLN_VRSEL_14 | ADC14_MCTLN_INCH0 |ADC14_MCTLN_INCH1 | ADC14_MCTLN_INCH4| ADC14_MCTLN_EOS  ;
    // Interrupt enable
         ADC14->IER0 = ADC14_IER0_IE19;
    // Enable conversions
         ADC14->CTL0 |= ADC14_CTL0_ENC | ADC14_CTL0_SC ;



       init_uart();


  }



void ADC14_IRQHandler(void)
{
    curADCResult = MAP_ADC14_getResult(ADC_MEM0);
   //  adcResult =ADC14->MEM[0];
 //  normalizedADCRes = ((float)curADCResult * 3.3) / 16383;

}









