PIC24 Support Libraries
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pic24_ports.h
Go to the documentation of this file.
1 /*
2  * "Copyright (c) 2008 Robert B. Reese, Bryan A. Jones, J. W. Bruce ("AUTHORS")"
3  * All rights reserved.
4  * (R. Reese, reese_AT_ece.msstate.edu, Mississippi State University)
5  * (B. A. Jones, bjones_AT_ece.msstate.edu, Mississippi State University)
6  * (J. W. Bruce, jwbruce_AT_ece.msstate.edu, Mississippi State University)
7  *
8  * Permission to use, copy, modify, and distribute this software and its
9  * documentation for any purpose, without fee, and without written agreement is
10  * hereby granted, provided that the above copyright notice, the following
11  * two paragraphs and the authors appear in all copies of this software.
12  *
13  * IN NO EVENT SHALL THE "AUTHORS" BE LIABLE TO ANY PARTY FOR
14  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
15  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE "AUTHORS"
16  * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17  *
18  * THE "AUTHORS" SPECIFICALLY DISCLAIMS ANY WARRANTIES,
19  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20  * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21  * ON AN "AS IS" BASIS, AND THE "AUTHORS" HAS NO OBLIGATION TO
22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
23  *
24  * Please maintain this header in its entirety when copying/modifying
25  * these files.
26  *
27  *
28  */
29 
30 
31 #ifndef _PIC24_PORTS_H_
32 #define _PIC24_PORTS_H_
33 // Documentation for this file. If the \file tag isn't present,
34 // this file won't be documented.
35 /** \file
36  * This file supports configuration of IO ports on the PIC24. Support includes:
37  * - Configuring a pin for analog or digital operation by changing the
38  * corresponding _PCFGn bit. For digital
39  * operation:
40  * - Configure a pin as an input or an output by changing the
41  * corresponding _TRISxy bit.
42  * - Choose an open-drain or standard output driver by changing
43  * the corresponding _CNmPU bit.
44  * - Enable or disable pull-ups by changing the corresponding
45  * _ODCxy bit.
46  * - Enable or disable the interrupt on change mechanism by
47  * changing the corresponding _CNmIE bit.
48  * - A convenient mechanism for mapping a remappable peripheral to
49  * input or output pins.
50  *
51  * \section portSummary Summary of port configuration macros
52  * The port configuration macros are available in two forms.
53  * <a href="#highLevelPortConfig">Higher-level</a> routines
54  * completely configure a pin for a specific
55  * operation, while <a href="#lowLevelPortConfig">low-level</a> routines
56  * provide a more readable name
57  * for changing the value of a single bit (_PCFGn, _TRISxy, _CNmPU, or
58  * _ODCxy).
59  *
60  * To reduce the confusing variety of naming schemes for these bits,
61  * the macros refer to a pin either by its port letter \a x plus pin
62  * number \a y (for example, _TRISB3 for the TRIS bit of port B, pin 3)
63  * or by the analog input number \a n (for example, AN0 refers to
64  * analog input 0).
65  *
66  * The macros provided as "smart" - only functions applicable to that
67  * pin are contained in a given macro. For example,
68  * CONFIG_RA1_AS_DIG_OUTPUT on the PIC24HJ32GP202 disables the pin's
69  * pullup, disables the open-drain driver, disables analog functionality,
70  * then sets the pin as an output. CONFIG_RA7_AS_DIG_OUTPUT on the
71  * PIC24HJ32GP204 only disables the open-drain driver and sets the pin
72  * as an output, because that pin supports neither analog nor pullup
73  * functionality.
74  *
75  * \todo
76  * - Put stub documentation for ALL port macros (doxygen only) so
77  * they hyperlink in source code
78  * - Add a macro in for TRIS bit configuration
79  */
80 
81 // Dummy macros for documentation only
82 #ifdef __DOXYGEN__
83 /** \name High-level port configuration
84  * <a name="highLevelPortConfig">These</a> macros choose
85  * digital or analog, input or
86  * output, open-drain or standard. Use the low-level
87  * \ref ENABLE_Rxy_PULLUP() "ENABLE"/\ref DISABLE_Rxy_PULLUP() to
88  * configure the pullup.
89  */
90 //@{
91 /** This macro disables open-drain and pullups,
92  * configures port x pin y for digital (not analog) operation, and
93  * sets the pin as an output. For example, CONFIG_RA10_AS_DIG_OUTPUT()
94  * makes port A, pin 10 a digital output.
95  */
96 static inline void CONFIG_Rxy_AS_DIG_OUTPUT() {}
97 
98 /** This macro enables open-drain, disables pullups,
99  * configures port x pin y for digital (not analog) operation, and
100  * sets the pin as an output. For example, CONFIG_RA10_AS_DIG_OD_OUTPUT()
101  * makes port A, pin 10 a digital output.
102  */
103 static inline void CONFIG_Rxy_AS_DIG_OD_OUTPUT() {}
104 
105 /** This macro disables pullups and analog functionality and sets
106  * the pin as an input. For example, CONFIG_RA10_AS_DIG_OUTPUT() makes
107  * port A, pin 10 a digital input.
108  */
109 static inline void CONFIG_Rxy_AS_DIG_INPUT() {}
110 
111 /** This macro first calls \ref CONFIG_Rxy_AS_DIG_INPUT() to disable
112  * pullups on the pin then enables analog functionality on the pin.
113  * For example, CONFIG_AN1_AS_ANALOG() makes AN1 an analog input pin.
114  */
115 static inline void CONFIG_ANx_AS_ANALOG() {}
116 //@}
117 
118 /** \name Low-level port configuration macros
119  * <a name="lowLevelPortConfig">These</a> macros support low-level pin
120  * configuration in the following areas:
121  * - Digital vs. analog configuration:
122  * - ENABLE_Rxy_ANALOG() sets the corresponding _PCFGn bit,
123  * while DISABLE_Rxy_ANALOG() clears the corresponding _PCFGn bit.
124  * - CONFIG_RPy_AS_DIG_PIN() sets the corresponding _PCFGn bit.
125  * - Input vs. output configuration: none. Instead, simply assign to
126  * the _TRISxy flag directly: _TRISB1 = 1 makes port B, pin 1 an input
127  * while _TRISB1 = 0 makes it an output.
128  * - Open-drain vs. standard output driver: ENABLE_Rxy_OPENDRAIN(),
129  * DISABLE_Rxy_OPENDRAIN()
130  * - Pull-up configuration: ENABLE_Rxy_PULLUP(), DISABLE_Rxy_PULLUP()
131  * - Change notification configuration: ENABLE_Rxy_CN_INTERRUPT(),
132  * DISABLE_Rxy_CN_INTERRUPT()
133  */
134 //@{
135 
136 /** Enables analog functionality on port x of pin y by clearing the
137  * corresponding _PCFGn bit. For example, ENABLE_RA10_ANALOG() enables
138  * analog functionality on port A pin 10.
139  */
140 #define ENABLE_Rxy_ANALOG() _PCFGn = 0
141 
142 /** Disables analog functionality on port x of pin y by setting the
143  * corresponding _PCFGn bit. For example, DISABLE_RA10_ANALOG() disables
144  * analog functionality on port A pin 10.
145  */
146 #define DISABLE_Rxy_ANALOG() _PCFGn = 1
147 
148 /** Makes port P, pin y a digital pin by disabling analog functionality
149  * on that pin. This is done by setting the
150  * corresponding _PCFGn bit. For example, CONFIG_RP10_AS_DIG_PIN() makes
151  * port P, pin 10 a digital pin by disabling analog its functionality.
152  */
153 #define CONFIG_RPy_AS_DIG_PIN() _PCFG = 1
154 
155 /** Enables the open-drain driver on port x, pin y. For example,
156  * ENABLE_Rxy_OPENDRAIN()
157  */
158 #define ENABLE_Rxy_OPENDRAIN() _ODCxy = 1
159 
160 /** Disables the open-drain driver on port x, pin y. For example,
161  * DISABLE_Rxy_OPENDRAIN()
162  */
163 #define DISABLE_Rxy_OPENDRAIN() _ODCxy = 0
164 
165 /** Enable the pullup on port x, pin y. For example,
166  * ENABLE_RA10_PULLUP() enables the pullup on port A, pin 10.
167  */
168 #define ENABLE_Rxy_PULLUP() _CNmPUE = 1
169 
170 /** Disable the pullup on port x, pin y. For example,
171  * DISABLE_RA10_PULLUP() disables the pullup on port A, pin 10.
172  */
173 #define DISABLE_Rxy_PULLUP() _CNmPUE = 1
174 
175 /** Enables the change notification interrupt on port x, pin y.
176  * For example, ENABLE_RA10_CN_INTERRUPT() enables the change
177  * notification interrupt on port A, pin 10.
178  */
179 #define ENABLE_Rxy_CN_INTERRUPT() _CNmIE = 1
180 
181 /** Disables the change notification interrupt on port x, pin y.
182  * For example, DISABLE_RA10_CN_INTERRUPT() disables the change
183  * notification interrupt on port A, pin 10.
184  */
185 #define DISABLE_Rxy_CN_INTERRUPT() _CNmIE = 0
186 //@}
187 #endif // #ifdef __DOXYGEN__
188 
189 /** \name Remappable peripheral input support
190  * <a name="remappableInputs">These</a> funcions map an input internal
191  * to the PIC to an input pin.
192  * For example, CONFIG_INT1_TO_RP(10) maps the INT1 edge-triggered
193  * interrupt to port P, pin 10.
194  *
195  * Not all devices support remappable peripherals. In these cases,
196  * the macros below evalaute to nothing: \ref CONFIG_INT1_TO_RP(10) is
197  * a valid C statement which does nothing.
198  */
199 //@{
200 
201 #if defined(_INT1R) || defined(__DOXYGEN__)
202 /// Maps INT1 to a remappable pin;
203 /// see <a href="#remappableInputs">remappable peripheral input support</a>
204 /// for more informatino.
205 #define CONFIG_INT1_TO_RP(pin) _INT1R = pin
206 #else
207 #define CONFIG_INT1_TO_RP(pin)
208 #endif
209 
210 /// Maps INT2 to a remappable pin;
211 /// see <a href="#remappableInputs">remappable peripheral input support</a>
212 /// for more informatino.
213 #if defined(_INT2R) || defined(__DOXYGEN__)
214 #define CONFIG_INT2_TO_RP(pin) _INT2R = pin
215 #else
216 #define CONFIG_INT2_TO_RP(pin)
217 #endif
218 
219 /// Maps T2CK to a remappable pin;
220 /// see <a href="#remappableInputs">remappable peripheral input support</a>
221 /// for more informatino.
222 #if defined(_T2CKR) || defined(__DOXYGEN__)
223 #define CONFIG_T2CK_TO_RP(pin) _T2CKR = pin
224 #else
225 #define CONFIG_T2CK_TO_RP(pin)
226 #endif
227 
228 /// Maps T3CK to a remappable pin;
229 /// see <a href="#remappableInputs">remappable peripheral input support</a>
230 /// for more informatino.
231 #if defined(_T3CKR) || defined(__DOXYGEN__)
232 #define CONFIG_T3CK_TO_RP(pin) _T3CKR = pin
233 #else
234 #define CONFIG_T3CK_TO_RP(pin)
235 #endif
236 
237 /// Maps T4CK to a remappable pin;
238 /// see <a href="#remappableInputs">remappable peripheral input support</a>
239 /// for more informatino.
240 #if defined(_T4CKR) || defined(__DOXYGEN__)
241 #define CONFIG_T4CK_TO_RP(pin) _T4CKR = pin
242 #else
243 #define CONFIG_T4CK_TO_RP(pin)
244 #endif
245 
246 /// Maps T5CK to a remappable pin;
247 /// see <a href="#remappableInputs">remappable peripheral input support</a>
248 /// for more informatino.
249 #if defined(_T5CKR) || defined(__DOXYGEN__)
250 #define CONFIG_T5CK_TO_RP(pin) _T5CKR = pin
251 #else
252 #define CONFIG_T5CK_TO_RP(pin)
253 #endif
254 
255 /// Maps IC1 to a remappable pin;
256 /// see <a href="#remappableInputs">remappable peripheral input support</a>
257 /// for more informatino.
258 #if defined(_IC1R) || defined(__DOXYGEN__)
259 #define CONFIG_IC1_TO_RP(pin) _IC1R = pin
260 #else
261 #define CONFIG_IC1_TO_RP(pin)
262 #endif
263 
264 /// Maps IC2 to a remappable pin;
265 /// see <a href="#remappableInputs">remappable peripheral input support</a>
266 /// for more informatino.
267 #if defined(_IC2R) || defined(__DOXYGEN__)
268 #define CONFIG_IC2_TO_RP(pin) _IC2R = pin
269 #else
270 #define CONFIG_IC2_TO_RP(pin)
271 #endif
272 
273 /// Maps IC3 to a remappable pin;
274 /// see <a href="#remappableInputs">remappable peripheral input support</a>
275 /// for more informatino.
276 #if defined(_IC3R) || defined(__DOXYGEN__)
277 #define CONFIG_IC3_TO_RP(pin) _IC3R = pin
278 #else
279 #define CONFIG_IC3_TO_RP(pin)
280 #endif
281 
282 /// Maps IC4 to a remappable pin;
283 /// see <a href="#remappableInputs">remappable peripheral input support</a>
284 /// for more informatino.
285 #if defined(_IC4R) || defined(__DOXYGEN__)
286 #define CONFIG_IC4_TO_RP(pin) _IC4R = pin
287 #else
288 #define CONFIG_IC4_TO_RP(pin)
289 #endif
290 
291 /// Maps IC5 to a remappable pin;
292 /// see <a href="#remappableInputs">remappable peripheral input support</a>
293 /// for more informatino.
294 #if defined(_IC5R) || defined(__DOXYGEN__)
295 #define CONFIG_IC5_TO_RP(pin) _IC5R = pin
296 #else
297 #define CONFIG_IC5_TO_RP(pin)
298 #endif
299 
300 /// Maps IC6 to a remappable pin;
301 /// see <a href="#remappableInputs">remappable peripheral input support</a>
302 /// for more informatino.
303 #if defined(_IC6R) || defined(__DOXYGEN__)
304 #define CONFIG_IC6_TO_RP(pin) _IC6R = pin
305 #else
306 #define CONFIG_IC6_TO_RP(pin)
307 #endif
308 
309 /// Maps IC7 to a remappable pin;
310 /// see <a href="#remappableInputs">remappable peripheral input support</a>
311 /// for more informatino.
312 #if defined(_IC7R) || defined(__DOXYGEN__)
313 #define CONFIG_IC7_TO_RP(pin) _IC7R = pin
314 #else
315 #define CONFIG_IC7_TO_RP(pin)
316 #endif
317 
318 /// Maps IC8 to a remappable pin;
319 /// see <a href="#remappableInputs">remappable peripheral input support</a>
320 /// for more informatino.
321 #if defined(_IC8R) || defined(__DOXYGEN__)
322 #define CONFIG_IC8_TO_RP(pin) _IC8R = pin
323 #else
324 #define CONFIG_IC8_TO_RP(pin)
325 #endif
326 
327 /// Maps OCFA to a remappable pin;
328 /// see <a href="#remappableInputs">remappable peripheral input support</a>
329 /// for more informatino.
330 #if defined(_OCFAR) || defined(__DOXYGEN__)
331 #define CONFIG_OCFA_TO_RP(pin) _OCFAR = pin
332 #else
333 #define CONFIG_OCFA_TO_RP(pin)
334 #endif
335 
336 /// Maps OCFB to a remappable pin;
337 /// see <a href="#remappableInputs">remappable peripheral input support</a>
338 /// for more informatino.
339 #if defined(_OCFBR) || defined(__DOXYGEN__)
340 #define CONFIG_OCFB_TO_RP(pin) _OCFBR = pin
341 #else
342 #define CONFIG_OCFB_TO_RP(pin)
343 #endif
344 
345 /// Maps U1RX to a remappable pin;
346 /// see <a href="#remappableInputs">remappable peripheral input support</a>
347 /// for more informatino.
348 #if defined(_U1RXR) || defined(__DOXYGEN__)
349 #define CONFIG_U1RX_TO_RP(pin) _U1RXR = pin
350 #else
351 #define CONFIG_U1RX_TO_RP(pin)
352 #endif
353 
354 /// Maps U1CTS to a remappable pin;
355 /// see <a href="#remappableInputs">remappable peripheral input support</a>
356 /// for more informatino.
357 #if defined(_U1CTSR) || defined(__DOXYGEN__)
358 #define CONFIG_U1CTS_TO_RP(pin) _U1CTSR = pin
359 #else
360 #define CONFIG_U1CTS_TO_RP(pin)
361 #endif
362 
363 /// Maps U2RX to a remappable pin;
364 /// see <a href="#remappableInputs">remappable peripheral input support</a>
365 /// for more informatino.
366 #if defined(_U2RXR) || defined(__DOXYGEN__)
367 #define CONFIG_U2RX_TO_RP(pin) _U2RXR = pin
368 #else
369 #define CONFIG_U2RX_TO_RP(pin)
370 #endif
371 
372 /// Maps U2CTS to a remappable pin;
373 /// see <a href="#remappableInputs">remappable peripheral input support</a>
374 /// for more informatino.
375 #if defined(_U2CTSR) || defined(__DOXYGEN__)
376 #define CONFIG_U2CTS_TO_RP(pin) _U2CTSR = pin
377 #else
378 #define CONFIG_U2CTS_TO_RP(pin)
379 #endif
380 
381 /// Maps SDI1 to a remappable pin;
382 /// see <a href="#remappableInputs">remappable peripheral input support</a>
383 /// for more informatino.
384 #if defined(_SDI1R) || defined(__DOXYGEN__)
385 #define CONFIG_SDI1_TO_RP(pin) _SDI1R = pin
386 #else
387 #define CONFIG_SDI1_TO_RP(pin)
388 #endif
389 
390 /// Maps SCK1 to a remappable pin;
391 /// see <a href="#remappableInputs">remappable peripheral input support</a>
392 /// for more informatino.
393 #if defined(_SCK1R) || defined(__DOXYGEN__)
394 #define CONFIG_SCK1IN_TO_RP(pin) _SCK1R = pin
395 #else
396 #define CONFIG_SCK1IN_TO_RP(pin)
397 #endif
398 
399 /// Maps SS1 to a remappable pin;
400 /// see <a href="#remappableInputs">remappable peripheral input support</a>
401 /// for more informatino.
402 #if defined(_SS1R) || defined(__DOXYGEN__)
403 #define CONFIG_SS1IN_TO_RP(pin) _SS1R = pin
404 #else
405 #define CONFIG_SS1IN_TO_RP(pin)
406 #endif
407 
408 /// Maps SDI2 to a remappable pin;
409 /// see <a href="#remappableInputs">remappable peripheral input support</a>
410 /// for more informatino.
411 #if defined(_SDI2R) || defined(__DOXYGEN__)
412 #define CONFIG_SDI2_TO_RP(pin) _SDI2R = pin
413 #else
414 #define CONFIG_SDI2_TO_RP(pin)
415 #endif
416 
417 /// Maps SCK2 to a remappable pin;
418 /// see <a href="#remappableInputs">remappable peripheral input support</a>
419 /// for more informatino.
420 #if defined(_SCK2R) || defined(__DOXYGEN__)
421 #define CONFIG_SCK2IN_TO_RP(pin) _SCK2R = pin
422 #else
423 #define CONFIG_SCK2IN_TO_RP(pin)
424 #endif
425 
426 /// Maps SS2 to a remappable pin;
427 /// see <a href="#remappableInputs">remappable peripheral input support</a>
428 /// for more informatino.
429 #if defined(_SS2R) || defined(__DOXYGEN__)
430 #define CONFIG_SS2IN_TO_RP(pin) _SS2R = pin
431 #else
432 #define CONFIG_SS2IN_TO_RP(pin)
433 #endif
434 
435 /// Maps C1RX to a remappable pin;
436 /// see <a href="#remappableInputs">remappable peripheral input support</a>
437 /// for more informatino.
438 #if defined(_C1RXR) || defined(__DOXYGEN__)
439 #define CONFIG_C1RXR_TO_RP(pin) _C1RXR = pin
440 #else
441 #define CONFIG_C1RXR_TO_RP(pin)
442 #endif
443 
444 /// Maps C2RX to a remappable pin;
445 /// see <a href="#remappableInputs">remappable peripheral input support</a>
446 /// for more informatino.
447 #if defined(_C2RXR) || defined(__DOXYGEN__)
448 #define CONFIG_C2RXR_TO_RP(pin) _C2RXR = pin
449 #else
450 #define CONFIG_C2RXR_TO_RP(pin)
451 #endif
452 //@}
453 
454 
455 /** \name Remappable peripheral output support
456  * <a name="remappableOutputs">These</a> functions maps an output
457  * internal to the PIC to an output pin.
458  * For example, CONFIG_C1OUT_TO_RP(10) maps the C1OUT comparator
459  * output to port P, pin 10.
460  *
461  * Not all devices support remappable peripherals. In these cases,
462  * the macros below evalaute to nothing: CONFIG_C1OUT_TO_RP(10) is
463  * a valid C statement which does nothing.
464  */
465 //@{
466 
467 /// Define peripheral pins
468 #if defined(__PIC24E__) || defined(__dsPIC33F__)
469 #define RPMAP_C1OUT 24
470 #define RPMAP_C2OUT 25
471 #define RPMAP_U1TX 1
472 #define RPMAP_U1RTS 2
473 #define RPMAP_U2TX 3
474 #define RPMAP_U2RTS 4
475 #define RPMAP_SD01 5
476 #define RPMAP_SCK1OUT 6
477 #define RPMAP_SS1OUT 7
478 #define RPMAP_SDO2 8
479 #define RPMAP_SCK2OUT 9
480 #define RPMAP_SS2OUT 10
481 #define RPMAP_C1TX 14
482 #define RPMAP_OC1 16
483 #define RPMAP_OC2 17
484 #define RPMAP_OC3 18
485 #define RPMAP_OC4 19
486 #define RPMAP_OC5 20
487 
488 #else
489 
490 #define RPMAP_C1OUT 1
491 #define RPMAP_C2OUT 2
492 #define RPMAP_U1TX 3
493 #define RPMAP_U1RTS 4
494 #define RPMAP_U2TX 5
495 #define RPMAP_U2RTS 6
496 #define RPMAP_SD01 7
497 #define RPMAP_SCK1OUT 8
498 #define RPMAP_SS1OUT 9
499 #define RPMAP_SDO2 10
500 #define RPMAP_SCK2OUT 11
501 #define RPMAP_SS2OUT 12
502 #define RPMAP_C1TX 16
503 #define RPMAP_OC1 18
504 #define RPMAP_OC2 19
505 #define RPMAP_OC3 20
506 #define RPMAP_OC4 21
507 #define RPMAP_OC5 22
508 
509 #endif
510 
511 /// CONFIG_NULL_TO_RP(n) returns RPn to an 'unmapped' state
512 /// (i.e, the reset condition).
513 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
514 #define CONFIG_NULL_TO_RP(pin) _RP##pin##R = 0
515 #else
516 #define CONFIG_NULL_TO_RP(pin)
517 #endif
518 
519 /// Maps C1OUT to a remappable pin;
520 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
521 /// for more information.
522 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
523 #define CONFIG_C1OUT_TO_RP(pin) _RP##pin##R = RPMAP_C1OUT
524 #else
525 #define CONFIG_C1OUT_TO_RP(pin)
526 #endif
527 
528 /// Maps C2OUT to a remappable pin;
529 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
530 /// for more information.
531 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
532 #define CONFIG_C2OUT_TO_RP(pin) _RP##pin##R = RPMAP_C2OUT
533 #else
534 #define CONFIG_C2OUT_TO_RP(pin)
535 #endif
536 
537 /// Maps U1TX to a remappable pin;
538 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
539 /// for more information.
540 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
541 #define CONFIG_U1TX_TO_RP(pin) _RP##pin##R = RPMAP_U1TX
542 #else
543 #define CONFIG_U1TX_TO_RP(pin)
544 #endif
545 
546 /// Maps U1RTS to a remappable pin;
547 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
548 /// for more information.
549 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
550 #define CONFIG_U1RTS_TO_RP(pin) _RP##pin##R = RPMAP_U1RTS
551 #else
552 #define CONFIG_U1RTS_TO_RP(pin)
553 #endif
554 
555 /// Maps U2TX to a remappable pin;
556 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
557 /// for more information.
558 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
559 #define CONFIG_U2TX_TO_RP(pin) _RP##pin##R = RPMAP_U2TX
560 #else
561 #define CONFIG_U2TX_TO_RP(pin)
562 #endif
563 
564 /// Maps U2RTS to a remappable pin;
565 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
566 /// for more information.
567 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
568 #define CONFIG_U2RTS_TO_RP(pin) _RP##pin##R = RPMAP_U2RTS
569 #else
570 #define CONFIG_U2RTS_TO_RP(pin)
571 #endif
572 
573 /// Maps SDO1 to a remappable pin;
574 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
575 /// for more information.
576 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
577 #define CONFIG_SDO1_TO_RP(pin) _RP##pin##R = RPMAP_SD01
578 #else
579 #define CONFIG_SDO1_TO_RP(pin)
580 #endif
581 
582 /// Maps SCK1OUT to a remappable pin;
583 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
584 /// for more information.
585 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
586 #define CONFIG_SCK1OUT_TO_RP(pin) _RP##pin##R = RPMAP_SCK1OUT
587 #else
588 #define CONFIG_SCK1OUT_TO_RP(pin)
589 #endif
590 
591 /// Maps SS11OUT to a remappable pin;
592 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
593 /// for more information.
594 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
595 #define CONFIG_SS1OUT_TO_RP(pin) _RP##pin##R = RPMAP_SS1OUT
596 #else
597 #define CONFIG_SS1OUT_TO_RP(pin)
598 #endif
599 
600 /// Maps SDO2 to a remappable pin;
601 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
602 /// for more information.
603 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
604 #define CONFIG_SDO2_TO_RP(pin) _RP##pin##R = RPMAP_SDO2
605 #else
606 #define CONFIG_SDO2_TO_RP(pin)
607 #endif
608 
609 /// Maps SCK2OUT to a remappable pin;
610 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
611 /// for more information.
612 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
613 #define CONFIG_SCK2OUT_TO_RP(pin) _RP##pin##R = RPMAP_SCK2OUT
614 #else
615 #define CONFIG_SCK2OUT_TO_RP(pin)
616 #endif
617 
618 /// Maps SS2OUT to a remappable pin;
619 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
620 /// for more information.
621 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
622 #define CONFIG_SS2OUT_TO_RP(pin) _RP##pin##R = RPMAP_SS2OUT
623 #else
624 #define CONFIG_SS2OUT_TO_RP(pin)
625 #endif
626 
627 /// Maps C1TX to a remappable pin;
628 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
629 /// for more information.
630 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
631 #define CONFIG_C1TX_TO_RP(pin) _RP##pin##R = RPMAP_C1TX
632 #else
633 #define CONFIG_C1TX_TO_RP(pin)
634 #endif
635 
636 /// Maps OC1 to a remappable pin;
637 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
638 /// for more information.
639 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
640 #define CONFIG_OC1_TO_RP(pin) _RP##pin##R = RPMAP_OC1
641 #else
642 #define CONFIG_OC1_TO_RP(pin)
643 #endif
644 
645 /// Maps OC2 to a remappable pin;
646 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
647 /// for more information.
648 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
649 #define CONFIG_OC2_TO_RP(pin) _RP##pin##R = RPMAP_OC2
650 #else
651 #define CONFIG_OC2_TO_RP(pin)
652 #endif
653 
654 /// Maps OC3 to a remappable pin;
655 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
656 /// for more information.
657 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
658 #define CONFIG_OC3_TO_RP(pin) _RP##pin##R = RPMAP_OC3
659 #else
660 #define CONFIG_OC3_TO_RP(pin)
661 #endif
662 
663 /// Maps OC4 to a remappable pin;
664 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
665 /// for more information.
666 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
667 #define CONFIG_OC4_TO_RP(pin) _RP##pin##R = RPMAP_OC4
668 #else
669 #define CONFIG_OC4_TO_RP(pin)
670 #endif
671 
672 /// Maps OC5 to a remappable pin;
673 /// see <a href="#remappableOutputs">remappable peripheral output support</a>
674 /// for more information.
675 #if defined(_RP0R) || defined(_RP20R) || defined(__DOXYGEN__)
676 #define CONFIG_OC5_TO_RP(pin) _RP##pin##R = RPMAP_OC5
677 #else
678 #define CONFIG_OC5_TO_RP(pin)
679 #endif
680 //@}
681 
682 
683 // Include appropriate ports file for the device in use.
684 #if defined(__PIC24HJ128GP202__)
685 
686 #include "devices/pic24hj128gp202_ports.h"
687 
688 #elif defined(__PIC24HJ128GP204__)
689 
690 #include "devices/pic24hj128gp204_ports.h"
691 
692 #elif defined(__PIC24HJ128GP206__)
693 
694 #include "devices/pic24hj128gp206_ports.h"
695 
696 #elif defined(__PIC24HJ128GP210__)
697 
698 #include "devices/pic24hj128gp210_ports.h"
699 
700 #elif defined(__PIC24HJ128GP306__)
701 
702 #include "devices/pic24hj128gp306_ports.h"
703 
704 #elif defined(__PIC24HJ128GP310__)
705 
706 #include "devices/pic24hj128gp310_ports.h"
707 
708 #elif defined(__PIC24HJ128GP206A__)
709 
710 #include "devices/pic24hj128gp206a_ports.h"
711 
712 #elif defined(__PIC24HJ128GP210A__)
713 
714 #include "devices/pic24hj128gp210a_ports.h"
715 
716 #elif defined(__PIC24HJ128GP306A__)
717 
718 #include "devices/pic24hj128gp306a_ports.h"
719 
720 #elif defined(__PIC24HJ128GP310A__)
721 
722 #include "devices/pic24hj128gp310a_ports.h"
723 
724 #elif defined(__PIC24HJ128GP502__)
725 
726 #include "devices/pic24hj128gp502_ports.h"
727 
728 #elif defined(__PIC24HJ128GP504__)
729 
730 #include "devices/pic24hj128gp504_ports.h"
731 
732 #elif defined(__PIC24HJ128GP506__)
733 
734 #include "devices/pic24hj128gp506_ports.h"
735 
736 #elif defined(__PIC24HJ128GP510__)
737 
738 #include "devices/pic24hj128gp510_ports.h"
739 
740 #elif defined(__PIC24HJ128GP506A__)
741 
742 #include "devices/pic24hj128gp506a_ports.h"
743 
744 #elif defined(__PIC24HJ128GP510A__)
745 
746 #include "devices/pic24hj128gp510a_ports.h"
747 
748 #elif defined(__PIC24HJ12GP201__)
749 
750 #include "devices/pic24hj12gp201_ports.h"
751 
752 #elif defined(__PIC24HJ12GP202__)
753 
754 #include "devices/pic24hj12gp202_ports.h"
755 
756 #elif defined(__PIC24HJ16GP304__)
757 
758 #include "devices/pic24hj16gp304_ports.h"
759 
760 #elif defined(__PIC24HJ256GP206__)
761 
762 #include "devices/pic24hj256gp206_ports.h"
763 
764 #elif defined(__PIC24HJ256GP210__)
765 
766 #include "devices/pic24hj256gp210_ports.h"
767 
768 #elif defined(__PIC24HJ256GP610__)
769 
770 #include "devices/pic24hj256gp610_ports.h"
771 
772 #elif defined(__PIC24HJ32GP202__)
773 
774 #include "devices/pic24hj32gp202_ports.h"
775 
776 #elif defined(__PIC24HJ32GP204__)
777 
778 #include "devices/pic24hj32gp204_ports.h"
779 
780 #elif defined(__PIC24HJ32GP302__)
781 
782 #include "devices/pic24hj32gp302_ports.h"
783 
784 #elif defined(__PIC24HJ32GP304__)
785 
786 #include "devices/pic24hj32gp304_ports.h"
787 
788 #elif defined(__PIC24HJ64GP202__)
789 
790 #include "devices/pic24hj64gp202_ports.h"
791 
792 #elif defined(__PIC24HJ64GP204__)
793 
794 #include "devices/pic24hj64gp204_ports.h"
795 
796 #elif defined(__PIC24HJ64GP206__)
797 
798 #include "devices/pic24hj64gp206_ports.h"
799 
800 #elif defined(__PIC24HJ64GP210__)
801 
802 #include "devices/pic24hj64gp210_ports.h"
803 
804 #elif defined(__PIC24HJ64GP206A__)
805 
806 #include "devices/pic24hj64gp206a_ports.h"
807 
808 #elif defined(__PIC24HJ64GP210A__)
809 
810 #include "devices/pic24hj64gp210a_ports.h"
811 
812 #elif defined(__PIC24HJ64GP502__)
813 
814 #include "devices/pic24hj64gp502_ports.h"
815 
816 #elif defined(__PIC24HJ64GP504__)
817 
818 #include "devices/pic24hj64gp504_ports.h"
819 
820 #elif defined(__PIC24HJ64GP506__)
821 
822 #include "devices/pic24hj64gp506_ports.h"
823 
824 #elif defined(__PIC24HJ64GP510__)
825 
826 #include "devices/pic24hj64gp510_ports.h"
827 
828 #elif defined(__PIC24HJ64GP506A__)
829 
830 #include "devices/pic24hj64gp506a_ports.h"
831 
832 #elif defined(__PIC24HJ64GP510A__)
833 
834 #include "devices/pic24hj64gp510a_ports.h"
835 
836 #elif defined(__PIC24F04KA200__)
837 
838 #include "devices/pic24f04ka200_ports.h"
839 
840 #elif defined(__PIC24F04KA201__)
841 
842 #include "devices/pic24f04ka201_ports.h"
843 
844 #elif defined(__PIC24F08KA101__)
845 
846 #include "devices/pic24f08ka101_ports.h"
847 
848 #elif defined(__PIC24F08KA102__)
849 
850 #include "devices/pic24f08ka102_ports.h"
851 
852 #elif defined(__PIC24F16KA101__)
853 
854 #include "devices/pic24f16ka101_ports.h"
855 
856 #elif defined(__PIC24F16KA102__)
857 
858 #include "devices/pic24f16ka102_ports.h"
859 
860 #elif defined(__PIC24F32KA101__)
861 
862 #include "devices/pic24f32ka101_ports.h"
863 
864 #elif defined(__PIC24F32KA102__)
865 
866 #include "devices/pic24f32ka102_ports.h"
867 
868 #elif defined(__PIC24FJ128GA006__)
869 
870 #include "devices/pic24fj128ga006_ports.h"
871 
872 #elif defined(__PIC24FJ128GA008__)
873 
874 #include "devices/pic24fj128ga008_ports.h"
875 
876 #elif defined(__PIC24FJ128GA010__)
877 
878 #include "devices/pic24fj128ga010_ports.h"
879 
880 #elif defined(__PIC24FJ128GA106__)
881 
882 #include "devices/pic24fj128ga106_ports.h"
883 
884 #elif defined(__PIC24FJ128GA108__)
885 
886 #include "devices/pic24fj128ga108_ports.h"
887 
888 #elif defined(__PIC24FJ128GA110__)
889 
890 #include "devices/pic24fj128ga110_ports.h"
891 
892 #elif defined(__PIC24FJ128GB106__)
893 
894 #include "devices/pic24fj128gb106_ports.h"
895 
896 #elif defined(__PIC24FJ128GB108__)
897 
898 #include "devices/pic24fj128gb108_ports.h"
899 
900 #elif defined(__PIC24FJ128GB110__)
901 
902 #include "devices/pic24fj128gb110_ports.h"
903 
904 #elif defined(__PIC24FJ16GA002__)
905 
906 #include "devices/pic24fj16ga002_ports.h"
907 
908 #elif defined(__PIC24FJ16GA004__)
909 
910 #include "devices/pic24fj16ga004_ports.h"
911 
912 #elif defined(__PIC24FJ192GA106__)
913 
914 #include "devices/pic24fj192ga106_ports.h"
915 
916 #elif defined(__PIC24FJ192GA108__)
917 
918 #include "devices/pic24fj192ga108_ports.h"
919 
920 #elif defined(__PIC24FJ192GA110__)
921 
922 #include "devices/pic24fj192ga110_ports.h"
923 
924 #elif defined(__PIC24FJ32GB002__)
925 
926 #include "devices/pic24fj32gb002_ports.h"
927 
928 #elif defined(__PIC24FJ64GB002__)
929 
930 #include "devices/pic24fj64gb002_ports.h"
931 
932 #elif defined(__PIC24FJ32GB004__)
933 
934 #include "devices/pic24fj32gb004_ports.h"
935 
936 #elif defined(__PIC24FJ64GB004__)
937 
938 #include "devices/pic24fj64gb004_ports.h"
939 
940 #elif defined(__PIC24FJ192GB106__)
941 
942 #include "devices/pic24fj192gb106_ports.h"
943 
944 #elif defined(__PIC24FJ192GB108__)
945 
946 #include "devices/pic24fj192gb108_ports.h"
947 
948 #elif defined(__PIC24FJ192GB110__)
949 
950 #include "devices/pic24fj192gb110_ports.h"
951 
952 #elif defined(__PIC24FJ256GA106__)
953 
954 #include "devices/pic24fj256ga106_ports.h"
955 
956 #elif defined(__PIC24FJ256GA108__)
957 
958 #include "devices/pic24fj256ga108_ports.h"
959 
960 #elif defined(__PIC24FJ256GA110__)
961 
962 #include "devices/pic24fj256ga110_ports.h"
963 
964 #elif defined(__PIC24FJ256GB106__)
965 
966 #include "devices/pic24fj256gb106_ports.h"
967 
968 #elif defined(__PIC24FJ256GB108__)
969 
970 #include "devices/pic24fj256gb108_ports.h"
971 
972 #elif defined(__PIC24FJ256GB110__)
973 
974 #include "devices/pic24fj256gb110_ports.h"
975 
976 
977 #elif defined(__PIC24FJ32GA102__)
978 
979 #include "devices/pic24fj32ga102_ports.h"
980 
981 #elif defined(__PIC24FJ32GA104__)
982 
983 #include "devices/pic24fj32ga104_ports.h"
984 
985 #elif defined(__PIC24FJ64GA102__)
986 
987 #include "devices/pic24fj64ga102_ports.h"
988 
989 #elif defined(__PIC24FJ64GA104__)
990 
991 #include "devices/pic24fj64ga104_ports.h"
992 
993 #elif defined(__PIC24FJ32GA002__)
994 
995 #include "devices/pic24fj32ga002_ports.h"
996 
997 #elif defined(__PIC24FJ32GA004__)
998 
999 #include "devices/pic24fj32ga004_ports.h"
1000 
1001 #elif defined(__PIC24FJ48GA002__)
1002 
1003 #include "devices/pic24fj48ga002_ports.h"
1004 
1005 #elif defined(__PIC24FJ48GA004__)
1006 
1007 #include "devices/pic24fj48ga004_ports.h"
1008 
1009 #elif defined(__PIC24FJ64GA002__)
1010 
1011 #include "devices/pic24fj64ga002_ports.h"
1012 
1013 #elif defined(__PIC24FJ64GA004__)
1014 
1015 #include "devices/pic24fj64ga004_ports.h"
1016 
1017 #elif defined(__PIC24FJ64GA006__)
1018 
1019 #include "devices/pic24fj64ga006_ports.h"
1020 
1021 #elif defined(__PIC24FJ64GA008__)
1022 
1023 #include "devices/pic24fj64ga008_ports.h"
1024 
1025 #elif defined(__PIC24FJ64GA010__)
1026 
1027 #include "devices/pic24fj64ga010_ports.h"
1028 
1029 #elif defined(__PIC24FJ64GA106__)
1030 
1031 #include "devices/pic24fj64ga106_ports.h"
1032 
1033 #elif defined(__PIC24FJ64GA108__)
1034 
1035 #include "devices/pic24fj64ga108_ports.h"
1036 
1037 #elif defined(__PIC24FJ64GA110__)
1038 
1039 #include "devices/pic24fj64ga110_ports.h"
1040 
1041 #elif defined(__PIC24FJ64GB106__)
1042 
1043 #include "devices/pic24fj64gb106_ports.h"
1044 
1045 #elif defined(__PIC24FJ64GB108__)
1046 
1047 #include "devices/pic24fj64gb108_ports.h"
1048 
1049 #elif defined(__PIC24FJ64GB110__)
1050 
1051 #include "devices/pic24fj64gb110_ports.h"
1052 
1053 #elif defined(__PIC24FJ96GA006__)
1054 
1055 #include "devices/pic24fj96ga006_ports.h"
1056 
1057 #elif defined(__PIC24FJ96GA008__)
1058 
1059 #include "devices/pic24fj96ga008_ports.h"
1060 
1061 #elif defined(__PIC24FJ96GA010__)
1062 
1063 #include "devices/pic24fj96ga010_ports.h"
1064 
1065 #elif defined(__dsPIC33FJ06GS101__)
1066 
1067 #include "devices/dspic33fj06gs101_ports.h"
1068 
1069 #elif defined(__dsPIC33FJ06GS102__)
1070 
1071 #include "devices/dspic33fj06gs102_ports.h"
1072 
1073 #elif defined(__dsPIC33FJ06GS202__)
1074 
1075 #include "devices/dspic33fj06gs202_ports.h"
1076 
1077 #elif defined(__dsPIC33FJ128GP202__)
1078 
1079 #include "devices/dspic33fj128gp202_ports.h"
1080 
1081 #elif defined(__dsPIC33FJ128GP204__)
1082 
1083 #include "devices/dspic33fj128gp204_ports.h"
1084 
1085 #elif defined(__dsPIC33FJ128GP206A__)
1086 
1087 #include "devices/dspic33fj128gp206a_ports.h"
1088 
1089 #elif defined(__dsPIC33FJ128GP206__)
1090 
1091 #include "devices/dspic33fj128gp206_ports.h"
1092 
1093 #elif defined(__dsPIC33FJ128GP306A__)
1094 
1095 #include "devices/dspic33fj128gp306a_ports.h"
1096 
1097 #elif defined(__dsPIC33FJ128GP306__)
1098 
1099 #include "devices/dspic33fj128gp306_ports.h"
1100 
1101 #elif defined(__dsPIC33FJ128GP310A__)
1102 
1103 #include "devices/dspic33fj128gp310a_ports.h"
1104 
1105 #elif defined(__dsPIC33FJ128GP310__)
1106 
1107 #include "devices/dspic33fj128gp310_ports.h"
1108 
1109 #elif defined(__dsPIC33FJ128GP706A__)
1110 
1111 #include "devices/dspic33fj128gp706a_ports.h"
1112 
1113 #elif defined(__dsPIC33FJ128GP706__)
1114 
1115 #include "devices/dspic33fj128gp706_ports.h"
1116 
1117 #elif defined(__dsPIC33FJ128GP708A__)
1118 
1119 #include "devices/dspic33fj128gp708a_ports.h"
1120 
1121 #elif defined(__dsPIC33FJ128GP708__)
1122 
1123 #include "devices/dspic33fj128gp708_ports.h"
1124 
1125 #elif defined(__dsPIC33FJ128GP710A__)
1126 
1127 #include "devices/dspic33fj128gp710a_ports.h"
1128 
1129 #elif defined(__dsPIC33FJ128GP710__)
1130 
1131 #include "devices/dspic33fj128gp710_ports.h"
1132 
1133 #elif defined(__dsPIC33FJ128GP802__)
1134 
1135 #include "devices/dspic33fj128gp802_ports.h"
1136 
1137 #elif defined(__dsPIC33FJ128GP804__)
1138 
1139 #include "devices/dspic33fj128gp804_ports.h"
1140 
1141 #elif defined(__dsPIC33FJ128MC202__)
1142 
1143 #include "devices/dspic33fj128mc202_ports.h"
1144 
1145 #elif defined(__dsPIC33FJ128MC204__)
1146 
1147 #include "devices/dspic33fj128mc204_ports.h"
1148 
1149 #elif defined(__dsPIC33FJ128MC506A__)
1150 
1151 #include "devices/dspic33fj128mc506a_ports.h"
1152 
1153 #elif defined(__dsPIC33FJ128MC506__)
1154 
1155 #include "devices/dspic33fj128mc506_ports.h"
1156 
1157 #elif defined(__dsPIC33FJ128MC510A__)
1158 
1159 #include "devices/dspic33fj128mc510a_ports.h"
1160 
1161 #elif defined(__dsPIC33FJ128MC510__)
1162 
1163 #include "devices/dspic33fj128mc510_ports.h"
1164 
1165 #elif defined(__dsPIC33FJ128MC706A__)
1166 
1167 #include "devices/dspic33fj128mc706a_ports.h"
1168 
1169 #elif defined(__dsPIC33FJ128MC706__)
1170 
1171 #include "devices/dspic33fj128mc706_ports.h"
1172 
1173 #elif defined(__dsPIC33FJ128MC708A__)
1174 
1175 #include "devices/dspic33fj128mc708a_ports.h"
1176 
1177 #elif defined(__dsPIC33FJ128MC708__)
1178 
1179 #include "devices/dspic33fj128mc708_ports.h"
1180 
1181 #elif defined(__dsPIC33FJ128MC710A__)
1182 
1183 #include "devices/dspic33fj128mc710a_ports.h"
1184 
1185 #elif defined(__dsPIC33FJ128MC710__)
1186 
1187 #include "devices/dspic33fj128mc710_ports.h"
1188 
1189 #elif defined(__dsPIC33FJ128MC802__)
1190 
1191 #include "devices/dspic33fj128mc802_ports.h"
1192 
1193 #elif defined(__dsPIC33FJ128MC804__)
1194 
1195 #include "devices/dspic33fj128mc804_ports.h"
1196 
1197 #elif defined(__dsPIC33FJ12GP201__)
1198 
1199 #include "devices/dspic33fj12gp201_ports.h"
1200 
1201 #elif defined(__dsPIC33FJ12GP202__)
1202 
1203 #include "devices/dspic33fj12gp202_ports.h"
1204 
1205 #elif defined(__dsPIC33FJ12MC201__)
1206 
1207 #include "devices/dspic33fj12mc201_ports.h"
1208 
1209 #elif defined(__dsPIC33FJ12MC202__)
1210 
1211 #include "devices/dspic33fj12mc202_ports.h"
1212 
1213 #elif defined(__dsPIC33FJ16GP304__)
1214 
1215 #include "devices/dspic33fj16gp304_ports.h"
1216 
1217 #elif defined(__dsPIC33FJ16GS402__)
1218 
1219 #include "devices/dspic33fj16gs402_ports.h"
1220 
1221 #elif defined(__dsPIC33FJ16GS404__)
1222 
1223 #include "devices/dspic33fj16gs404_ports.h"
1224 
1225 #elif defined(__dsPIC33FJ16GS502__)
1226 
1227 #include "devices/dspic33fj16gs502_ports.h"
1228 
1229 #elif defined(__dsPIC33FJ16GS504__)
1230 
1231 #include "devices/dspic33fj16gs504_ports.h"
1232 
1233 #elif defined(__dsPIC33FJ16MC304__)
1234 
1235 #include "devices/dspic33fj16mc304_ports.h"
1236 
1237 #elif defined(__dsPIC33FJ256GP506A__)
1238 
1239 #include "devices/dspic33fj256gp506a_ports.h"
1240 
1241 #elif defined(__dsPIC33FJ256GP506__)
1242 
1243 #include "devices/dspic33fj256gp506_ports.h"
1244 
1245 #elif defined(__dsPIC33FJ256GP510A__)
1246 
1247 #include "devices/dspic33fj256gp510a_ports.h"
1248 
1249 #elif defined(__dsPIC33FJ256GP510__)
1250 
1251 #include "devices/dspic33fj256gp510_ports.h"
1252 
1253 #elif defined(__dsPIC33FJ256GP710A__)
1254 
1255 #include "devices/dspic33fj256gp710a_ports.h"
1256 
1257 #elif defined(__dsPIC33FJ256GP710__)
1258 
1259 #include "devices/dspic33fj256gp710_ports.h"
1260 
1261 #elif defined(__dsPIC33FJ256MC510A__)
1262 
1263 #include "devices/dspic33fj256mc510a_ports.h"
1264 
1265 #elif defined(__dsPIC33FJ256MC510__)
1266 
1267 #include "devices/dspic33fj256mc510_ports.h"
1268 
1269 #elif defined(__dsPIC33FJ256MC710A__)
1270 
1271 #include "devices/dspic33fj256mc710a_ports.h"
1272 
1273 #elif defined(__dsPIC33FJ256MC710__)
1274 
1275 #include "devices/dspic33fj256mc710_ports.h"
1276 
1277 #elif defined(__dsPIC33FJ32GP202__)
1278 
1279 #include "devices/dspic33fj32gp202_ports.h"
1280 
1281 #elif defined(__dsPIC33FJ32GP204__)
1282 
1283 #include "devices/dspic33fj32gp204_ports.h"
1284 
1285 #elif defined(__dsPIC33FJ32GP302__)
1286 
1287 #include "devices/dspic33fj32gp302_ports.h"
1288 
1289 #elif defined(__dsPIC33FJ32GP304__)
1290 
1291 #include "devices/dspic33fj32gp304_ports.h"
1292 
1293 #elif defined(__dsPIC33FJ32GS406__)
1294 
1295 #include "devices/dspic33fj32gs406_ports.h"
1296 
1297 #elif defined(__dsPIC33FJ32GS606__)
1298 
1299 #include "devices/dspic33fj32gs606_ports.h"
1300 
1301 #elif defined(__dsPIC33FJ32GS608__)
1302 
1303 #include "devices/dspic33fj32gs608_ports.h"
1304 
1305 #elif defined(__dsPIC33FJ32GS610__)
1306 
1307 #include "devices/dspic33fj32gs610_ports.h"
1308 
1309 #elif defined(__dsPIC33FJ32MC202__)
1310 
1311 #include "devices/dspic33fj32mc202_ports.h"
1312 
1313 #elif defined(__dsPIC33FJ32MC204__)
1314 
1315 #include "devices/dspic33fj32mc204_ports.h"
1316 
1317 #elif defined(__dsPIC33FJ32MC302__)
1318 
1319 #include "devices/dspic33fj32mc302_ports.h"
1320 
1321 #elif defined(__dsPIC33FJ32MC304__)
1322 
1323 #include "devices/dspic33fj32mc304_ports.h"
1324 
1325 #elif defined(__dsPIC33FJ64GP202__)
1326 
1327 #include "devices/dspic33fj64gp202_ports.h"
1328 
1329 #elif defined(__dsPIC33FJ64GP204__)
1330 
1331 #include "devices/dspic33fj64gp204_ports.h"
1332 
1333 #elif defined(__dsPIC33FJ64GP206A__)
1334 
1335 #include "devices/dspic33fj64gp206a_ports.h"
1336 
1337 #elif defined(__dsPIC33FJ64GP206__)
1338 
1339 #include "devices/dspic33fj64gp206_ports.h"
1340 
1341 #elif defined(__dsPIC33FJ64GP306A__)
1342 
1343 #include "devices/dspic33fj64gp306a_ports.h"
1344 
1345 #elif defined(__dsPIC33FJ64GP306__)
1346 
1347 #include "devices/dspic33fj64gp306_ports.h"
1348 
1349 #elif defined(__dsPIC33FJ64GP310A__)
1350 
1351 #include "devices/dspic33fj64gp310a_ports.h"
1352 
1353 #elif defined(__dsPIC33FJ64GP310__)
1354 
1355 #include "devices/dspic33fj64gp310_ports.h"
1356 
1357 #elif defined(__dsPIC33FJ64GP706A__)
1358 
1359 #include "devices/dspic33fj64gp706a_ports.h"
1360 
1361 #elif defined(__dsPIC33FJ64GP706__)
1362 
1363 #include "devices/dspic33fj64gp706_ports.h"
1364 
1365 #elif defined(__dsPIC33FJ64GP708A__)
1366 
1367 #include "devices/dspic33fj64gp708a_ports.h"
1368 
1369 #elif defined(__dsPIC33FJ64GP708__)
1370 
1371 #include "devices/dspic33fj64gp708_ports.h"
1372 
1373 #elif defined(__dsPIC33FJ64GP710A__)
1374 
1375 #include "devices/dspic33fj64gp710a_ports.h"
1376 
1377 #elif defined(__dsPIC33FJ64GP710__)
1378 
1379 #include "devices/dspic33fj64gp710_ports.h"
1380 
1381 #elif defined(__dsPIC33FJ64GP802__)
1382 
1383 #include "devices/dspic33fj64gp802_ports.h"
1384 
1385 #elif defined(__dsPIC33FJ64GP804__)
1386 
1387 #include "devices/dspic33fj64gp804_ports.h"
1388 
1389 #elif defined(__dsPIC33FJ64GS406__)
1390 
1391 #include "devices/dspic33fj64gs406_ports.h"
1392 
1393 #elif defined(__dsPIC33FJ64GS606__)
1394 
1395 #include "devices/dspic33fj64gs606_ports.h"
1396 
1397 #elif defined(__dsPIC33FJ64GS608__)
1398 
1399 #include "devices/dspic33fj64gs608_ports.h"
1400 
1401 #elif defined(__dsPIC33FJ64GS610__)
1402 
1403 #include "devices/dspic33fj64gs610_ports.h"
1404 
1405 #elif defined(__dsPIC33FJ64MC202__)
1406 
1407 #include "devices/dspic33fj64mc202_ports.h"
1408 
1409 #elif defined(__dsPIC33FJ64MC204__)
1410 
1411 #include "devices/dspic33fj64mc204_ports.h"
1412 
1413 #elif defined(__dsPIC33FJ64MC506A__)
1414 
1415 #include "devices/dspic33fj64mc506a_ports.h"
1416 
1417 #elif defined(__dsPIC33FJ64MC506__)
1418 
1419 #include "devices/dspic33fj64mc506_ports.h"
1420 
1421 #elif defined(__dsPIC33FJ64MC508A__)
1422 
1423 #include "devices/dspic33fj64mc508a_ports.h"
1424 
1425 #elif defined(__dsPIC33FJ64MC508__)
1426 
1427 #include "devices/dspic33fj64mc508_ports.h"
1428 
1429 #elif defined(__dsPIC33FJ64MC510A__)
1430 
1431 #include "devices/dspic33fj64mc510a_ports.h"
1432 
1433 #elif defined(__dsPIC33FJ64MC510__)
1434 
1435 #include "devices/dspic33fj64mc510_ports.h"
1436 
1437 #elif defined(__dsPIC33FJ64MC706A__)
1438 
1439 #include "devices/dspic33fj64mc706a_ports.h"
1440 
1441 #elif defined(__dsPIC33FJ64MC706__)
1442 
1443 #include "devices/dspic33fj64mc706_ports.h"
1444 
1445 #elif defined(__dsPIC33FJ64MC710A__)
1446 
1447 #include "devices/dspic33fj64mc710a_ports.h"
1448 
1449 #elif defined(__dsPIC33FJ64MC710__)
1450 
1451 #include "devices/dspic33fj64mc710_ports.h"
1452 
1453 #elif defined(__dsPIC33FJ64MC802__)
1454 
1455 #include "devices/dspic33fj64mc802_ports.h"
1456 
1457 #elif defined(__dsPIC33FJ64MC804__)
1458 
1459 #include "devices/dspic33fj64mc804_ports.h"
1460 
1461 #elif defined(__PIC24EP64GP202__)
1462 #include "devices/pic24ep64gp202_ports.h"
1463 #elif defined(__dsPIC33EP64GP502__)
1464 #include "devices/dspic33ep64gp502_ports.h"
1465 #elif defined(__PIC24EP64MC202__)
1466 #include "devices/pic24ep64mc202_ports.h"
1467 #elif defined(__dsPIC33EP64MC202__)
1468 #include "devices/dspic33ep64mc202_ports.h"
1469 #elif defined(__dsPIC33EP64MC502__)
1470 #include "devices/dspic33ep64mc502_ports.h"
1471 #elif defined(__PIC24EP256GU810__)
1472 #include "devices/pic24ep256gu810_ports.h"
1473 #elif defined(__PIC24EP256GU814__)
1474 #include "devices/pic24ep256gu814_ports.h"
1475 #elif defined(__dsPIC33EP256MU806__)
1476 #include "devices/dspic33ep256mu806_ports.h"
1477 #elif defined(__dsPIC33EP256MU810__)
1478 #include "devices/dspic33ep256mu810_ports.h"
1479 #elif defined(__dsPIC33EP256MU814__)
1480 #include "devices/dspic33ep256mu814_ports.h"
1481 #elif defined(__dsPIC33EP512MU810__)
1482 #include "devices/dspic33ep512mu810_ports.h"
1483 #elif defined(__dsPIC33EP512MU814__)
1484 #include "devices/dspic33ep512mu814_ports.h"
1485 #elif defined(__dsPIC33EP512GP806__)
1486 #include "devices/dspic33ep512gp806_ports.h"
1487 #elif defined(__dsPIC33EP512MC806__)
1488 #include "devices/dspic33ep512mc806_ports.h"
1489 #elif defined(__PIC24EP512GU810__)
1490 #include "devices/pic24ep512gu810_ports.h"
1491 #elif defined(__PIC24EP512GU814__)
1492 #include "devices/pic24ep512gu814_ports.h"
1493 #elif defined(__PIC24EP512GP806__)
1494 #include "devices/pic24ep512gp806_ports.h"
1495 #else
1496 
1497 
1498 #error -- processor ID not specified in pic24_ports.h
1499 
1500 #endif
1501 
1502 
1503 #ifndef _PIC24_DIGIO_DEFINED
1504 #warning Digital IO macros not defined for this device!
1505 #warning Edit common\pic24_ports.h file!
1506 #endif
1507 
1508 #endif