Skip to content

Commit 6d87c64

Browse files
committed
Fix: There's a need to convert from a GPIO number to ADC channel number.
1 parent 47cfb64 commit 6d87c64

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

src/utility/nano_rp2040_support.cpp

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,43 +30,42 @@
3030
* FUNCTION DEFINITION
3131
******************************************************************************/
3232

33+
uint8_t toAnalogPin(NinaPin pin)
34+
{
35+
if (pin == A4) return 6; /* ADC1 - CH6 */
36+
else if (pin == A5) return 3; /* ADC1 - CH3 */
37+
else if (pin == A6) return 0; /* ADC1 - CH0 */
38+
else if (pin == A7) return 7; /* ADC1 - CH7 */
39+
else return 0xFF;
40+
}
41+
3342
void pinMode(NinaPin pin, PinMode mode)
3443
{
35-
WiFiDrv::wifiDriverInit();
36-
Serial.print(__FUNCTION__);
37-
Serial.print(": pin = ");
38-
Serial.print(pin);
39-
Serial.print(", mode = ");
40-
Serial.println(mode);
4144
WiFiDrv::pinMode(static_cast<uint8_t>(pin), static_cast<uint8_t>(mode));
4245
}
4346

4447
PinStatus digitalRead(NinaPin pin)
4548
{
46-
WiFiDrv::wifiDriverInit();
4749
return WiFiDrv::digitalRead(static_cast<uint8_t>(pin));
4850
}
4951

5052
void digitalWrite(NinaPin pin, PinStatus value)
5153
{
52-
WiFiDrv::wifiDriverInit();
53-
Serial.print(__FUNCTION__);
54-
Serial.print(": pin = ");
55-
Serial.print(pin);
56-
Serial.print(", value = ");
57-
Serial.println(value);
5854
WiFiDrv::digitalWrite(static_cast<uint8_t>(pin), static_cast<uint8_t>(value));
5955
}
6056

6157
int analogRead(NinaPin pin)
6258
{
63-
WiFiDrv::wifiDriverInit();
64-
return WiFiDrv::analogRead(static_cast<uint8_t>(pin));
59+
uint8_t const adc_channel = toAnalogPin(pin);
60+
61+
if (adc_channel == 0xFF)
62+
return 0;
63+
else
64+
return WiFiDrv::analogRead(adc_channel);
6565
}
6666

6767
void analogWrite(NinaPin pin, int value)
6868
{
69-
WiFiDrv::wifiDriverInit();
7069
WiFiDrv::analogWrite(static_cast<uint8_t>(pin), static_cast<uint8_t>(value));
7170
}
7271

src/utility/wifi_drv.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,12 +1119,12 @@ void WiFiDrv::digitalWrite(uint8_t pin, uint8_t value)
11191119
SpiDrv::spiSlaveDeselect();
11201120
}
11211121

1122-
uint16_t WiFiDrv::analogRead(uint8_t pin)
1122+
uint16_t WiFiDrv::analogRead(uint8_t adc_channel)
11231123
{
11241124
WAIT_FOR_SLAVE_SELECT();
11251125
// Send Command
11261126
SpiDrv::sendCmd(GET_ANALOG_READ, PARAM_NUMS_1);
1127-
SpiDrv::sendParam((uint8_t*)&pin, 1, LAST_PARAM);
1127+
SpiDrv::sendParam((uint8_t*)&adc_channel, 1, LAST_PARAM);
11281128

11291129
// pad to multiple of 4
11301130
SpiDrv::readChar();

src/utility/wifi_drv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ class WiFiDrv
292292
static void pinMode(uint8_t pin, uint8_t mode);
293293
static PinStatus digitalRead(uint8_t pin);
294294
static void digitalWrite(uint8_t pin, uint8_t value);
295-
static uint16_t analogRead(uint8_t pin);
295+
static uint16_t analogRead(uint8_t adc_channel);
296296
static void analogWrite(uint8_t pin, uint8_t value);
297297

298298
static int8_t downloadFile(const char* url, uint8_t url_len, const char *filename, uint8_t filename_len);

0 commit comments

Comments
 (0)