This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Analog to Digital Conversion



Here's  code performing ADC on Pin E5 on the Tiva C Series meant for struggling beginners like myself .

#include <stdbool.h>
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"

main(void) {

uint32_t pui32ADC0Value[1];

SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHZ);                                                                                                               
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
ADCReferenceSet(ADC0_BASE, ADC_REF_INT); //Set reference to the internal reference
                                        // You can set it to 1V or 3 V
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_5); //Configure GPIO as ADC

ADCSequenceDisable(ADC0_BASE, 3); //It is always a good practice to disable ADC prior                                                        //to usage ,else the ADC may not be accurate                                                               //   due to previous initializations                  
ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); //Use the 3rd Sample sequencer                                                                    

ADCSequenceStepConfigure(ADC0_BASE, 3, 0,ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END); 
                                                         //Configure ADC to read from channel 8 ,trigger the interrupt to end data capture //          

ADCSequenceEnable(ADC0_BASE, 3);   //Enable the ADC
ADCIntClear(ADC0_BASE, 3);     //Clear interrupt to proceed to  data capture

while (1) {
ADCProcessorTrigger(ADC0_BASE, 3);   //Ask processor to trigger ADC
while (!ADCIntStatus(ADC0_BASE, 3, false))
{ //Do nothing until interrupt is triggered
}

ADCIntClear(ADC0_BASE, 3); //Clear Interrupt to proceed to next data capture                                          
ADCSequenceDataGet(ADC0_BASE, 3, pui32ADC0Value); //pui32ADC0Value is the value read                                                                     

SysCtlDelay(SysCtlClockGet() / 12);
} //Suitable delay
}

 It is important to refer to datasheet before selecting the GPIO for the ADC and the channel through which it is done .

Special Thanks to cb1_mobile for the help !