RoboAide
Project to improve a DIY robotic arm used for mobility assistance
Main Page
Related Pages
Packages
Classes
Files
File List
File Members
arduino_code
src
main
encoder
examples
Basic
interrupt_pins.h
Go to the documentation of this file.
1
// interrupt pins for known boards
2
3
// Teensy (and maybe others) define these automatically
4
#if !defined(CORE_NUM_INTERRUPT)
5
6
// Wiring boards
7
#if defined(WIRING)
8
#define CORE_NUM_INTERRUPT NUM_EXTERNAL_INTERRUPTS
9
#if NUM_EXTERNAL_INTERRUPTS > 0
10
#define CORE_INT0_PIN EI0
11
#endif
12
#if NUM_EXTERNAL_INTERRUPTS > 1
13
#define CORE_INT1_PIN EI1
14
#endif
15
#if NUM_EXTERNAL_INTERRUPTS > 2
16
#define CORE_INT2_PIN EI2
17
#endif
18
#if NUM_EXTERNAL_INTERRUPTS > 3
19
#define CORE_INT3_PIN EI3
20
#endif
21
#if NUM_EXTERNAL_INTERRUPTS > 4
22
#define CORE_INT4_PIN EI4
23
#endif
24
#if NUM_EXTERNAL_INTERRUPTS > 5
25
#define CORE_INT5_PIN EI5
26
#endif
27
#if NUM_EXTERNAL_INTERRUPTS > 6
28
#define CORE_INT6_PIN EI6
29
#endif
30
#if NUM_EXTERNAL_INTERRUPTS > 7
31
#define CORE_INT7_PIN EI7
32
#endif
33
34
// Arduino Uno, Duemilanove, Diecimila, LilyPad, Mini, Fio, etc...
35
#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__) ||defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__)
36
#define CORE_NUM_INTERRUPT 2
37
#define CORE_INT0_PIN 2
38
#define CORE_INT1_PIN 3
39
40
// Arduino Mega
41
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
42
#define CORE_NUM_INTERRUPT 6
43
#define CORE_INT0_PIN 2
44
#define CORE_INT1_PIN 3
45
#define CORE_INT2_PIN 21
46
#define CORE_INT3_PIN 20
47
#define CORE_INT4_PIN 19
48
#define CORE_INT5_PIN 18
49
50
// Arduino Nano Every, Uno R2 Wifi
51
#elif defined(__AVR_ATmega4809__)
52
#define CORE_NUM_INTERRUPT 13
53
#define CORE_INT0_PIN 0
54
#define CORE_INT1_PIN 1
55
#define CORE_INT2_PIN 2
56
#define CORE_INT3_PIN 3
57
#define CORE_INT4_PIN 4
58
#define CORE_INT5_PIN 5
59
#define CORE_INT6_PIN 6
60
#define CORE_INT7_PIN 7
61
#define CORE_INT8_PIN 8
62
#define CORE_INT9_PIN 9
63
#define CORE_INT10_PIN 10
64
#define CORE_INT11_PIN 11
65
#define CORE_INT12_PIN 12
66
#define CORE_INT13_PIN 13
67
68
// Arduino Leonardo (untested)
69
#elif defined(__AVR_ATmega32U4__) && !defined(CORE_TEENSY)
70
#define CORE_NUM_INTERRUPT 5
71
#define CORE_INT0_PIN 3
72
#define CORE_INT1_PIN 2
73
#define CORE_INT2_PIN 0
74
#define CORE_INT3_PIN 1
75
#define CORE_INT4_PIN 7
76
77
// Sanguino (untested) and ATmega1284P
78
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284P__)
79
#define CORE_NUM_INTERRUPT 3
80
#define CORE_INT0_PIN 10
81
#define CORE_INT1_PIN 11
82
#define CORE_INT2_PIN 2
83
84
// ATmega32u2 and ATmega32u16 based boards with HoodLoader2
85
#elif defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__)
86
#define CORE_NUM_INTERRUPT 8
87
#define CORE_INT0_PIN 8
88
#define CORE_INT1_PIN 17
89
#define CORE_INT2_PIN 13
90
#define CORE_INT3_PIN 14
91
#define CORE_INT4_PIN 15
92
#define CORE_INT5_PIN 16
93
#define CORE_INT6_PIN 19
94
#define CORE_INT7_PIN 20
95
96
// Chipkit Uno32 - attachInterrupt may not support CHANGE option
97
#elif defined(__PIC32MX__) && defined(_BOARD_UNO_)
98
#define CORE_NUM_INTERRUPT 5
99
#define CORE_INT0_PIN 38
100
#define CORE_INT1_PIN 2
101
#define CORE_INT2_PIN 7
102
#define CORE_INT3_PIN 8
103
#define CORE_INT4_PIN 35
104
105
// Chipkit Uno32 - attachInterrupt may not support CHANGE option
106
#elif defined(__PIC32MX__) && defined(_BOARD_MEGA_)
107
#define CORE_NUM_INTERRUPT 5
108
#define CORE_INT0_PIN 3
109
#define CORE_INT1_PIN 2
110
#define CORE_INT2_PIN 7
111
#define CORE_INT3_PIN 21
112
#define CORE_INT4_PIN 20
113
114
// http://hlt.media.mit.edu/?p=1229
115
#elif defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
116
#define CORE_NUM_INTERRUPT 1
117
#define CORE_INT0_PIN 2
118
119
// ATtiny441 ATtiny841
120
#elif defined(__AVR_ATtiny441__) || defined(__AVR_ATtiny841__)
121
#define CORE_NUM_INTERRUPT 1
122
#define CORE_INT0_PIN 9
123
124
//https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/ATtiny_x313.md
125
#elif defined(__AVR_ATtinyX313__)
126
#define CORE_NUM_INTERRUPT 2
127
#define CORE_INT0_PIN 4
128
#define CORE_INT1_PIN 5
129
130
// Attiny167 same core as abobe
131
#elif defined(__AVR_ATtiny167__)
132
#define CORE_NUM_INTERRUPT 2
133
#define CORE_INT0_PIN 14
134
#define CORE_INT1_PIN 3
135
136
137
// Arduino Due
138
#elif defined(__SAM3X8E__)
139
#define CORE_NUM_INTERRUPT 54
140
#define CORE_INT0_PIN 0
141
#define CORE_INT1_PIN 1
142
#define CORE_INT2_PIN 2
143
#define CORE_INT3_PIN 3
144
#define CORE_INT4_PIN 4
145
#define CORE_INT5_PIN 5
146
#define CORE_INT6_PIN 6
147
#define CORE_INT7_PIN 7
148
#define CORE_INT8_PIN 8
149
#define CORE_INT9_PIN 9
150
#define CORE_INT10_PIN 10
151
#define CORE_INT11_PIN 11
152
#define CORE_INT12_PIN 12
153
#define CORE_INT13_PIN 13
154
#define CORE_INT14_PIN 14
155
#define CORE_INT15_PIN 15
156
#define CORE_INT16_PIN 16
157
#define CORE_INT17_PIN 17
158
#define CORE_INT18_PIN 18
159
#define CORE_INT19_PIN 19
160
#define CORE_INT20_PIN 20
161
#define CORE_INT21_PIN 21
162
#define CORE_INT22_PIN 22
163
#define CORE_INT23_PIN 23
164
#define CORE_INT24_PIN 24
165
#define CORE_INT25_PIN 25
166
#define CORE_INT26_PIN 26
167
#define CORE_INT27_PIN 27
168
#define CORE_INT28_PIN 28
169
#define CORE_INT29_PIN 29
170
#define CORE_INT30_PIN 30
171
#define CORE_INT31_PIN 31
172
#define CORE_INT32_PIN 32
173
#define CORE_INT33_PIN 33
174
#define CORE_INT34_PIN 34
175
#define CORE_INT35_PIN 35
176
#define CORE_INT36_PIN 36
177
#define CORE_INT37_PIN 37
178
#define CORE_INT38_PIN 38
179
#define CORE_INT39_PIN 39
180
#define CORE_INT40_PIN 40
181
#define CORE_INT41_PIN 41
182
#define CORE_INT42_PIN 42
183
#define CORE_INT43_PIN 43
184
#define CORE_INT44_PIN 44
185
#define CORE_INT45_PIN 45
186
#define CORE_INT46_PIN 46
187
#define CORE_INT47_PIN 47
188
#define CORE_INT48_PIN 48
189
#define CORE_INT49_PIN 49
190
#define CORE_INT50_PIN 50
191
#define CORE_INT51_PIN 51
192
#define CORE_INT52_PIN 52
193
#define CORE_INT53_PIN 53
194
195
// ESP8266 (https://github.com/esp8266/Arduino/)
196
#elif defined(ESP8266)
197
#define CORE_NUM_INTERRUPT EXTERNAL_NUM_INTERRUPTS
198
#define CORE_INT0_PIN 0
199
#define CORE_INT1_PIN 1
200
#define CORE_INT2_PIN 2
201
#define CORE_INT3_PIN 3
202
#define CORE_INT4_PIN 4
203
#define CORE_INT5_PIN 5
204
// GPIO6-GPIO11 are typically used to interface with the flash memory IC on
205
// most esp8266 modules, so we should avoid adding interrupts to these pins.
206
#define CORE_INT12_PIN 12
207
#define CORE_INT13_PIN 13
208
#define CORE_INT14_PIN 14
209
#define CORE_INT15_PIN 15
210
211
// ESP32 (https://github.com/espressif/arduino-esp32)
212
#elif defined(ESP32)
213
214
#define CORE_NUM_INTERRUPT 40
215
#define CORE_INT0_PIN 0
216
#define CORE_INT1_PIN 1
217
#define CORE_INT2_PIN 2
218
#define CORE_INT3_PIN 3
219
#define CORE_INT4_PIN 4
220
#define CORE_INT5_PIN 5
221
// GPIO6-GPIO11 are typically used to interface with the flash memory IC on
222
// esp32, so we should avoid adding interrupts to these pins.
223
#define CORE_INT12_PIN 12
224
#define CORE_INT13_PIN 13
225
#define CORE_INT14_PIN 14
226
#define CORE_INT15_PIN 15
227
#define CORE_INT16_PIN 16
228
#define CORE_INT17_PIN 17
229
#define CORE_INT18_PIN 18
230
#define CORE_INT19_PIN 19
231
#define CORE_INT21_PIN 21
232
#define CORE_INT22_PIN 22
233
#define CORE_INT23_PIN 23
234
#define CORE_INT25_PIN 25
235
#define CORE_INT26_PIN 26
236
#define CORE_INT27_PIN 27
237
#define CORE_INT32_PIN 32
238
#define CORE_INT33_PIN 33
239
#define CORE_INT34_PIN 34
240
#define CORE_INT35_PIN 35
241
#define CORE_INT36_PIN 36
242
#define CORE_INT39_PIN 39
243
244
245
// Arduino Zero - TODO: interrupts do not seem to work
246
// please help, contribute a fix!
247
#elif defined(__SAMD21G18A__) || defined(__SAMD51__)
248
#define CORE_NUM_INTERRUPT 20
249
#define CORE_INT0_PIN 0
250
#define CORE_INT1_PIN 1
251
#define CORE_INT2_PIN 2
252
#define CORE_INT3_PIN 3
253
#define CORE_INT5_PIN 5
254
#define CORE_INT6_PIN 6
255
#define CORE_INT7_PIN 7
256
#define CORE_INT8_PIN 8
257
#define CORE_INT9_PIN 9
258
#define CORE_INT10_PIN 10
259
#define CORE_INT11_PIN 11
260
#define CORE_INT12_PIN 12
261
#define CORE_INT13_PIN 13
262
#define CORE_INT14_PIN 14
263
#define CORE_INT15_PIN 15
264
#define CORE_INT16_PIN 16
265
#define CORE_INT17_PIN 17
266
#define CORE_INT18_PIN 18
267
#define CORE_INT19_PIN 19
268
269
// Arduino 101
270
#elif defined(__arc__)
271
#define CORE_NUM_INTERRUPT 14
272
#define CORE_INT2_PIN 2
273
#define CORE_INT5_PIN 5
274
#define CORE_INT7_PIN 7
275
#define CORE_INT8_PIN 8
276
#define CORE_INT10_PIN 10
277
#define CORE_INT11_PIN 11
278
#define CORE_INT12_PIN 12
279
#define CORE_INT13_PIN 13
280
281
#endif
282
#endif
283
284
#if !defined(CORE_NUM_INTERRUPT)
285
#error "Interrupts are unknown for this board, please add to this code"
286
#endif
287
#if CORE_NUM_INTERRUPT <= 0
288
#error "Encoder requires interrupt pins, but this board does not have any :("
289
#error "You could try defining ENCODER_DO_NOT_USE_INTERRUPTS as a kludge."
290
#endif
291
Generated by
1.8.11