adc.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "src/battery.h"
  2. #include "src/interfaces/i2c_controller_interface.h"
  3. #include "ti/driverlib/dl_i2c.h"
  4. #include "ti/driverlib/m0p/dl_core.h"
  5. #include "ti_msp_dl_config.h"
  6. #include "src/peripherals/adc/adc.h"
  7. #include <stdint.h>
  8. #include <stdio.h>
  9. #include "src/peripherals/adc/adc_interface.h"
  10. static ADC_Params adc_params;
  11. static ADC_MeasurementState adc_state = ADC_STATE_CONFIGURE;
  12. void updateADCReading_multichannel(uint8_t slot, uint8_t channel) {
  13. while (adc_state != ADC_STATE_DONE) {
  14. switch (adc_state) {
  15. case ADC_STATE_CONFIGURE:
  16. adc_params.channel = channel;
  17. //printf("Channel: %d\n", adc_params.channel);
  18. adc_params.resolution = 12;
  19. adc_params.continuous = 0;
  20. adc_params.gain = 1;
  21. adc_hal.configure(slot, adc_params);
  22. //ADC_SetConfigurationBytes(adc_params);
  23. adc_state = ADC_STATE_WAIT;
  24. break;
  25. case ADC_STATE_WAIT:
  26. //if (ADC_CheckReadyBit(slot, adc_params)) {
  27. if(adc_hal.is_ready(slot, adc_params)){
  28. adc_state = ADC_STATE_READ;
  29. }
  30. break;
  31. case ADC_STATE_READ:
  32. if (channel == 0) {
  33. int16_t raw_adc_voltage = adc_hal.read_raw(slot, adc_params);
  34. batteries[slot].voltage =
  35. adc_hal.convert_voltage(raw_adc_voltage, adc_params);
  36. printf("[ADC] Battery voltage for slot %d is %u mV.\n", slot,
  37. batteries[slot].voltage);
  38. adc_state = ADC_STATE_DONE;
  39. } else if (channel == 1) {
  40. int16_t raw_adc_current = adc_hal.read_raw(slot, adc_params);
  41. batteries[slot].current =
  42. adc_hal.convert_current(raw_adc_current, adc_params);
  43. printf("[ADC] Battery current for slot %d is %u mA.\n", slot,
  44. batteries[slot].current);
  45. adc_state = ADC_STATE_DONE;
  46. }
  47. break;
  48. default:
  49. channel = 0;
  50. adc_state = ADC_STATE_CONFIGURE;
  51. break;
  52. }
  53. }
  54. adc_state = ADC_STATE_CONFIGURE;
  55. }