#ifndef ADC_H_ #include "ti/driverlib/dl_i2c.h" #include "ti_msp_dl_config.h" #include "battery.h" #define ADC_TARGET_BASE_ADDRESS (0x68) #define ADC_VREF_MV (2048) #define DELAY (100000) //define timeout limit //defining the configurations //Maximum packet sizes #define I2C_TX_MAX_PACKET_SIZE (16) #define I2C_RX_MAX_PACKET_SIZE (16) //Flag for READ and WRITE extern volatile bool gRxComplete; extern volatile bool gTxComplete; extern uint8_t gTxPacket[I2C_TX_MAX_PACKET_SIZE]; extern uint8_t gRxPacket[I2C_RX_MAX_PACKET_SIZE]; /*Counters for Tx and Rx length and bytes sent*/ extern uint32_t gTxADClen, gTxADCcount; extern uint32_t gRxADClen, gRxADCcount; //ADC states typedef enum{ ADC_STATE_CONFIGURE, ADC_STATE_WAIT, ADC_STATE_READ, ADC_STATE_DONE }ADC_MeasurementState; typedef struct{ uint8_t channel; uint8_t resolution; bool continuous; uint8_t gain; } ADC_PARAMS; uint8_t ADC_ConstructConfigBytes(ADC_PARAMS params); void ADC_SetConfigurationBytes(ADC_PARAMS params); bool ADC_CheckReadyBit(uint8_t slot_id, ADC_PARAMS params); int16_t ADC_ReadData(uint8_t slot_id, ADC_PARAMS params); void Battery_UpdateVoltage(ADC_PARAMS params); void Battery_UpdateCurrent(ADC_PARAMS params); void Battery_UpdateADCReading(uint8_t slot, uint8_t channel); #endif