24
24
#include " ADCInput.h"
25
25
#include < hardware/adc.h>
26
26
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 ) {
28
28
_running = false ;
29
- setPins (p0, p1, p2, p3);
29
+ setPins (p0, p1, p2, p3, p4, p5, p6, p7 );
30
30
_freq = 48000 ;
31
31
_arb = nullptr ;
32
32
_cb = nullptr ;
@@ -49,19 +49,30 @@ bool ADCInput::setBuffers(size_t buffers, size_t bufferWords) {
49
49
50
50
int ADCInput::_mask (pin_size_t p) {
51
51
switch (p) {
52
+ #if !defined(PICO_RP2350B)
52
53
case 26 : return 1 ;
53
54
case 27 : return 2 ;
54
55
case 28 : return 4 ;
55
56
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
56
67
default : return 0 ;
57
68
}
58
69
}
59
70
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 pin4, pin_size_t pin5, pin_size_t pin6, pin_size_t pin7 ) {
61
72
if (_running) {
62
73
return false ;
63
74
}
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) ;
65
76
return true ;
66
77
}
67
78
@@ -94,10 +105,17 @@ bool ADCInput::begin() {
94
105
// Set up the GPIOs to go to ADC
95
106
adc_init ();
96
107
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++) {
98
116
if (_pinMask & mask) {
99
117
if (!cnt) {
100
- adc_select_input (pin - 26 );
118
+ adc_select_input (pin - startpin );
101
119
}
102
120
cnt++;
103
121
adc_gpio_init (pin);
0 commit comments