@@ -19,6 +19,8 @@ void pinMode(PinName pinNumber, PinMode mode) {
19
19
return;
20
20
}
21
21
22
+ if (pinNumber & DUAL_PAD) return;
23
+
22
24
if (mode == INPUT) { // input mode
23
25
gpio_pin_configure(arduino_ports[pinNumber >> 4].port, pinNumber & 0xf,
24
26
GPIO_INPUT | GPIO_ACTIVE_HIGH);
@@ -35,20 +37,33 @@ void pinMode(PinName pinNumber, PinMode mode) {
35
37
}
36
38
37
39
void digitalWrite(PinName pinNumber, PinStatus status) {
40
+ if (pinNumber & DUAL_PAD) return;
38
41
gpio_pin_set(arduino_ports[pinNumber >> 4].port, pinNumber & 0xf, status);
39
42
}
40
43
41
44
42
45
PinStatus digitalRead(PinName pinNumber) {
46
+ if (pinNumber & DUAL_PAD) return LOW;
43
47
return (gpio_pin_get(arduino_ports[pinNumber >> 4].port, pinNumber & 0xf) == 1) ? HIGH : LOW;
44
48
}
45
49
46
50
int analogRead(PinName pinNumber) {
47
51
// Not sure what to do here, does anyone do something like:
48
52
// analogRead(PA_0c); or analogRead(PC2_ALT0)?
49
53
// first pass only support ones on pins.
54
+ if (pinNumber & DUAL_PAD) {
55
+ switch (pinNumber & 0xf) {
56
+ case 0: Serial.print("<A0>"); return analogRead(A0);
57
+ case 1: Serial.print("<A1>"); return analogRead(A1);
58
+ case 2: Serial.print("<A2>"); return analogRead(A2);
59
+ case 3: Serial.print("<A3>"); return analogRead(A3);
60
+ default: return -1;
61
+ }
62
+
63
+ }
50
64
int pin_index = PinNameToIndex(pinNumber);
51
65
if (pin_index != -1) {
66
+ Serial.write('<'); Serial.print(pin_index); Serial.write('>');
52
67
return analogRead(pin_index);
53
68
}
54
69
return -1;
@@ -57,6 +72,7 @@ int analogRead(PinName pinNumber) {
57
72
58
73
void analogWrite(PinName pinNumber, int value) {
59
74
// first pass only support ones on pins.
75
+ if (pinNumber & DUAL_PAD) return;
60
76
int pin_index = PinNameToIndex(pinNumber);
61
77
if (pin_index != -1) {
62
78
analogWrite(pin_index, value);
@@ -66,6 +82,7 @@ void analogWrite(PinName pinNumber, int value) {
66
82
67
83
68
84
int PinNameToIndex(PinName P) {
85
+ if (P & DUAL_PAD) return -1;
69
86
for (size_t i = 0; i < ARRAY_SIZE(arduino_pins); i++) {
70
87
if ((arduino_ports[P >> 4].port == arduino_pins[i].port) && ((P & 0xf) == arduino_pins[i].pin)) {
71
88
return i;
0 commit comments