#include "adc.h" #include "ti/driverlib/dl_adc12.h" #include "ti_msp_dl_config.h" #include "src/battery_data/battery.h" // A0 PA27 // A1 PA26 // A2 PA25 // A3 PA24 // A4 PA16 const uint8_t measurement_channels[4] = { DL_ADC12_INPUT_CHAN_0, DL_ADC12_INPUT_CHAN_1, DL_ADC12_INPUT_CHAN_2, DL_ADC12_INPUT_CHAN_3 }; uint8_t ch=0; uint16_t measurement_results[4] = { 0, 0, 0, 0 }; void ADC12_0_INST_IRQHandler(void) { uint32_t irqval = DL_ADC12_getPendingInterrupt(ADC12_0_INST); printf("irqval: %d", irqval); switch (irqval) { case DL_ADC12_IIDX_MEM0_RESULT_LOADED: measurement_results[ch] = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0)*3300/4096; if (ch == 1) { slot.measurement.voltage = (measurement_results[1]-measurement_results[0])*(56+100)/56; } if (++ch == 4) { ch = 0; } DL_ADC12_stopConversion(ADC12_0_INST); DL_ADC12_configConversionMem(ADC12_0_INST, ADC12_0_ADCMEM_0, measurement_channels[ch], DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_ENABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); DL_ADC12_enableConversions(ADC12_0_INST); DL_ADC12_startConversion(ADC12_0_INST); break; default: break; } }