123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- * adc_global.h
- *
- * Created on: Jan 12, 2021
- * Author: David Original work by Jose (PTDreamer), 2017
- */
- #ifndef GENERALIO_ADC_GLOBAL_H_
- #define GENERALIO_ADC_GLOBAL_H_
- #include "main.h"
- typedef struct{
- volatile uint16_t *adc_buffer; // Ptr to ADC buffer data
- volatile uint16_t prev_avg;
- volatile uint16_t last_avg; // Filtered (EMA calculation)
- volatile uint16_t prev_raw;
- volatile uint16_t last_raw; // Unfiltered, for quick Iron detection
- volatile uint32_t EMA_of_Input; // Stored filter data (acumulator for EMA)
- } ADCDataTypeDef_t;
- typedef struct {
- #ifdef ADC_1st
- uint16_t ADC_1st;
- #endif
- #ifdef ADC_2nd
- uint16_t ADC_2nd;
- #endif
- #ifdef ADC_3rd
- uint16_t ADC_3rd;
- #endif
- #ifdef ADC_4th
- uint16_t ADC_4th;
- #endif
- } adc_measures_t;
- extern volatile ADCDataTypeDef_t TIP;
- #ifdef USE_VIN
- extern volatile ADCDataTypeDef_t VIN;
- #endif
- #ifdef USE_NTC
- extern volatile ADCDataTypeDef_t NTC;
- #endif
- #ifdef USE_VREF
- extern volatile ADCDataTypeDef_t VREF;
- #endif
- typedef enum { ADC_Idle, ADC_Waiting, ADC_Sampling } ADC_Status_t;
- extern volatile ADC_Status_t ADC_Status;
- extern volatile uint16_t Tip_measures[ADC_BFSIZ];
- extern volatile adc_measures_t adc_measures[ADC_BFSIZ];
- uint16_t ADC_to_mV (uint16_t adc);
- void handle_ADC_Data(void);
- void DoAverage(volatile ADCDataTypeDef_t* InputData);
- void DEMA_Filter(ADCDataTypeDef_t* InputData);
- void ADC_Init(ADC_HandleTypeDef *adc);
- uint8_t ADC_Cal(void);
- void ADC_Stop_DMA(void);
- void ADC_Start_DMA(void);
- void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* _hadc);
- #endif /* GENERALIO_ADC_GLOBAL_H_ */
|