diff --git a/libraries/ADCInput/src/ADCInput.cpp b/libraries/ADCInput/src/ADCInput.cpp index 4bef59429..1af74ed32 100644 --- a/libraries/ADCInput/src/ADCInput.cpp +++ b/libraries/ADCInput/src/ADCInput.cpp @@ -24,9 +24,9 @@ #include "ADCInput.h" #include -ADCInput::ADCInput(pin_size_t p0, pin_size_t p1, pin_size_t p2, pin_size_t p3) { +ADCInput::ADCInput(pin_size_t p0, pin_size_t p1, pin_size_t p2, pin_size_t p3, pin_size_t p4, pin_size_t p5, pin_size_t p6, pin_size_t p7) { _running = false; - setPins(p0, p1, p2, p3); + setPins(p0, p1, p2, p3, p4, p5, p6, p7); _freq = 48000; _arb = nullptr; _cb = nullptr; @@ -49,19 +49,30 @@ bool ADCInput::setBuffers(size_t buffers, size_t bufferWords) { int ADCInput::_mask(pin_size_t p) { switch (p) { +#if !defined(PICO_RP2350B) case 26: return 1; case 27: return 2; case 28: return 4; case 29: return 8; +#else // Starts at 40 and there are 8 of them + case 40: return 1; + case 41: return 2; + case 42: return 4; + case 43: return 8; + case 44: return 16; + case 45: return 32; + case 46: return 64; + case 47: return 128; +#endif default: return 0; } } -bool ADCInput::setPins(pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3) { +bool ADCInput::setPins(pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3, pin_size_t pin4, pin_size_t pin5, pin_size_t pin6, pin_size_t pin7) { if (_running) { return false; } - _pinMask = _mask(pin0) | _mask(pin1) | _mask(pin2) | _mask(pin3); + _pinMask = _mask(pin0) | _mask(pin1) | _mask(pin2) | _mask(pin3) | _mask(pin4) | _mask(pin5) | _mask(pin6) | _mask(pin7); return true; } @@ -94,10 +105,17 @@ bool ADCInput::begin() { // Set up the GPIOs to go to ADC adc_init(); int cnt = 0; - for (int mask = 1, pin = 26; pin <= 29; mask <<= 1, pin++) { +#if !defined(PICO_RP2350B) + int startpin = 26; + int maxpin = 29; +#else + int startpin = 40; + int maxpin = 47; +#endif + for (int mask = 1, pin = startpin; pin <= maxpin; mask <<= 1, pin++) { if (_pinMask & mask) { if (!cnt) { - adc_select_input(pin - 26); + adc_select_input(pin - startpin); } cnt++; adc_gpio_init(pin); diff --git a/libraries/ADCInput/src/ADCInput.h b/libraries/ADCInput/src/ADCInput.h index 3f34872a4..5eb30e2fe 100644 --- a/libraries/ADCInput/src/ADCInput.h +++ b/libraries/ADCInput/src/ADCInput.h @@ -26,12 +26,12 @@ class ADCInput : public Stream { public: - ADCInput(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255); + ADCInput(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255, pin_size_t pin4 = 255, pin_size_t pin5 = 255, pin_size_t pin6 = 255, pin_size_t pin7 = 255); virtual ~ADCInput(); bool setBuffers(size_t buffers, size_t bufferWords); bool setFrequency(int newFreq); - bool setPins(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255); + bool setPins(pin_size_t pin0, pin_size_t pin1 = 255, pin_size_t pin2 = 255, pin_size_t pin3 = 255, pin_size_t pin4 = 255, pin_size_t pin5 = 255, pin_size_t pin6 = 255, pin_size_t pin7 = 255); bool begin(long sampleRate) { setFrequency(sampleRate);