|
@@ -20,10 +20,10 @@
|
20
|
20
|
*
|
21
|
21
|
*/
|
22
|
22
|
|
23
|
|
-#ifndef __HAL_PINMAPPING_H__
|
24
|
|
-#define __HAL_PINMAPPING_H__
|
|
23
|
+#ifndef _PINMAPPING_H_
|
|
24
|
+#define _PINMAPPING_H_
|
25
|
25
|
|
26
|
|
-#include "../../core/macros.h"
|
|
26
|
+#include "../../inc/MarlinConfigPre.h"
|
27
|
27
|
|
28
|
28
|
#include <stdint.h>
|
29
|
29
|
|
|
@@ -94,6 +94,7 @@ typedef int16_t pin_t;
|
94
|
94
|
#define INTERRUPT(b) BOOL_(b)
|
95
|
95
|
#define PWM(b) BOOL_(b)
|
96
|
96
|
|
|
97
|
+// Combine elements into pin bits: 0b00AAAAWIPPPNNNNN
|
97
|
98
|
#define LPC1768_PIN_(port, pin, int, pwm, adc) 0b00##adc##pwm##int##port##pin
|
98
|
99
|
#define LPC1768_PIN(port, pin, int, pwm, adc) LPC1768_PIN_(port, pin, int, pwm, adc)
|
99
|
100
|
|
|
@@ -106,7 +107,7 @@ constexpr int8_t LPC1768_PIN_ADC(const pin_t pin) { return (int8_t)((pin >> 10)
|
106
|
107
|
// ******************
|
107
|
108
|
// Runtime pinmapping
|
108
|
109
|
// ******************
|
109
|
|
-#define P_NC -1
|
|
110
|
+#define P_NC -1
|
110
|
111
|
|
111
|
112
|
#if SERIAL_PORT != 3
|
112
|
113
|
#define P0_00 LPC1768_PIN(PORT(0), PIN( 0), INTERRUPT(1), PWM(0), ADC_NONE)
|
|
@@ -187,97 +188,95 @@ constexpr int8_t LPC1768_PIN_ADC(const pin_t pin) { return (int8_t)((pin >> 10)
|
187
|
188
|
#define P4_28 LPC1768_PIN(PORT(4), PIN(28), INTERRUPT(0), PWM(0), ADC_NONE)
|
188
|
189
|
#define P4_29 LPC1768_PIN(PORT(4), PIN(29), INTERRUPT(0), PWM(0), ADC_NONE)
|
189
|
190
|
|
190
|
|
-constexpr bool VALID_PIN(const pin_t p) {
|
191
|
|
- return (
|
192
|
|
- #if SERIAL_PORT == 0
|
193
|
|
- (LPC1768_PIN_PORT(p) == 0 && LPC1768_PIN_PIN(p) <= 1) ||
|
194
|
|
- (LPC1768_PIN_PORT(p) == 0 && WITHIN(LPC1768_PIN_PIN(p), 4, 11)) ||
|
195
|
|
- #elif SERIAL_PORT == 2
|
196
|
|
- (LPC1768_PIN_PORT(p) == 0 && LPC1768_PIN_PIN(p) <= 9) ||
|
197
|
|
- #elif SERIAL_PORT == 3
|
198
|
|
- (LPC1768_PIN_PORT(p) == 0 && WITHIN(LPC1768_PIN_PIN(p), 2, 11)) ||
|
199
|
|
- #else
|
200
|
|
- (LPC1768_PIN_PORT(p) == 0 && LPC1768_PIN_PIN(p) <= 11) ||
|
201
|
|
- #endif
|
202
|
|
- #if SERIAL_PORT == 1
|
203
|
|
- (LPC1768_PIN_PORT(p) == 0 && WITHIN(LPC1768_PIN_PIN(p), 17, 30)) ||
|
204
|
|
- #else
|
205
|
|
- (LPC1768_PIN_PORT(p) == 0 && WITHIN(LPC1768_PIN_PIN(p), 15, 30)) ||
|
206
|
|
- #endif
|
207
|
|
- (LPC1768_PIN_PORT(p) == 1 && LPC1768_PIN_PIN(p) == 1) ||
|
208
|
|
- (LPC1768_PIN_PORT(p) == 1 && LPC1768_PIN_PIN(p) == 4) ||
|
209
|
|
- (LPC1768_PIN_PORT(p) == 1 && WITHIN(LPC1768_PIN_PIN(p), 8, 10)) ||
|
210
|
|
- (LPC1768_PIN_PORT(p) == 1 && WITHIN(LPC1768_PIN_PIN(p), 14, 31)) ||
|
211
|
|
- (LPC1768_PIN_PORT(p) == 2 && LPC1768_PIN_PIN(p) <= 13) ||
|
212
|
|
- (LPC1768_PIN_PORT(p) == 3 && WITHIN(LPC1768_PIN_PIN(p), 25, 26)) ||
|
213
|
|
- (LPC1768_PIN_PORT(p) == 4 && WITHIN(LPC1768_PIN_PIN(p), 28, 29))
|
214
|
|
- );
|
215
|
|
-}
|
216
|
|
-
|
217
|
|
-constexpr bool PWM_PIN(const pin_t p) {
|
218
|
|
- return (VALID_PIN(p) && LPC1768_PIN_PWM(p));
|
219
|
|
-}
|
220
|
|
-
|
221
|
|
-constexpr bool INTERRUPT_PIN(const pin_t p) {
|
222
|
|
- return (VALID_PIN(p) && LPC1768_PIN_INTERRUPT(p));
|
223
|
|
-}
|
224
|
|
-
|
225
|
|
-#if SERIAL_PORT == 0
|
226
|
|
- #define NUM_ANALOG_INPUTS 6
|
227
|
|
-#else
|
228
|
|
- #define NUM_ANALOG_INPUTS 8
|
229
|
|
-#endif
|
230
|
|
-
|
231
|
|
-constexpr pin_t adc_pin_table[] = {
|
232
|
|
- P0_23, P0_24, P0_25, P0_26, P1_30, P1_31,
|
233
|
|
- #if SERIAL_PORT != 0
|
234
|
|
- P0_03, P0_02
|
235
|
|
- #endif
|
236
|
|
-};
|
237
|
|
-
|
238
|
|
-constexpr pin_t analogInputToDigitalPin(const uint8_t p) {
|
239
|
|
- return (p < COUNT(adc_pin_table) ? adc_pin_table[p] : P_NC);
|
240
|
|
-}
|
241
|
|
-
|
242
|
|
-constexpr int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
|
243
|
|
- return (VALID_PIN(p) ? LPC1768_PIN_ADC(p) : -1);
|
244
|
|
-}
|
245
|
|
-
|
246
|
|
-// P0.6 thru P0.9 are for the onboard SD card
|
247
|
|
-// P0.29 and P0.30 are for the USB port
|
248
|
|
-#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09, P0_29, P0_30
|
249
|
|
-
|
250
|
|
-// Pin map for M43 and M226
|
251
|
|
-const pin_t pin_map[] = {
|
|
191
|
+// Pin index for M43 and M226
|
|
192
|
+constexpr pin_t pin_map[] = {
|
252
|
193
|
#if SERIAL_PORT != 3
|
253
|
194
|
P0_00, P0_01,
|
|
195
|
+ #else
|
|
196
|
+ P_NC, P_NC,
|
254
|
197
|
#endif
|
255
|
198
|
#if SERIAL_PORT != 0
|
256
|
|
- P0_02, P0_03,
|
|
199
|
+ P0_02, P0_03,
|
|
200
|
+ #else
|
|
201
|
+ P_NC, P_NC,
|
257
|
202
|
#endif
|
258
|
|
- P0_04, P0_05, P0_06, P0_07, P0_08, P0_09,
|
|
203
|
+ P0_04, P0_05, P0_06, P0_07,
|
|
204
|
+ P0_08, P0_09,
|
259
|
205
|
#if SERIAL_PORT != 2
|
260
|
|
- P0_10, P0_11,
|
|
206
|
+ P0_10, P0_11,
|
|
207
|
+ #else
|
|
208
|
+ P_NC, P_NC,
|
261
|
209
|
#endif
|
|
210
|
+ P_NC, P_NC, P_NC,
|
262
|
211
|
#if SERIAL_PORT != 1
|
263
|
|
- P0_15, P0_16,
|
|
212
|
+ P0_15,
|
|
213
|
+ P0_16,
|
|
214
|
+ #else
|
|
215
|
+ P_NC,
|
|
216
|
+ P_NC,
|
264
|
217
|
#endif
|
265
|
|
- P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23, P0_24,
|
266
|
|
- P0_25, P0_26, P0_27, P0_28, P0_29, P0_30,
|
267
|
|
- P1_00, P1_01, P1_04, P1_08, P1_09, P1_10, P1_14, P1_15,
|
|
218
|
+ P0_17, P0_18, P0_19, P0_20, P0_21, P0_22, P0_23,
|
|
219
|
+ P0_24, P0_25, P0_26, P0_27, P0_28, P0_29, P0_30, P_NC,
|
|
220
|
+
|
|
221
|
+ P1_00, P1_01, P_NC, P_NC, P1_04, P_NC, P_NC, P_NC,
|
|
222
|
+ P1_08, P1_09, P1_10, P_NC, P_NC, P_NC, P1_14, P1_15,
|
268
|
223
|
P1_16, P1_17, P1_18, P1_19, P1_20, P1_21, P1_22, P1_23,
|
269
|
224
|
P1_24, P1_25, P1_26, P1_27, P1_28, P1_29, P1_30, P1_31,
|
|
225
|
+
|
270
|
226
|
P2_00, P2_01, P2_02, P2_03, P2_04, P2_05, P2_06, P2_07,
|
271
|
|
- P2_08, P2_09, P2_10, P2_11, P2_12, P2_13,
|
272
|
|
- P3_25, P3_26,
|
273
|
|
- P4_28, P4_29
|
|
227
|
+ P2_08, P2_09, P2_10, P2_11, P2_12, P2_13, P_NC, P_NC,
|
|
228
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
229
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
230
|
+
|
|
231
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
232
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
233
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
234
|
+ P_NC, P3_25, P3_26, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
235
|
+
|
|
236
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
237
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
238
|
+ P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC, P_NC,
|
|
239
|
+ P_NC, P_NC, P_NC, P_NC, P4_28, P4_29, P_NC, P_NC
|
274
|
240
|
};
|
275
|
241
|
|
276
|
|
-#define NUM_DIGITAL_PINS COUNT(pin_map)
|
|
242
|
+constexpr int16_t NUM_DIGITAL_PINS = COUNT(pin_map);
|
|
243
|
+
|
|
244
|
+constexpr pin_t adc_pin_table[] = {
|
|
245
|
+ P0_23, P0_24, P0_25, P0_26, P1_30, P1_31,
|
|
246
|
+ #if SERIAL_PORT != 0
|
|
247
|
+ P0_03, P0_02
|
|
248
|
+ #endif
|
|
249
|
+};
|
|
250
|
+
|
|
251
|
+constexpr int16_t NUM_ANALOG_INPUTS = COUNT(adc_pin_table);
|
|
252
|
+
|
|
253
|
+// P0.6 thru P0.9 are for the onboard SD card
|
|
254
|
+// P0.29 and P0.30 are for the USB port
|
|
255
|
+#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09, P0_29, P0_30
|
|
256
|
+
|
|
257
|
+// Get the digital pin for an analog index
|
|
258
|
+pin_t analogInputToDigitalPin(const uint8_t p);
|
|
259
|
+
|
|
260
|
+// Return the index of a pin number
|
|
261
|
+// The pin number given here is in the form ppp:nnnnn
|
|
262
|
+int16_t GET_PIN_MAP_INDEX(const pin_t pin);
|
|
263
|
+
|
|
264
|
+// Test whether the pin is valid
|
|
265
|
+bool VALID_PIN(const pin_t p);
|
|
266
|
+
|
|
267
|
+// Get the analog index for a digital pin
|
|
268
|
+int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p);
|
|
269
|
+
|
|
270
|
+// Test whether the pin is PWM
|
|
271
|
+bool PWM_PIN(const pin_t p);
|
|
272
|
+
|
|
273
|
+// Test whether the pin is interruptable
|
|
274
|
+bool INTERRUPT_PIN(const pin_t p);
|
277
|
275
|
|
278
|
|
-#define GET_PIN_MAP_PIN(i) (WITHIN(i, 0, (int)NUM_DIGITAL_PINS - 1) ? pin_map[i] : -1)
|
|
276
|
+// Get the pin number at the given index
|
|
277
|
+pin_t GET_PIN_MAP_PIN(const int16_t ind);
|
279
|
278
|
|
280
|
|
-int16_t GET_PIN_MAP_INDEX(pin_t pin);
|
281
|
|
-int16_t PARSED_PIN_INDEX(char code, int16_t dval = 0);
|
|
279
|
+// Parse a G-code word into a pin index
|
|
280
|
+int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
|
282
|
281
|
|
283
|
|
-#endif // __HAL_PINMAPPING_H__
|
|
282
|
+#endif // _PINMAPPING_H_
|