/* ADC - Potentiometer to LEDs * * In this example, conversion result memory register 5 is used. * Analog input channel 6 using pin P4.7 is configure for result * memory register 5. P4.7 is connected to the potentiometer of the * EduPad board. Conversion is started by software trigger. * The bits 10-8 of the 12 bit conversion result are displayed on * the LED3 - LED0. * * Built and tested with MSP432P401R Rev. C, Keil MDK-ARM v5.24a and MSP432P4xx_DFP v3.1.0 */ #include "msp.h" void display(int data); int main(void) { int result; P2->DIR |= 0x30; /* P2.5, P2.4 set as output for LEDs */ P3->DIR |= 0x0C; /* P3.3, P3.2 set as output for LEDs */ ADC14->CTL0 = 0x00000010; /* power on and disabled during configuration */ ADC14->CTL0 |= 0x04080300; /* S/H pulse mode, sysclk, 32 sample clocks, software trigger */ ADC14->CTL1 = 0x00000020; /* 12-bit resolution */ ADC14->MCTL[5] = 6; /* A6 input, single-ended, Vref=AVCC */ P4->SEL1 |= 0x80; /* Configure P4.7 for A6 */ P4->SEL0 |= 0x80; ADC14->CTL1 |= 0x00050000; /* convert for mem reg 5 */ ADC14->CTL0 |= 2; /* enable ADC after configuration*/ while (1) { ADC14->CTL0 |= 1; /* start a conversion */ while (!ADC14->IFGR0); /* wait till conversion complete */ result = ADC14->MEM[5]; /* read conversion result */ /* display bits 10-8 on the LEDs */ display(result >> 8); } } void display(int data) { if (data & 8) /* bit 3 -> LED3 */ P2->OUT |= 0x10; else P2->OUT &= ~0x10; if (data & 4) /* bit 2 -> LED2 */ P2->OUT |= 0x20; else P2->OUT &= ~0x20; if (data & 2) /* bit 1 -> LED1 */ P3->OUT |= 8; else P3->OUT &= ~8; if (data & 1) /* bit 0 -> LED0 */ P3->OUT |= 4; else P3->OUT &= ~4; }