2424#include " ADCInput.h"
2525#include < hardware/adc.h>
2626
27- ADCInput::ADCInput (pin_size_t p0, pin_size_t p1, pin_size_t p2, pin_size_t p3) {
27+ 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 ) {
2828 _running = false ;
29- setPins (p0, p1, p2, p3);
29+ setPins (p0, p1, p2, p3, p4, p5, p6, p7 );
3030 _freq = 48000 ;
3131 _arb = nullptr ;
3232 _cb = nullptr ;
@@ -49,19 +49,30 @@ bool ADCInput::setBuffers(size_t buffers, size_t bufferWords) {
4949
5050int ADCInput::_mask (pin_size_t p) {
5151 switch (p) {
52+ #if !defined(PICO_RP2350B)
5253 case 26 : return 1 ;
5354 case 27 : return 2 ;
5455 case 28 : return 4 ;
5556 case 29 : return 8 ;
57+ #else // Starts at 40 and there are 8 of them
58+ case 40 : return 1 ;
59+ case 41 : return 2 ;
60+ case 42 : return 4 ;
61+ case 43 : return 8 ;
62+ case 44 : return 16 ;
63+ case 45 : return 32 ;
64+ case 46 : return 64 ;
65+ case 47 : return 128 ;
66+ #endif
5667 default : return 0 ;
5768 }
5869}
5970
60- bool ADCInput::setPins (pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3) {
71+ bool ADCInput::setPins (pin_size_t pin0, pin_size_t pin1, pin_size_t pin2, pin_size_t pin3, pin_size_t p4, pin_size_t p5, pin_size_t p6, pin_size_t p7 ) {
6172 if (_running) {
6273 return false ;
6374 }
64- _pinMask = _mask (pin0) | _mask (pin1) | _mask (pin2) | _mask (pin3);
75+ _pinMask = _mask (pin0) | _mask (pin1) | _mask (pin2) | _mask (pin3) | _mask (pin4) | _mask (pin5) | _mask (pin6) | _mask (pin7) ;
6576 return true ;
6677}
6778
@@ -94,10 +105,17 @@ bool ADCInput::begin() {
94105 // Set up the GPIOs to go to ADC
95106 adc_init ();
96107 int cnt = 0 ;
97- for (int mask = 1 , pin = 26 ; pin <= 29 ; mask <<= 1 , pin++) {
108+ #if !defined(PICO_RP2350B)
109+ int startpin = 26 ;
110+ int maxpin = 29 ;
111+ #else
112+ int startpin = 40 ;
113+ int maxpin = 47 ;
114+ #endif
115+ for (int mask = 1 , pin = startpin; pin <= maxpin; mask <<= 1 , pin++) {
98116 if (_pinMask & mask) {
99117 if (!cnt) {
100- adc_select_input (pin - 26 );
118+ adc_select_input (pin - startpin );
101119 }
102120 cnt++;
103121 adc_gpio_init (pin);
0 commit comments