@@ -124,6 +124,10 @@ writePort(port, value, bitmask): Write an 8 bit port.
124
124
* Board Specific Configuration
125
125
*============================================================================*/
126
126
127
+ #ifndef digitalPinHasPWM
128
+ #define digitalPinHasPWM (p ) IS_PIN_DIGITAL(p)
129
+ #endif
130
+
127
131
// Arduino Duemilanove, Diecimila, and NG
128
132
#if defined(__AVR_ATmega168__ ) || defined(__AVR_ATmega328P__ )
129
133
#if defined(NUM_ANALOG_INPUTS ) && NUM_ANALOG_INPUTS == 6
@@ -136,7 +140,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
136
140
#define VERSION_BLINK_PIN 13
137
141
#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
138
142
#define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS)
139
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
143
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
140
144
#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
141
145
#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
142
146
#define PIN_TO_DIGITAL (p ) (p)
@@ -151,7 +155,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
151
155
#define VERSION_BLINK_PIN WLED
152
156
#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
153
157
#define IS_PIN_ANALOG (p ) ((p) >= FIRST_ANALOG_PIN && (p) < (FIRST_ANALOG_PIN+TOTAL_ANALOG_PINS))
154
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
158
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
155
159
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
156
160
#define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
157
161
#define PIN_TO_DIGITAL (p ) (p)
@@ -167,7 +171,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
167
171
#define VERSION_BLINK_PIN 13
168
172
#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
169
173
#define IS_PIN_ANALOG (p ) ((p) >= 14 && (p) <= 19)
170
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
174
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
171
175
#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
172
176
#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
173
177
#define PIN_TO_DIGITAL (p ) (p)
@@ -178,13 +182,13 @@ writePort(port, value, bitmask): Write an 8 bit port.
178
182
179
183
180
184
// Arduino Mega
181
- #elif defined(__AVR_ATmega1280__ )
185
+ #elif defined(__AVR_ATmega1280__ ) || defined( __AVR_ATmega2560__ )
182
186
#define TOTAL_ANALOG_PINS 16
183
187
#define TOTAL_PINS 70 // 54 digital + 16 analog
184
188
#define VERSION_BLINK_PIN 13
185
189
#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
186
190
#define IS_PIN_ANALOG (p ) ((p) >= 54 && (p) < TOTAL_PINS)
187
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
191
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
188
192
#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
189
193
#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21)
190
194
#define PIN_TO_DIGITAL (p ) (p)
@@ -200,7 +204,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
200
204
#define VERSION_BLINK_PIN 6
201
205
#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
202
206
#define IS_PIN_ANALOG (p ) (0)
203
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
207
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
204
208
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
205
209
#define IS_PIN_I2C (p ) (0)
206
210
#define PIN_TO_DIGITAL (p ) (p)
@@ -216,7 +220,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
216
220
#define VERSION_BLINK_PIN 11
217
221
#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
218
222
#define IS_PIN_ANALOG (p ) ((p) >= 11 && (p) <= 22)
219
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
223
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
220
224
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
221
225
#define IS_PIN_I2C (p ) ((p) == 5 || (p) == 6)
222
226
#define PIN_TO_DIGITAL (p ) (p)
@@ -232,7 +236,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
232
236
#define VERSION_BLINK_PIN 6
233
237
#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
234
238
#define IS_PIN_ANALOG (p ) ((p) >= 38 && (p) < TOTAL_PINS)
235
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
239
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
236
240
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
237
241
#define IS_PIN_I2C (p ) ((p) == 0 || (p) == 1)
238
242
#define PIN_TO_DIGITAL (p ) (p)
@@ -248,7 +252,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
248
252
#define VERSION_BLINK_PIN 0
249
253
#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
250
254
#define IS_PIN_ANALOG (p ) ((p) >= 24 && (p) < TOTAL_PINS)
251
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
255
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
252
256
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
253
257
#define IS_PIN_I2C (p ) ((p) == 16 || (p) == 17)
254
258
#define PIN_TO_DIGITAL (p ) (p)
@@ -264,7 +268,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
264
268
#define VERSION_BLINK_PIN 13
265
269
#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
266
270
#define IS_PIN_ANALOG (p ) ((p) >= 36 && (p) < TOTAL_PINS)
267
- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
271
+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
268
272
#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
269
273
#define IS_PIN_I2C (p ) ((p) == 4 || (p) == 5)
270
274
#define PIN_TO_DIGITAL (p ) (p)
0 commit comments