|
20 | 20 | #include "Arduino.h"
|
21 | 21 | #include "HALConfig.h"
|
22 | 22 | #include "AdvancedADC.h"
|
| 23 | +#if __has_include("pure_analog_pins.h") |
| 24 | +#include "pure_analog_pins.h" |
| 25 | +#endif |
| 26 | + |
| 27 | +#if __has_include("pure_analog_pins.h") |
| 28 | +template <> |
| 29 | +PinName AdvancedADC::_toPinName(PureAnalogPin p) { |
| 30 | + extern AnalogPinDescription g_pureAAnalogPinDescription[]; |
| 31 | + return g_pureAAnalogPinDescription[p.get()].name; |
| 32 | +} |
| 33 | +#endif |
23 | 34 |
|
24 | 35 | #define ADC_NP ((ADCName) NC)
|
25 | 36 | #define ADC_PIN_ALT_MASK (uint32_t) (ALT0 | ALT1 )
|
@@ -237,6 +248,23 @@ int AdvancedADC::begin(uint32_t resolution, uint32_t sample_rate, size_t n_sampl
|
237 | 248 | return 1;
|
238 | 249 | }
|
239 | 250 |
|
| 251 | +#if __has_include("pure_analog_pins.h") |
| 252 | +int AdvancedADC::begin(uint32_t resolution, uint32_t sample_rate, size_t n_samples, |
| 253 | + size_t n_buffers, size_t n_pins, PureAnalogPin *pins, |
| 254 | + bool start, adc_sample_time_t sample_time) { |
| 255 | + if (n_pins > AN_MAX_ADC_CHANNELS) { |
| 256 | + n_pins = AN_MAX_ADC_CHANNELS; |
| 257 | + } |
| 258 | + |
| 259 | + for (size_t i = 0; i < n_pins; ++i) { |
| 260 | + adc_pins[i] = _toPinName(pins[i]); |
| 261 | + } |
| 262 | + |
| 263 | + n_channels = n_pins; |
| 264 | + return begin(resolution, sample_rate, n_samples, n_buffers, start, sample_time); |
| 265 | +} |
| 266 | +#endif |
| 267 | + |
240 | 268 | int AdvancedADC::start(uint32_t sample_rate){
|
241 | 269 | // Initialize and configure the ADC timer.
|
242 | 270 | hal_tim_config(&descr->tim, sample_rate);
|
|
0 commit comments