rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
AdcDevice.h
Go to the documentation of this file.
1/**
2 * @file AdcDevice.h
3 *
4 * @date May 3, 2014
5 * @author Andrey Belomutskiy, (c) 2012-2020
6 */
7
8#pragma once
9
10#if HAL_USE_ADC
11
12#ifndef ADC_MAX_CHANNELS_COUNT
13#define ADC_MAX_CHANNELS_COUNT 16
14#endif /* ADC_MAX_CHANNELS_COUNT */
15
16#ifndef SLOW_ADC_CHANNEL_COUNT
17#ifdef ADC_MUX_PIN
18#define SLOW_ADC_CHANNEL_COUNT 32
19#else // not ADC_MUX_PIN
20#define SLOW_ADC_CHANNEL_COUNT 16
21#endif // def ADC_MUX_PIN
22#endif // SLOW_ADC_CHANNEL_COUNT
23
24class AdcDevice {
25public:
26 explicit AdcDevice(ADCDriver *p_adcp, ADCConversionGroup* p_hwConfig, volatile adcsample_t *p_buf, size_t p_depth);
27 int enableChannel(adc_channel_e hwChannel);
28 /* Should be called from ISR context */
29 void startConversionI(void);
33 {
34 /* TODO: validate token? */
35
36 /* TODO: in case depth > 1 this will return random (not last) sample */
37 return samples[token];
38 };
40 int size() const;
41 void init(void);
42
43private:
44 ADCDriver *adcp;
45 ADCConversionGroup* hwConfig;
47 size_t depth;
48 uint8_t internalAdcIndexByHardwareIndex[EFI_ADC_TOTAL_CHANNELS];
49 /**
50 * Number of ADC channels in use
51 */
52 size_t channelCount = 0;
53};
54
55#endif /* HAL_USE_ADC */
56
uint32_t AdcToken
Definition adc_inputs.h:103
void startConversionI(void)
size_t depth
Definition AdcDevice.h:47
uint8_t internalAdcIndexByHardwareIndex[EFI_ADC_TOTAL_CHANNELS]
Definition AdcDevice.h:48
int size() const
adc_channel_e getAdcChannelByInternalIndex(int index) const
AdcToken getAdcChannelToken(adc_channel_e hwChannel)
int enableChannel(adc_channel_e hwChannel)
ADCConversionGroup * hwConfig
Definition AdcDevice.h:45
size_t channelCount
Definition AdcDevice.h:52
adcsample_t getAvgAdcValue(adc_channel_e hwChannel)
adcsample_t getAdcValueByToken(AdcToken token)
Definition AdcDevice.h:32
volatile adcsample_t * samples
Definition AdcDevice.h:46
ADCDriver * adcp
Definition AdcDevice.h:44
uint16_t adcsample_t
ADC sample data type.