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.

TM4C129ENCPDT: ADC Configuration for TM4c129ENCPDT

Part Number: TM4C129ENCPDT

I'm trying to configure the ADC on a custom board.  At present, my code compiles but I dont see that the ADC ISR is being called.  This is code ported from a nearly identical application (same processor, maybe minor clock differences).  Relevant code snippets below.  I'd appreciate any suggestions!

//////////////////Main Program/////////

int main(void)
{
    //Initializations
        PinoutSet();
        sysclock = SysCtlClockFreqSet(SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_25MHZ, 25000000);
        adc_configuration();

    //Superloop
    while(1){

        ADCProcessorTrigger(ADC0_BASE, 0); //base, SequenceNumber

        SysCtlDelay(LoopDelay * (sysclock / 3 / 1000)); //introduces 100ms delay - 3 b/c SysCtlDelay takes 3 clock cycles - 1000 b/c unit conversion
    }
}

void adc_configuration(){
    //Onboard ADC Configuration to read 3 external analog inputs on pins 13,14,15 and internal temperature
    //read on sequence 0 with highest priority
    //TODO - add measurements for heater voltage on pins 127/PD6/AIN5, 128/PD7/AIN4 and 12V rail 12/PE3/AIN0
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); //p.501 of Tivaware manual
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    //ADCClockConfigSet(ADC0_BASE,ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL,1);
    ADCClockConfigSet(ADC0_BASE,ADC_CLOCK_SRC_MOSC | ADC_CLOCK_RATE_FULL,1);
    while(!SysCtlPeripheralReady(SYSCTL_PERIPH_ADC0))
    {
    }
    //ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_ALWAYS, 0); //Base, SequenceNum, Trigger, Priority
    ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0); //Base, SequenceNum, Trigger, Priority
    ADCSequenceStepConfigure(ADC0_BASE, 0, 0, (ADC_CTL_CH1)); //Base, SequenceNum, Step, Config
    ADCSequenceStepConfigure(ADC0_BASE, 0, 1, (ADC_CTL_CH2)); //Base, SequenceNum, Step, Config
    ADCSequenceStepConfigure(ADC0_BASE, 0, 2, (ADC_CTL_CH3)); //Base, SequenceNum, Step, Config
    ADCSequenceStepConfigure(ADC0_BASE, 0, 3, (ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END)); //Base, SequenceNum, Step, Config
    ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);
    //ADCReferenceSet(ADC0_BASE, ADC_REF_INT);
    ADCSequenceEnable(ADC0_BASE, 0); //Base, SequenceNum
    ADCIntRegister(ADC0_BASE, 0, adc_int_handler); //Base, SequenceNum, ISR Handler pointer
    ADCIntEnable(ADC0_BASE, 0); //Base, SequenceNum
}

void adc_int_handler(void) {
        adc_int_counter++;
        ADCSequenceDataGet(ADC0_BASE, 0, adc_buffer);
        rail_voltage_24v = adc_buffer[0];
        rail_voltage_5v = adc_buffer[1];
        rail_voltage_3v3 = adc_buffer[2];

        rail_voltage_24v_volts = ((float) rail_voltage_24v) / ((float) 0xFFF) * 3 * 9.635; //12-bit ADC, 3V reference, 9.635x divider attenuation
        rail_voltage_5v_volts = ((float) rail_voltage_5v) / ((float) 0xFFF) * 3 * 2; //12-bit ADC, 3V reference, 2x divider attenuation
        rail_voltage_3v3_volts = ((float) rail_voltage_3v3) / ((float) 0xFFF) * 3 * 1.330; //12-bit ADC, 3V reference, 1.330x divider attenuation

        tiva_temperature = adc_buffer[3];
        ADCIntClear(ADC0_BASE, 0); //base, SequenceNumber
    }