瀏覽代碼

Macrofy attachInterrupt

Scott Lahteine 5 年之前
父節點
當前提交
a06010e08a

+ 20
- 49
Marlin/src/HAL/HAL_AVR/endstop_interrupts.h 查看文件

102
   ISR(PCINT3_vect, ISR_ALIASOF(PCINT0_vect));
102
   ISR(PCINT3_vect, ISR_ALIASOF(PCINT0_vect));
103
 #endif
103
 #endif
104
 
104
 
105
-void setup_endstop_interrupts( void ) {
106
-
105
+void setup_endstop_interrupts(void) {
106
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
107
   #if HAS_X_MAX
107
   #if HAS_X_MAX
108
-    #if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT) // if pin has an external interrupt
109
-      attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE); // assign it
108
+    #if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
109
+      _ATTACH(X_MAX_PIN);
110
     #else
110
     #else
111
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
112
-      static_assert(digitalPinToPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable"); // if pin has no pin change interrupt - error
113
-      pciSetup(X_MAX_PIN);                                                            // assign it
111
+      static_assert(digitalPinToPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable");
112
+      pciSetup(X_MAX_PIN);
114
     #endif
113
     #endif
115
   #endif
114
   #endif
116
-
117
   #if HAS_X_MIN
115
   #if HAS_X_MIN
118
     #if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
116
     #if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
119
-      attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
117
+      _ATTACH(X_MIN_PIN);
120
     #else
118
     #else
121
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
122
       static_assert(digitalPinToPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable");
119
       static_assert(digitalPinToPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable");
123
       pciSetup(X_MIN_PIN);
120
       pciSetup(X_MIN_PIN);
124
     #endif
121
     #endif
125
   #endif
122
   #endif
126
-
127
   #if HAS_Y_MAX
123
   #if HAS_Y_MAX
128
     #if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
124
     #if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
129
-      attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
125
+      _ATTACH(Y_MAX_PIN);
130
     #else
126
     #else
131
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
132
       static_assert(digitalPinToPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable");
127
       static_assert(digitalPinToPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable");
133
       pciSetup(Y_MAX_PIN);
128
       pciSetup(Y_MAX_PIN);
134
     #endif
129
     #endif
135
   #endif
130
   #endif
136
-
137
   #if HAS_Y_MIN
131
   #if HAS_Y_MIN
138
     #if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
132
     #if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
139
-      attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
133
+      _ATTACH(Y_MIN_PIN);
140
     #else
134
     #else
141
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
142
       static_assert(digitalPinToPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable");
135
       static_assert(digitalPinToPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable");
143
       pciSetup(Y_MIN_PIN);
136
       pciSetup(Y_MIN_PIN);
144
     #endif
137
     #endif
145
   #endif
138
   #endif
146
-
147
   #if HAS_Z_MAX
139
   #if HAS_Z_MAX
148
     #if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
140
     #if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
149
-      attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
141
+      _ATTACH(Z_MAX_PIN);
150
     #else
142
     #else
151
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
152
       static_assert(digitalPinToPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable");
143
       static_assert(digitalPinToPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable");
153
       pciSetup(Z_MAX_PIN);
144
       pciSetup(Z_MAX_PIN);
154
     #endif
145
     #endif
155
   #endif
146
   #endif
156
-
157
   #if HAS_Z_MIN
147
   #if HAS_Z_MIN
158
     #if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
148
     #if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
159
-      attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
149
+      _ATTACH(Z_MIN_PIN);
160
     #else
150
     #else
161
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
162
       static_assert(digitalPinToPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
151
       static_assert(digitalPinToPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
163
       pciSetup(Z_MIN_PIN);
152
       pciSetup(Z_MIN_PIN);
164
     #endif
153
     #endif
165
   #endif
154
   #endif
166
-
167
   #if HAS_X2_MAX
155
   #if HAS_X2_MAX
168
     #if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
156
     #if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
169
-      attachInterrupt(digitalPinToInterrupt(X2_MAX_PIN), endstop_ISR, CHANGE);
157
+      _ATTACH(X2_MAX_PIN);
170
     #else
158
     #else
171
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
172
       static_assert(digitalPinToPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable");
159
       static_assert(digitalPinToPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable");
173
       pciSetup(X2_MAX_PIN);
160
       pciSetup(X2_MAX_PIN);
174
     #endif
161
     #endif
175
   #endif
162
   #endif
176
-
177
   #if HAS_X2_MIN
163
   #if HAS_X2_MIN
178
     #if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
164
     #if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
179
-      attachInterrupt(digitalPinToInterrupt(X2_MIN_PIN), endstop_ISR, CHANGE);
165
+      _ATTACH(X2_MIN_PIN);
180
     #else
166
     #else
181
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
182
       static_assert(digitalPinToPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable");
167
       static_assert(digitalPinToPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable");
183
       pciSetup(X2_MIN_PIN);
168
       pciSetup(X2_MIN_PIN);
184
     #endif
169
     #endif
185
   #endif
170
   #endif
186
-
187
   #if HAS_Y2_MAX
171
   #if HAS_Y2_MAX
188
     #if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
172
     #if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
189
-      attachInterrupt(digitalPinToInterrupt(Y2_MAX_PIN), endstop_ISR, CHANGE);
173
+      _ATTACH(Y2_MAX_PIN);
190
     #else
174
     #else
191
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
192
       static_assert(digitalPinToPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable");
175
       static_assert(digitalPinToPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable");
193
       pciSetup(Y2_MAX_PIN);
176
       pciSetup(Y2_MAX_PIN);
194
     #endif
177
     #endif
195
   #endif
178
   #endif
196
-
197
   #if HAS_Y2_MIN
179
   #if HAS_Y2_MIN
198
     #if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
180
     #if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
199
-      attachInterrupt(digitalPinToInterrupt(Y2_MIN_PIN), endstop_ISR, CHANGE);
181
+      _ATTACH(Y2_MIN_PIN);
200
     #else
182
     #else
201
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
202
       static_assert(digitalPinToPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable");
183
       static_assert(digitalPinToPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable");
203
       pciSetup(Y2_MIN_PIN);
184
       pciSetup(Y2_MIN_PIN);
204
     #endif
185
     #endif
205
   #endif
186
   #endif
206
-
207
   #if HAS_Z2_MAX
187
   #if HAS_Z2_MAX
208
     #if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
188
     #if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
209
-      attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
189
+      _ATTACH(Z2_MAX_PIN);
210
     #else
190
     #else
211
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
212
       static_assert(digitalPinToPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable");
191
       static_assert(digitalPinToPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable");
213
       pciSetup(Z2_MAX_PIN);
192
       pciSetup(Z2_MAX_PIN);
214
     #endif
193
     #endif
215
   #endif
194
   #endif
216
-
217
   #if HAS_Z2_MIN
195
   #if HAS_Z2_MIN
218
     #if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
196
     #if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
219
-      attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
197
+      _ATTACH(Z2_MIN_PIN);
220
     #else
198
     #else
221
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
222
       static_assert(digitalPinToPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable");
199
       static_assert(digitalPinToPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable");
223
       pciSetup(Z2_MIN_PIN);
200
       pciSetup(Z2_MIN_PIN);
224
     #endif
201
     #endif
225
   #endif
202
   #endif
226
-
227
   #if HAS_Z3_MAX
203
   #if HAS_Z3_MAX
228
     #if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
204
     #if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
229
-      attachInterrupt(digitalPinToInterrupt(Z3_MAX_PIN), endstop_ISR, CHANGE);
205
+      _ATTACH(Z3_MAX_PIN);
230
     #else
206
     #else
231
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
232
       static_assert(digitalPinToPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable");
207
       static_assert(digitalPinToPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable");
233
       pciSetup(Z3_MAX_PIN);
208
       pciSetup(Z3_MAX_PIN);
234
     #endif
209
     #endif
235
   #endif
210
   #endif
236
-
237
   #if HAS_Z3_MIN
211
   #if HAS_Z3_MIN
238
     #if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
212
     #if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
239
-      attachInterrupt(digitalPinToInterrupt(Z3_MIN_PIN), endstop_ISR, CHANGE);
213
+      _ATTACH(Z3_MIN_PIN);
240
     #else
214
     #else
241
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
242
       static_assert(digitalPinToPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable");
215
       static_assert(digitalPinToPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable");
243
       pciSetup(Z3_MIN_PIN);
216
       pciSetup(Z3_MIN_PIN);
244
     #endif
217
     #endif
245
   #endif
218
   #endif
246
-
247
   #if HAS_Z_MIN_PROBE_PIN
219
   #if HAS_Z_MIN_PROBE_PIN
248
     #if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
220
     #if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
249
-      attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
221
+      _ATTACH(Z_MIN_PROBE_PIN);
250
     #else
222
     #else
251
-      // Not all used endstop/probe -pins can raise interrupts. Please deactivate ENDSTOP_INTERRUPTS or change the pin configuration!
252
       static_assert(digitalPinToPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable");
223
       static_assert(digitalPinToPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable");
253
       pciSetup(Z_MIN_PROBE_PIN);
224
       pciSetup(Z_MIN_PROBE_PIN);
254
     #endif
225
     #endif

+ 12
- 11
Marlin/src/HAL/HAL_DUE/endstop_interrupts.h 查看文件

46
  */
46
  */
47
 
47
 
48
 void setup_endstop_interrupts(void) {
48
 void setup_endstop_interrupts(void) {
49
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
49
   #if HAS_X_MAX
50
   #if HAS_X_MAX
50
-    attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE); // assign it
51
+    _ATTACH(X_MAX_PIN);
51
   #endif
52
   #endif
52
   #if HAS_X_MIN
53
   #if HAS_X_MIN
53
-    attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
54
+    _ATTACH(X_MIN_PIN);
54
   #endif
55
   #endif
55
   #if HAS_Y_MAX
56
   #if HAS_Y_MAX
56
-    attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
57
+    _ATTACH(Y_MAX_PIN);
57
   #endif
58
   #endif
58
   #if HAS_Y_MIN
59
   #if HAS_Y_MIN
59
-    attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
60
+    _ATTACH(Y_MIN_PIN);
60
   #endif
61
   #endif
61
   #if HAS_Z_MAX
62
   #if HAS_Z_MAX
62
-    attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
63
+    _ATTACH(Z_MAX_PIN);
63
   #endif
64
   #endif
64
   #if HAS_Z_MIN
65
   #if HAS_Z_MIN
65
-     attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
66
+     _ATTACH(Z_MIN_PIN);
66
   #endif
67
   #endif
67
   #if HAS_Z2_MAX
68
   #if HAS_Z2_MAX
68
-    attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
69
+    _ATTACH(Z2_MAX_PIN);
69
   #endif
70
   #endif
70
   #if HAS_Z2_MIN
71
   #if HAS_Z2_MIN
71
-    attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
72
+    _ATTACH(Z2_MIN_PIN);
72
   #endif
73
   #endif
73
   #if HAS_Z3_MAX
74
   #if HAS_Z3_MAX
74
-    attachInterrupt(digitalPinToInterrupt(Z3_MAX_PIN), endstop_ISR, CHANGE);
75
+    _ATTACH(Z3_MAX_PIN);
75
   #endif
76
   #endif
76
   #if HAS_Z3_MIN
77
   #if HAS_Z3_MIN
77
-    attachInterrupt(digitalPinToInterrupt(Z3_MIN_PIN), endstop_ISR, CHANGE);
78
+    _ATTACH(Z3_MIN_PIN);
78
   #endif
79
   #endif
79
   #if HAS_Z_MIN_PROBE_PIN
80
   #if HAS_Z_MIN_PROBE_PIN
80
-    attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
81
+    _ATTACH(Z_MIN_PROBE_PIN);
81
   #endif
82
   #endif
82
 }
83
 }

+ 12
- 11
Marlin/src/HAL/HAL_ESP32/endstop_interrupts.h 查看文件

41
 void ICACHE_RAM_ATTR endstop_ISR(void) { endstops.update(); }
41
 void ICACHE_RAM_ATTR endstop_ISR(void) { endstops.update(); }
42
 
42
 
43
 void setup_endstop_interrupts(void) {
43
 void setup_endstop_interrupts(void) {
44
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
44
   #if HAS_X_MAX
45
   #if HAS_X_MAX
45
-    attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE);
46
+    _ATTACH(X_MAX_PIN);
46
   #endif
47
   #endif
47
   #if HAS_X_MIN
48
   #if HAS_X_MIN
48
-    attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
49
+    _ATTACH(X_MIN_PIN);
49
   #endif
50
   #endif
50
   #if HAS_Y_MAX
51
   #if HAS_Y_MAX
51
-    attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
52
+    _ATTACH(Y_MAX_PIN);
52
   #endif
53
   #endif
53
   #if HAS_Y_MIN
54
   #if HAS_Y_MIN
54
-    attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
55
+    _ATTACH(Y_MIN_PIN);
55
   #endif
56
   #endif
56
   #if HAS_Z_MAX
57
   #if HAS_Z_MAX
57
-    attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
58
+    _ATTACH(Z_MAX_PIN);
58
   #endif
59
   #endif
59
   #if HAS_Z_MIN
60
   #if HAS_Z_MIN
60
-     attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
61
+     _ATTACH(Z_MIN_PIN);
61
   #endif
62
   #endif
62
   #if HAS_Z2_MAX
63
   #if HAS_Z2_MAX
63
-    attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
64
+    _ATTACH(Z2_MAX_PIN);
64
   #endif
65
   #endif
65
   #if HAS_Z2_MIN
66
   #if HAS_Z2_MIN
66
-    attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
67
+    _ATTACH(Z2_MIN_PIN);
67
   #endif
68
   #endif
68
   #if HAS_Z3_MAX
69
   #if HAS_Z3_MAX
69
-    attachInterrupt(digitalPinToInterrupt(Z3_MAX_PIN), endstop_ISR, CHANGE);
70
+    _ATTACH(Z3_MAX_PIN);
70
   #endif
71
   #endif
71
   #if HAS_Z3_MIN
72
   #if HAS_Z3_MIN
72
-    attachInterrupt(digitalPinToInterrupt(Z3_MIN_PIN), endstop_ISR, CHANGE);
73
+    _ATTACH(Z3_MIN_PIN);
73
   #endif
74
   #endif
74
   #if HAS_Z_MIN_PROBE_PIN
75
   #if HAS_Z_MIN_PROBE_PIN
75
-    attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
76
+    _ATTACH(Z_MIN_PROBE_PIN);
76
   #endif
77
   #endif
77
 }
78
 }

+ 23
- 22
Marlin/src/HAL/HAL_LPC1768/endstop_interrupts.h 查看文件

41
 void endstop_ISR(void) { endstops.update(); }
41
 void endstop_ISR(void) { endstops.update(); }
42
 
42
 
43
 void setup_endstop_interrupts(void) {
43
 void setup_endstop_interrupts(void) {
44
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
44
   #if HAS_X_MAX
45
   #if HAS_X_MAX
45
     #if !LPC1768_PIN_INTERRUPT_M(X_MAX_PIN)
46
     #if !LPC1768_PIN_INTERRUPT_M(X_MAX_PIN)
46
-      #error "X_MAX_PIN is not an INTERRUPT capable pin."
47
+      #error "X_MAX_PIN is not INTERRUPT-capable."
47
     #endif
48
     #endif
48
-    attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE);
49
+    _ATTACH(X_MAX_PIN);
49
   #endif
50
   #endif
50
   #if HAS_X_MIN
51
   #if HAS_X_MIN
51
     #if !LPC1768_PIN_INTERRUPT_M(X_MIN_PIN)
52
     #if !LPC1768_PIN_INTERRUPT_M(X_MIN_PIN)
52
-      #error "X_MIN_PIN is not an INTERRUPT capable pin."
53
+      #error "X_MIN_PIN is not INTERRUPT-capable."
53
     #endif
54
     #endif
54
-    attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
55
+    _ATTACH(X_MIN_PIN);
55
   #endif
56
   #endif
56
   #if HAS_Y_MAX
57
   #if HAS_Y_MAX
57
     #if !LPC1768_PIN_INTERRUPT_M(Y_MAX_PIN)
58
     #if !LPC1768_PIN_INTERRUPT_M(Y_MAX_PIN)
58
-      #error "Y_MAX_PIN is not an INTERRUPT capable pin."
59
+      #error "Y_MAX_PIN is not INTERRUPT-capable."
59
     #endif
60
     #endif
60
-    attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
61
+    _ATTACH(Y_MAX_PIN);
61
   #endif
62
   #endif
62
   #if HAS_Y_MIN
63
   #if HAS_Y_MIN
63
     #if !LPC1768_PIN_INTERRUPT_M(Y_MIN_PIN)
64
     #if !LPC1768_PIN_INTERRUPT_M(Y_MIN_PIN)
64
-      #error "Y_MIN_PIN is not an INTERRUPT capable pin."
65
+      #error "Y_MIN_PIN is not INTERRUPT-capable."
65
     #endif
66
     #endif
66
-    attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
67
+    _ATTACH(Y_MIN_PIN);
67
   #endif
68
   #endif
68
   #if HAS_Z_MAX
69
   #if HAS_Z_MAX
69
     #if !LPC1768_PIN_INTERRUPT_M(Z_MAX_PIN)
70
     #if !LPC1768_PIN_INTERRUPT_M(Z_MAX_PIN)
70
-      #error "Z_MAX_PIN is not an INTERRUPT capable pin."
71
+      #error "Z_MAX_PIN is not INTERRUPT-capable."
71
     #endif
72
     #endif
72
-    attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
73
+    _ATTACH(Z_MAX_PIN);
73
   #endif
74
   #endif
74
   #if HAS_Z_MIN
75
   #if HAS_Z_MIN
75
     #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PIN)
76
     #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PIN)
76
-      #error "Z_MIN_PIN is not an INTERRUPT capable pin."
77
+      #error "Z_MIN_PIN is not INTERRUPT-capable."
77
     #endif
78
     #endif
78
-     attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
79
+     _ATTACH(Z_MIN_PIN);
79
   #endif
80
   #endif
80
   #if HAS_Z2_MAX
81
   #if HAS_Z2_MAX
81
     #if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN)
82
     #if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN)
82
-      #error "Z2_MAX_PIN is not an INTERRUPT capable pin."
83
+      #error "Z2_MAX_PIN is not INTERRUPT-capable."
83
     #endif
84
     #endif
84
-    attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
85
+    _ATTACH(Z2_MAX_PIN);
85
   #endif
86
   #endif
86
   #if HAS_Z2_MIN
87
   #if HAS_Z2_MIN
87
     #if !LPC1768_PIN_INTERRUPT_M(Z2_MIN_PIN)
88
     #if !LPC1768_PIN_INTERRUPT_M(Z2_MIN_PIN)
88
-      #error "Z2_MIN_PIN is not an INTERRUPT capable pin."
89
+      #error "Z2_MIN_PIN is not INTERRUPT-capable."
89
     #endif
90
     #endif
90
-    attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
91
+    _ATTACH(Z2_MIN_PIN);
91
   #endif
92
   #endif
92
   #if HAS_Z3_MAX
93
   #if HAS_Z3_MAX
93
     #if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
94
     #if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
94
-      #error "Z3_MIN_PIN is not an INTERRUPT capable pin."
95
+      #error "Z3_MIN_PIN is not INTERRUPT-capable."
95
     #endif
96
     #endif
96
-    attachInterrupt(digitalPinToInterrupt(Z3_MAX_PIN), endstop_ISR, CHANGE);
97
+    _ATTACH(Z3_MAX_PIN);
97
   #endif
98
   #endif
98
   #if HAS_Z3_MIN
99
   #if HAS_Z3_MIN
99
     #if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
100
     #if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
100
-      #error "Z3_MIN_PIN is not an INTERRUPT capable pin."
101
+      #error "Z3_MIN_PIN is not INTERRUPT-capable."
101
     #endif
102
     #endif
102
-    attachInterrupt(digitalPinToInterrupt(Z3_MIN_PIN), endstop_ISR, CHANGE);
103
+    _ATTACH(Z3_MIN_PIN);
103
   #endif
104
   #endif
104
   #if HAS_Z_MIN_PROBE_PIN
105
   #if HAS_Z_MIN_PROBE_PIN
105
     #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PROBE_PIN)
106
     #if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PROBE_PIN)
106
-      #error "Z_MIN_PROBE_PIN is not an INTERRUPT capable pin."
107
+      #error "Z_MIN_PROBE_PIN is not INTERRUPT-capable."
107
     #endif
108
     #endif
108
-    attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
109
+    _ATTACH(Z_MIN_PROBE_PIN);
109
   #endif
110
   #endif
110
 }
111
 }

+ 11
- 19
Marlin/src/HAL/HAL_TEENSY31_32/endstop_interrupts.h 查看文件

45
  *  On Due, all pins support external interrupt capability.
45
  *  On Due, all pins support external interrupt capability.
46
  */
46
  */
47
 
47
 
48
-void setup_endstop_interrupts( void ) {
49
-
48
+void setup_endstop_interrupts(void) {
49
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
50
   #if HAS_X_MAX
50
   #if HAS_X_MAX
51
-    attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE); // assign it
51
+    _ATTACH(X_MAX_PIN);
52
   #endif
52
   #endif
53
-
54
   #if HAS_X_MIN
53
   #if HAS_X_MIN
55
-    attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
54
+    _ATTACH(X_MIN_PIN);
56
   #endif
55
   #endif
57
-
58
   #if HAS_Y_MAX
56
   #if HAS_Y_MAX
59
-    attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
57
+    _ATTACH(Y_MAX_PIN);
60
   #endif
58
   #endif
61
-
62
   #if HAS_Y_MIN
59
   #if HAS_Y_MIN
63
-    attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
60
+    _ATTACH(Y_MIN_PIN);
64
   #endif
61
   #endif
65
-
66
   #if HAS_Z_MAX
62
   #if HAS_Z_MAX
67
-    attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
63
+    _ATTACH(Z_MAX_PIN);
68
   #endif
64
   #endif
69
-
70
   #if HAS_Z_MIN
65
   #if HAS_Z_MIN
71
-     attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
66
+     _ATTACH(Z_MIN_PIN);
72
   #endif
67
   #endif
73
-
74
   #if HAS_Z2_MAX
68
   #if HAS_Z2_MAX
75
-    attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
69
+    _ATTACH(Z2_MAX_PIN);
76
   #endif
70
   #endif
77
-
78
   #if HAS_Z2_MIN
71
   #if HAS_Z2_MIN
79
-    attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
72
+    _ATTACH(Z2_MIN_PIN);
80
   #endif
73
   #endif
81
-
82
   #if HAS_Z_MIN_PROBE_PIN
74
   #if HAS_Z_MIN_PROBE_PIN
83
-    attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
75
+    _ATTACH(Z_MIN_PROBE_PIN);
84
   #endif
76
   #endif
85
 }
77
 }

+ 13
- 12
Marlin/src/HAL/HAL_TEENSY35_36/endstop_interrupts.h 查看文件

44
  * Endstop interrupts for Due based targets.
44
  * Endstop interrupts for Due based targets.
45
  * On Due, all pins support external interrupt capability.
45
  * On Due, all pins support external interrupt capability.
46
  */
46
  */
47
-void setup_endstop_interrupts( void ) {
47
+void setup_endstop_interrupts(void) {
48
+  #define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
48
   #if HAS_X_MAX
49
   #if HAS_X_MAX
49
-    attachInterrupt(digitalPinToInterrupt(X_MAX_PIN), endstop_ISR, CHANGE); // assign it
50
+    _ATTACH(X_MAX_PIN);
50
   #endif
51
   #endif
51
   #if HAS_X_MIN
52
   #if HAS_X_MIN
52
-    attachInterrupt(digitalPinToInterrupt(X_MIN_PIN), endstop_ISR, CHANGE);
53
+    _ATTACH(X_MIN_PIN);
53
   #endif
54
   #endif
54
   #if HAS_Y_MAX
55
   #if HAS_Y_MAX
55
-    attachInterrupt(digitalPinToInterrupt(Y_MAX_PIN), endstop_ISR, CHANGE);
56
+    _ATTACH(Y_MAX_PIN);
56
   #endif
57
   #endif
57
   #if HAS_Y_MIN
58
   #if HAS_Y_MIN
58
-    attachInterrupt(digitalPinToInterrupt(Y_MIN_PIN), endstop_ISR, CHANGE);
59
+    _ATTACH(Y_MIN_PIN);
59
   #endif
60
   #endif
60
   #if HAS_Z_MAX
61
   #if HAS_Z_MAX
61
-    attachInterrupt(digitalPinToInterrupt(Z_MAX_PIN), endstop_ISR, CHANGE);
62
+    _ATTACH(Z_MAX_PIN);
62
   #endif
63
   #endif
63
   #if HAS_Z_MIN
64
   #if HAS_Z_MIN
64
-     attachInterrupt(digitalPinToInterrupt(Z_MIN_PIN), endstop_ISR, CHANGE);
65
+     _ATTACH(Z_MIN_PIN);
65
   #endif
66
   #endif
66
   #if HAS_Z2_MAX
67
   #if HAS_Z2_MAX
67
-    attachInterrupt(digitalPinToInterrupt(Z2_MAX_PIN), endstop_ISR, CHANGE);
68
+    _ATTACH(Z2_MAX_PIN);
68
   #endif
69
   #endif
69
   #if HAS_Z2_MIN
70
   #if HAS_Z2_MIN
70
-    attachInterrupt(digitalPinToInterrupt(Z2_MIN_PIN), endstop_ISR, CHANGE);
71
+    _ATTACH(Z2_MIN_PIN);
71
   #endif
72
   #endif
72
   #if HAS_Z3_MAX
73
   #if HAS_Z3_MAX
73
-    attachInterrupt(digitalPinToInterrupt(Z3_MAX_PIN), endstop_ISR, CHANGE);
74
+    _ATTACH(Z3_MAX_PIN);
74
   #endif
75
   #endif
75
   #if HAS_Z3_MIN
76
   #if HAS_Z3_MIN
76
-    attachInterrupt(digitalPinToInterrupt(Z3_MIN_PIN), endstop_ISR, CHANGE);
77
+    _ATTACH(Z3_MIN_PIN);
77
   #endif
78
   #endif
78
   #if HAS_Z_MIN_PROBE_PIN
79
   #if HAS_Z_MIN_PROBE_PIN
79
-    attachInterrupt(digitalPinToInterrupt(Z_MIN_PROBE_PIN), endstop_ISR, CHANGE);
80
+    _ATTACH(Z_MIN_PROBE_PIN);
80
   #endif
81
   #endif
81
 }
82
 }

Loading…
取消
儲存