Mark,
I am trying to do a simple ADC port read and been trying to follow code from the forum to no avail.
static void fnInitADC(void)
{
ADC_SETUP adc_setup; // interrupt configuration parameters
adc_setup.int_type = ADC_INTERRUPT; // identifier when configuring
adc_setup.int_adc_controller = 0; // ADC controller
adc_setup.int_adc_bit = ADC_SE15_SINGLE; // pressure sensor location
adc_setup.int_adc_mode = (ADC_CONFIGURE_ADC | ADC_CONFIGURE_CHANNEL | ADC_SINGLE_ENDED_INPUT | ADC_LOOP_MODE ); // single ended configuration in loop mode
adc_setup.int_adc_int_type = 0; // no interrupt
fnConfigureInterrupt((void *)&adc_setup); // configure and start operation
}
static void fnReadPressure(void)
{
int iADC_delay = -1;
ADC_SETUP adc_setup; // interrupt configuration parameters
ADC_RESULTS results;
adc_setup.int_type = ADC_INTERRUPT; // identifier when configuring
adc_setup.int_adc_controller = 0; // ADC controller
adc_setup.int_adc_bit = ADC_SE15_SINGLE; // pressure sensor location
adc_setup.int_adc_result = &results;
adc_setup.int_adc_mode = (ADC_READ_ONLY | ADC_GET_RESULT);
do {
fnConfigureInterrupt((void *)&adc_setup); // get result
iADC_delay++;
} while (results.ucADC_status[ADC_SE15_SINGLE] == ADC_RESULT_NOT_READY); // 'poll until the result is ready
if (results.ucADC_status[ADC_SE15_SINGLE] != ADC_RESULT_NOT_READY) {
fnDebugMsg("ADC value = ");
fnDebugHex(results.sADC_value[ADC_SE15_SINGLE], 2);
fnDebugMsg("\r\n");
}
else {
fnDebugMsg("ADC not ready\r\n");
}
}
fnInitADC() gets run at initialization.
fnReadPressure() gets run periodically from a task every 3 seconds.
MCU = MK64FX512VLL12
Pin 71 = PTC1 (ADC0_SE15) (voltage at the pin varies from 0.5 to 2.5 vdc)
I am trying to read "ad hoc". Is a interrupt handler actually required/recommended?