@@ -124,6 +124,10 @@ writePort(port, value, bitmask): Write an 8 bit port.
124124 * Board Specific Configuration
125125 *============================================================================*/
126126
127+ #ifndef digitalPinHasPWM
128+ #define digitalPinHasPWM (p ) IS_PIN_DIGITAL(p)
129+ #endif
130+
127131// Arduino Duemilanove, Diecimila, and NG
128132#if defined(__AVR_ATmega168__ ) || defined(__AVR_ATmega328P__ )
129133#if defined(NUM_ANALOG_INPUTS ) && NUM_ANALOG_INPUTS == 6
@@ -136,7 +140,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
136140#define VERSION_BLINK_PIN 13
137141#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
138142#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)
140144#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
141145#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
142146#define PIN_TO_DIGITAL (p ) (p)
@@ -151,7 +155,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
151155#define VERSION_BLINK_PIN WLED
152156#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
153157#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)
155159#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
156160#define IS_PIN_I2C (p ) ((p) == SDA || (p) == SCL)
157161#define PIN_TO_DIGITAL (p ) (p)
@@ -167,7 +171,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
167171#define VERSION_BLINK_PIN 13
168172#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) <= 19)
169173#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)
171175#define IS_PIN_SERVO (p ) (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
172176#define IS_PIN_I2C (p ) ((p) == 18 || (p) == 19)
173177#define PIN_TO_DIGITAL (p ) (p)
@@ -178,13 +182,13 @@ writePort(port, value, bitmask): Write an 8 bit port.
178182
179183
180184// Arduino Mega
181- #elif defined(__AVR_ATmega1280__ )
185+ #elif defined(__AVR_ATmega1280__ ) || defined( __AVR_ATmega2560__ )
182186#define TOTAL_ANALOG_PINS 16
183187#define TOTAL_PINS 70 // 54 digital + 16 analog
184188#define VERSION_BLINK_PIN 13
185189#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
186190#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)
188192#define IS_PIN_SERVO (p ) ((p) >= 2 && (p) - 2 < MAX_SERVOS)
189193#define IS_PIN_I2C (p ) ((p) == 20 || (p) == 21)
190194#define PIN_TO_DIGITAL (p ) (p)
@@ -200,7 +204,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
200204#define VERSION_BLINK_PIN 6
201205#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
202206#define IS_PIN_ANALOG (p ) (0)
203- #define IS_PIN_PWM (p ) IS_PIN_DIGITAL (p)
207+ #define IS_PIN_PWM (p ) digitalPinHasPWM (p)
204208#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
205209#define IS_PIN_I2C (p ) (0)
206210#define PIN_TO_DIGITAL (p ) (p)
@@ -216,7 +220,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
216220#define VERSION_BLINK_PIN 11
217221#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
218222#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)
220224#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
221225#define IS_PIN_I2C (p ) ((p) == 5 || (p) == 6)
222226#define PIN_TO_DIGITAL (p ) (p)
@@ -232,7 +236,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
232236#define VERSION_BLINK_PIN 6
233237#define IS_PIN_DIGITAL (p ) ((p) >= 0 && (p) < TOTAL_PINS)
234238#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)
236240#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
237241#define IS_PIN_I2C (p ) ((p) == 0 || (p) == 1)
238242#define PIN_TO_DIGITAL (p ) (p)
@@ -248,7 +252,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
248252#define VERSION_BLINK_PIN 0
249253#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
250254#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)
252256#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
253257#define IS_PIN_I2C (p ) ((p) == 16 || (p) == 17)
254258#define PIN_TO_DIGITAL (p ) (p)
@@ -264,7 +268,7 @@ writePort(port, value, bitmask): Write an 8 bit port.
264268#define VERSION_BLINK_PIN 13
265269#define IS_PIN_DIGITAL (p ) ((p) >= 2 && (p) < TOTAL_PINS)
266270#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)
268272#define IS_PIN_SERVO (p ) ((p) >= 0 && (p) < MAX_SERVOS)
269273#define IS_PIN_I2C (p ) ((p) == 4 || (p) == 5)
270274#define PIN_TO_DIGITAL (p ) (p)
0 commit comments