| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #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;
- }
- }
|