@@ -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