]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_ATSAM3X_Atmel_Studio/src/asf/common/utils/parts.h
Add SAM3X-EK demo.
[freertos] / FreeRTOS / Demo / CORTEX_ATSAM3X_Atmel_Studio / src / asf / common / utils / parts.h
1 /**\r
2  * \file\r
3  *\r
4  * \brief Atmel part identification macros\r
5  *\r
6  * Copyright (C) 2012 Atmel Corporation. All rights reserved.\r
7  *\r
8  * \asf_license_start\r
9  *\r
10  * \page License\r
11  *\r
12  * Redistribution and use in source and binary forms, with or without\r
13  * modification, are permitted provided that the following conditions are met:\r
14  *\r
15  * 1. Redistributions of source code must retain the above copyright notice,\r
16  *    this list of conditions and the following disclaimer.\r
17  *\r
18  * 2. Redistributions in binary form must reproduce the above copyright notice,\r
19  *    this list of conditions and the following disclaimer in the documentation\r
20  *    and/or other materials provided with the distribution.\r
21  *\r
22  * 3. The name of Atmel may not be used to endorse or promote products derived\r
23  *    from this software without specific prior written permission.\r
24  *\r
25  * 4. This software may only be redistributed and used in connection with an\r
26  *    Atmel microcontroller product.\r
27  *\r
28  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
29  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
30  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
31  * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
32  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
33  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
34  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
36  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
37  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
38  * POSSIBILITY OF SUCH DAMAGE.\r
39  *\r
40  * \asf_license_stop\r
41  *\r
42  */\r
43 \r
44 #ifndef ATMEL_PARTS_H\r
45 #define ATMEL_PARTS_H\r
46 \r
47 /**\r
48  * \defgroup part_macros_group Atmel part identification macros\r
49  *\r
50  * This collection of macros identify which series and families that the various\r
51  * Atmel parts belong to. These can be used to select part-dependent sections of\r
52  * code at compile time.\r
53  *\r
54  * @{\r
55  */\r
56 \r
57 /**\r
58  * \name Convenience macros for part checking\r
59  * @{\r
60  */\r
61 //! Check GCC and IAR part definition for 8-bit AVR\r
62 #define AVR8_PART_IS_DEFINED(part) \\r
63         (defined(__ ## part ## __) || defined(__AVR_ ## part ## __))\r
64 \r
65 //! Check GCC and IAR part definition for 32-bit AVR\r
66 #define AVR32_PART_IS_DEFINED(part) \\r
67         (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __))\r
68 \r
69 //! Check GCC and IAR part definition for SAM\r
70 #define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __))\r
71 /** @} */\r
72 \r
73 /**\r
74  * \defgroup uc3_part_macros_group AVR UC3 parts\r
75  * @{\r
76  */\r
77 \r
78 /**\r
79  * \name AVR UC3 A series\r
80  * @{\r
81  */\r
82 #define UC3A0 ( \\r
83                 AVR32_PART_IS_DEFINED(UC3A0128) || \\r
84                 AVR32_PART_IS_DEFINED(UC3A0256) || \\r
85                 AVR32_PART_IS_DEFINED(UC3A0512)    \\r
86         )\r
87 \r
88 #define UC3A1 ( \\r
89                 AVR32_PART_IS_DEFINED(UC3A1128) || \\r
90                 AVR32_PART_IS_DEFINED(UC3A1256) || \\r
91                 AVR32_PART_IS_DEFINED(UC3A1512)    \\r
92         )\r
93 \r
94 #define UC3A3 ( \\r
95                 AVR32_PART_IS_DEFINED(UC3A364)   || \\r
96                 AVR32_PART_IS_DEFINED(UC3A364S)  || \\r
97                 AVR32_PART_IS_DEFINED(UC3A3128)  || \\r
98                 AVR32_PART_IS_DEFINED(UC3A3128S) || \\r
99                 AVR32_PART_IS_DEFINED(UC3A3256)  || \\r
100                 AVR32_PART_IS_DEFINED(UC3A3256S)    \\r
101         )\r
102 \r
103 #define UC3A4 ( \\r
104                 AVR32_PART_IS_DEFINED(UC3A464)   || \\r
105                 AVR32_PART_IS_DEFINED(UC3A464S)  || \\r
106                 AVR32_PART_IS_DEFINED(UC3A4128)  || \\r
107                 AVR32_PART_IS_DEFINED(UC3A4128S) || \\r
108                 AVR32_PART_IS_DEFINED(UC3A4256)  || \\r
109                 AVR32_PART_IS_DEFINED(UC3A4256S)    \\r
110         )\r
111 /** @} */\r
112 \r
113 /**\r
114  * \name AVR UC3 B series\r
115  * @{\r
116  */\r
117 #define UC3B0 ( \\r
118                 AVR32_PART_IS_DEFINED(UC3B064)  || \\r
119                 AVR32_PART_IS_DEFINED(UC3B0128) || \\r
120                 AVR32_PART_IS_DEFINED(UC3B0256) || \\r
121                 AVR32_PART_IS_DEFINED(UC3B0512)    \\r
122         )\r
123 \r
124 #define UC3B1 ( \\r
125                 AVR32_PART_IS_DEFINED(UC3B164)  || \\r
126                 AVR32_PART_IS_DEFINED(UC3B1128) || \\r
127                 AVR32_PART_IS_DEFINED(UC3B1256) || \\r
128                 AVR32_PART_IS_DEFINED(UC3B1512)    \\r
129         )\r
130 /** @} */\r
131 \r
132 /**\r
133  * \name AVR UC3 C series\r
134  * @{\r
135  */\r
136 #define UC3C0 ( \\r
137                 AVR32_PART_IS_DEFINED(UC3C064C)  || \\r
138                 AVR32_PART_IS_DEFINED(UC3C0128C) || \\r
139                 AVR32_PART_IS_DEFINED(UC3C0256C) || \\r
140                 AVR32_PART_IS_DEFINED(UC3C0512C)    \\r
141         )\r
142 \r
143 #define UC3C1 ( \\r
144                 AVR32_PART_IS_DEFINED(UC3C164C)  || \\r
145                 AVR32_PART_IS_DEFINED(UC3C1128C) || \\r
146                 AVR32_PART_IS_DEFINED(UC3C1256C) || \\r
147                 AVR32_PART_IS_DEFINED(UC3C1512C)    \\r
148         )\r
149 \r
150 #define UC3C2 ( \\r
151                 AVR32_PART_IS_DEFINED(UC3C264C)  || \\r
152                 AVR32_PART_IS_DEFINED(UC3C2128C) || \\r
153                 AVR32_PART_IS_DEFINED(UC3C2256C) || \\r
154                 AVR32_PART_IS_DEFINED(UC3C2512C)    \\r
155         )\r
156 /** @} */\r
157 \r
158 /**\r
159  * \name AVR UC3 D series\r
160  * @{\r
161  */\r
162 #define UC3D3 ( \\r
163                 AVR32_PART_IS_DEFINED(UC64D3)  || \\r
164                 AVR32_PART_IS_DEFINED(UC128D3)    \\r
165         )\r
166 \r
167 #define UC3D4 ( \\r
168                 AVR32_PART_IS_DEFINED(UC64D4)  || \\r
169                 AVR32_PART_IS_DEFINED(UC128D4)    \\r
170         )\r
171 /** @} */\r
172 \r
173 /**\r
174  * \name AVR UC3 L series\r
175  * @{\r
176  */\r
177 #define UC3L0 ( \\r
178                 AVR32_PART_IS_DEFINED(UC3L016) || \\r
179                 AVR32_PART_IS_DEFINED(UC3L032) || \\r
180                 AVR32_PART_IS_DEFINED(UC3L064)    \\r
181         )\r
182 \r
183 #define UC3L0128 ( \\r
184                 AVR32_PART_IS_DEFINED(UC3L0128) \\r
185         )\r
186 \r
187 #define UC3L0256 ( \\r
188                 AVR32_PART_IS_DEFINED(UC3L0256) \\r
189         )\r
190 \r
191 #define UC3L3 ( \\r
192                 AVR32_PART_IS_DEFINED(UC64L3U)  || \\r
193                 AVR32_PART_IS_DEFINED(UC128L3U) || \\r
194                 AVR32_PART_IS_DEFINED(UC256L3U)    \\r
195         )\r
196 \r
197 #define UC3L4 ( \\r
198                 AVR32_PART_IS_DEFINED(UC64L4U)  || \\r
199                 AVR32_PART_IS_DEFINED(UC128L4U) || \\r
200                 AVR32_PART_IS_DEFINED(UC256L4U)    \\r
201         )\r
202 \r
203 #define UC3L3_L4 (UC3L3 || UC3L4)\r
204 /** @} */\r
205 \r
206 /**\r
207  * \name AVR UC3 families\r
208  * @{\r
209  */\r
210 /** AVR UC3 A family */\r
211 #define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4)\r
212 \r
213 /** AVR UC3 B family */\r
214 #define UC3B (UC3B0 || UC3B1)\r
215 \r
216 /** AVR UC3 C family */\r
217 #define UC3C (UC3C0 || UC3C1 || UC3C2)\r
218 \r
219 /** AVR UC3 D family */\r
220 #define UC3D (UC3D3 || UC3D4)\r
221 \r
222 /** AVR UC3 L family */\r
223 #define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4)\r
224 /** @} */\r
225 \r
226 /** AVR UC3 product line */\r
227 #define UC3  (UC3A || UC3B || UC3C || UC3D || UC3L)\r
228 \r
229 /** @} */\r
230 \r
231 /**\r
232  * \defgroup xmega_part_macros_group AVR XMEGA parts\r
233  * @{\r
234  */\r
235 \r
236 /**\r
237  * \name AVR XMEGA A series\r
238  * @{\r
239  */\r
240 #define XMEGA_A1 ( \\r
241                 AVR8_PART_IS_DEFINED(ATxmega64A1)  || \\r
242                 AVR8_PART_IS_DEFINED(ATxmega128A1)    \\r
243         )\r
244 \r
245 #define XMEGA_A3 ( \\r
246                 AVR8_PART_IS_DEFINED(ATxmega64A3)  || \\r
247                 AVR8_PART_IS_DEFINED(ATxmega128A3) || \\r
248                 AVR8_PART_IS_DEFINED(ATxmega192A3) || \\r
249                 AVR8_PART_IS_DEFINED(ATxmega256A3)    \\r
250         )\r
251 \r
252 #define XMEGA_A3B ( \\r
253                 AVR8_PART_IS_DEFINED(ATxmega256A3B) \\r
254         )\r
255 \r
256 #define XMEGA_A4 ( \\r
257                 AVR8_PART_IS_DEFINED(ATxmega16A4) || \\r
258                 AVR8_PART_IS_DEFINED(ATxmega32A4)    \\r
259         )\r
260 /** @} */\r
261 \r
262 /**\r
263  * \name AVR XMEGA AU series\r
264  * @{\r
265  */\r
266 #define XMEGA_A1U ( \\r
267                 AVR8_PART_IS_DEFINED(ATxmega64A1U)  || \\r
268                 AVR8_PART_IS_DEFINED(ATxmega128A1U)    \\r
269         )\r
270 \r
271 #define XMEGA_A3U ( \\r
272                 AVR8_PART_IS_DEFINED(ATxmega64A3U)  || \\r
273                 AVR8_PART_IS_DEFINED(ATxmega128A3U) || \\r
274                 AVR8_PART_IS_DEFINED(ATxmega192A3U) || \\r
275                 AVR8_PART_IS_DEFINED(ATxmega256A3U)    \\r
276         )\r
277 \r
278 #define XMEGA_A3BU ( \\r
279                 AVR8_PART_IS_DEFINED(ATxmega256A3BU) \\r
280         )\r
281 \r
282 #define XMEGA_A4U ( \\r
283                 AVR8_PART_IS_DEFINED(ATxmega16A4U)  || \\r
284                 AVR8_PART_IS_DEFINED(ATxmega32A4U)  || \\r
285                 AVR8_PART_IS_DEFINED(ATxmega64A4U)  || \\r
286                 AVR8_PART_IS_DEFINED(ATxmega128A4U)    \\r
287         )\r
288 /** @} */\r
289 \r
290 /**\r
291  * \name AVR XMEGA B series\r
292  * @{\r
293  */\r
294 #define XMEGA_B1  ( \\r
295                 AVR8_PART_IS_DEFINED(ATxmega64B1)  || \\r
296                 AVR8_PART_IS_DEFINED(ATxmega128B1)    \\r
297         )\r
298 \r
299 #define XMEGA_B3  ( \\r
300                 AVR8_PART_IS_DEFINED(ATxmega64B3)  || \\r
301                 AVR8_PART_IS_DEFINED(ATxmega128B3)    \\r
302         )\r
303 /** @} */\r
304 \r
305 /**\r
306  * \name AVR XMEGA C series\r
307  * @{\r
308  */\r
309 #define XMEGA_C3 ( \\r
310                 AVR8_PART_IS_DEFINED(ATxmega384C3)  || \\r
311                 AVR8_PART_IS_DEFINED(ATxmega256C3)     \\r
312         )\r
313 \r
314 #define XMEGA_C4 ( \\r
315                 AVR8_PART_IS_DEFINED(ATxmega32C4)  || \\r
316                 AVR8_PART_IS_DEFINED(ATxmega16C4)     \\r
317         )\r
318 /** @} */\r
319 \r
320 /**\r
321  * \name AVR XMEGA D series\r
322  * @{\r
323  */\r
324 #define XMEGA_D3 ( \\r
325                 AVR8_PART_IS_DEFINED(ATxmega64D3)  || \\r
326                 AVR8_PART_IS_DEFINED(ATxmega128D3) || \\r
327                 AVR8_PART_IS_DEFINED(ATxmega192D3) || \\r
328                 AVR8_PART_IS_DEFINED(ATxmega256D3) || \\r
329                 AVR8_PART_IS_DEFINED(ATxmega384D3)    \\r
330         )\r
331 \r
332 #define XMEGA_D4 ( \\r
333                 AVR8_PART_IS_DEFINED(ATxmega16D4)  || \\r
334                 AVR8_PART_IS_DEFINED(ATxmega32D4)  || \\r
335                 AVR8_PART_IS_DEFINED(ATxmega64D4)  || \\r
336                 AVR8_PART_IS_DEFINED(ATxmega128D4)    \\r
337         )\r
338 /** @} */\r
339 \r
340 /**\r
341  * \name AVR XMEGA families\r
342  * @{\r
343  */\r
344 /** AVR XMEGA A family */\r
345 #define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4)\r
346 \r
347 /** AVR XMEGA AU family */\r
348 #define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U)\r
349 \r
350 /** AVR XMEGA B family */\r
351 #define XMEGA_B (XMEGA_B1 || XMEGA_B3)\r
352 \r
353 /** AVR XMEGA C family */\r
354 #define XMEGA_C (XMEGA_C3 || XMEGA_C4)\r
355 \r
356 /** AVR XMEGA D family */\r
357 #define XMEGA_D (XMEGA_D3 || XMEGA_D4)\r
358 /** @} */\r
359 \r
360 /** AVR XMEGA product line */\r
361 #define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D)\r
362 \r
363 /** @} */\r
364 \r
365 /**\r
366  * \defgroup mega_part_macros_group megaAVR parts\r
367  *\r
368  * \note These megaAVR groupings are based on the groups in AVR Libc for the\r
369  * part header files. They are not names of official megaAVR device series or\r
370  * families.\r
371  *\r
372  * @{\r
373  */\r
374 \r
375 /**\r
376  * \name ATmegaxx0/xx1 subgroups\r
377  * @{\r
378  */\r
379 #define MEGA_XX0 ( \\r
380                 AVR8_PART_IS_DEFINED(ATmega640)  || \\r
381                 AVR8_PART_IS_DEFINED(ATmega1280) || \\r
382                 AVR8_PART_IS_DEFINED(ATmega2560)    \\r
383         )\r
384 \r
385 #define MEGA_XX1 ( \\r
386                 AVR8_PART_IS_DEFINED(ATmega1281) || \\r
387                 AVR8_PART_IS_DEFINED(ATmega2561)    \\r
388         )\r
389 /** @} */\r
390 \r
391 /**\r
392  * \name megaAVR groups\r
393  * @{\r
394  */\r
395 /** ATmegaxx0/xx1 group */\r
396 #define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1)\r
397 \r
398 /** ATmegaxx4 group */\r
399 #define MEGA_XX4 ( \\r
400                 AVR8_PART_IS_DEFINED(ATmega164A)  || \\r
401                 AVR8_PART_IS_DEFINED(ATmega164PA) || \\r
402                 AVR8_PART_IS_DEFINED(ATmega324)   || \\r
403                 AVR8_PART_IS_DEFINED(ATmega324A)  || \\r
404                 AVR8_PART_IS_DEFINED(ATmega324PA) || \\r
405                 AVR8_PART_IS_DEFINED(ATmega644)   || \\r
406                 AVR8_PART_IS_DEFINED(ATmega644A)  || \\r
407                 AVR8_PART_IS_DEFINED(ATmega644PA) || \\r
408                 AVR8_PART_IS_DEFINED(ATmega1284P)    \\r
409         )\r
410 \r
411 /** ATmegaxx4 group */\r
412 #define MEGA_XX4_A ( \\r
413                 AVR8_PART_IS_DEFINED(ATmega164A)  || \\r
414                 AVR8_PART_IS_DEFINED(ATmega164PA) || \\r
415                 AVR8_PART_IS_DEFINED(ATmega324A)  || \\r
416                 AVR8_PART_IS_DEFINED(ATmega324PA) || \\r
417                 AVR8_PART_IS_DEFINED(ATmega644A)  || \\r
418                 AVR8_PART_IS_DEFINED(ATmega644PA) || \\r
419                 AVR8_PART_IS_DEFINED(ATmega1284P)    \\r
420         )\r
421 \r
422 /** ATmegaxx8 group */\r
423 #define MEGA_XX8 ( \\r
424                 AVR8_PART_IS_DEFINED(ATmega48)    || \\r
425                 AVR8_PART_IS_DEFINED(ATmega48A)   || \\r
426                 AVR8_PART_IS_DEFINED(ATmega48PA)  || \\r
427                 AVR8_PART_IS_DEFINED(ATmega88)    || \\r
428                 AVR8_PART_IS_DEFINED(ATmega88A)   || \\r
429                 AVR8_PART_IS_DEFINED(ATmega88PA)  || \\r
430                 AVR8_PART_IS_DEFINED(ATmega168)   || \\r
431                 AVR8_PART_IS_DEFINED(ATmega168A)  || \\r
432                 AVR8_PART_IS_DEFINED(ATmega168PA) || \\r
433                 AVR8_PART_IS_DEFINED(ATmega328)   || \\r
434                 AVR8_PART_IS_DEFINED(ATmega328P)     \\r
435         )\r
436 \r
437 /** ATmegaxx8A/P/PA group */\r
438 #define MEGA_XX8_A ( \\r
439                 AVR8_PART_IS_DEFINED(ATmega48A)   || \\r
440                 AVR8_PART_IS_DEFINED(ATmega48PA)  || \\r
441                 AVR8_PART_IS_DEFINED(ATmega88A)   || \\r
442                 AVR8_PART_IS_DEFINED(ATmega88PA)  || \\r
443                 AVR8_PART_IS_DEFINED(ATmega168A)  || \\r
444                 AVR8_PART_IS_DEFINED(ATmega168PA) || \\r
445                 AVR8_PART_IS_DEFINED(ATmega328P)     \\r
446         )\r
447 \r
448 /** ATmegaxx group */\r
449 #define MEGA_XX ( \\r
450                 AVR8_PART_IS_DEFINED(ATmega16)   || \\r
451                 AVR8_PART_IS_DEFINED(ATmega16A)  || \\r
452                 AVR8_PART_IS_DEFINED(ATmega32)   || \\r
453                 AVR8_PART_IS_DEFINED(ATmega32A)  || \\r
454                 AVR8_PART_IS_DEFINED(ATmega64)   || \\r
455                 AVR8_PART_IS_DEFINED(ATmega64A)  || \\r
456                 AVR8_PART_IS_DEFINED(ATmega128)  || \\r
457                 AVR8_PART_IS_DEFINED(ATmega128A)    \\r
458         )\r
459 \r
460 /** ATmegaxxA/P/PA group */\r
461 #define MEGA_XX_A ( \\r
462                 AVR8_PART_IS_DEFINED(ATmega16A)  || \\r
463                 AVR8_PART_IS_DEFINED(ATmega32A)  || \\r
464                 AVR8_PART_IS_DEFINED(ATmega64A)  || \\r
465                 AVR8_PART_IS_DEFINED(ATmega128A)    \\r
466         )\r
467 \r
468 /** Unspecified group */\r
469 #define MEGA_UNSPECIFIED ( \\r
470                 AVR8_PART_IS_DEFINED(ATmega16)    || \\r
471                 AVR8_PART_IS_DEFINED(ATmega16A)   || \\r
472                 AVR8_PART_IS_DEFINED(ATmega32)    || \\r
473                 AVR8_PART_IS_DEFINED(ATmega32A)   || \\r
474                 AVR8_PART_IS_DEFINED(ATmega64)    || \\r
475                 AVR8_PART_IS_DEFINED(ATmega64A)   || \\r
476                 AVR8_PART_IS_DEFINED(ATmega128)   || \\r
477                 AVR8_PART_IS_DEFINED(ATmega128A)  || \\r
478                 AVR8_PART_IS_DEFINED(ATmega169P)  || \\r
479                 AVR8_PART_IS_DEFINED(ATmega169PA) || \\r
480                 AVR8_PART_IS_DEFINED(ATmega329P)  || \\r
481                 AVR8_PART_IS_DEFINED(ATmega329PA)    \\r
482         )\r
483 /** @} */\r
484 \r
485 /** megaAVR product line */\r
486 #define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_UNSPECIFIED)\r
487 \r
488 /** @} */\r
489 \r
490 /**\r
491  * \defgroup sam_part_macros_group SAM parts\r
492  * @{\r
493  */\r
494 \r
495 /**\r
496  * \name SAM3S series\r
497  * @{\r
498  */\r
499 #define SAM3S1 ( \\r
500                 SAM_PART_IS_DEFINED(SAM3S1A) || \\r
501                 SAM_PART_IS_DEFINED(SAM3S1B) || \\r
502                 SAM_PART_IS_DEFINED(SAM3S1C)    \\r
503         )\r
504 \r
505 #define SAM3S2 ( \\r
506                 SAM_PART_IS_DEFINED(SAM3S2A) || \\r
507                 SAM_PART_IS_DEFINED(SAM3S2B) || \\r
508                 SAM_PART_IS_DEFINED(SAM3S2C)    \\r
509         )\r
510 \r
511 #define SAM3S4 ( \\r
512                 SAM_PART_IS_DEFINED(SAM3S4A) || \\r
513                 SAM_PART_IS_DEFINED(SAM3S4B) || \\r
514                 SAM_PART_IS_DEFINED(SAM3S4C)    \\r
515         )\r
516 \r
517 #define SAM3S8 ( \\r
518                 SAM_PART_IS_DEFINED(SAM3S8B) || \\r
519                 SAM_PART_IS_DEFINED(SAM3S8C)    \\r
520         )\r
521 \r
522 #define SAM3SD8 ( \\r
523                 SAM_PART_IS_DEFINED(SAM3SD8B) || \\r
524                 SAM_PART_IS_DEFINED(SAM3SD8C)    \\r
525         )\r
526 /** @} */\r
527 \r
528 /**\r
529  * \name SAM3U series\r
530  * @{\r
531  */\r
532 #define SAM3U1 ( \\r
533                 SAM_PART_IS_DEFINED(SAM3U1C) || \\r
534                 SAM_PART_IS_DEFINED(SAM3U1E)    \\r
535         )\r
536 \r
537 #define SAM3U2 ( \\r
538                 SAM_PART_IS_DEFINED(SAM3U2C) || \\r
539                 SAM_PART_IS_DEFINED(SAM3U2E)    \\r
540         )\r
541 \r
542 #define SAM3U4 ( \\r
543                 SAM_PART_IS_DEFINED(SAM3U4C) || \\r
544                 SAM_PART_IS_DEFINED(SAM3U4E)    \\r
545         )\r
546 /** @} */\r
547 \r
548 /**\r
549  * \name SAM3N series\r
550  * @{\r
551  */\r
552 #define SAM3N1 ( \\r
553                 SAM_PART_IS_DEFINED(SAM3N1A) || \\r
554                 SAM_PART_IS_DEFINED(SAM3N1B) || \\r
555                 SAM_PART_IS_DEFINED(SAM3N1C)    \\r
556         )\r
557 \r
558 #define SAM3N2 ( \\r
559                 SAM_PART_IS_DEFINED(SAM3N2A) || \\r
560                 SAM_PART_IS_DEFINED(SAM3N2B) || \\r
561                 SAM_PART_IS_DEFINED(SAM3N2C)    \\r
562         )\r
563 \r
564 #define SAM3N4 ( \\r
565                 SAM_PART_IS_DEFINED(SAM3N4A) || \\r
566                 SAM_PART_IS_DEFINED(SAM3N4B) || \\r
567                 SAM_PART_IS_DEFINED(SAM3N4C)    \\r
568         )\r
569 /** @} */\r
570 \r
571 /**\r
572  * \name SAM3X series\r
573  * @{\r
574  */\r
575 #define SAM3X4 ( \\r
576                 SAM_PART_IS_DEFINED(SAM3X4C) || \\r
577                 SAM_PART_IS_DEFINED(SAM3X4E)    \\r
578         )\r
579 \r
580 #define SAM3X8 ( \\r
581                 SAM_PART_IS_DEFINED(SAM3X8C) || \\r
582                 SAM_PART_IS_DEFINED(SAM3X8E) || \\r
583                 SAM_PART_IS_DEFINED(SAM3X8H)    \\r
584         )\r
585 /** @} */\r
586 \r
587 /**\r
588  * \name SAM3A series\r
589  * @{\r
590  */\r
591 #define SAM3A4 ( \\r
592                 SAM_PART_IS_DEFINED(SAM3A4C)    \\r
593         )\r
594 \r
595 #define SAM3A8 ( \\r
596                 SAM_PART_IS_DEFINED(SAM3A8C)    \\r
597         )\r
598 /** @} */\r
599 \r
600 /**\r
601  * \name SAM4S series\r
602  * @{\r
603  */\r
604 #define SAM4S8 ( \\r
605                 SAM_PART_IS_DEFINED(SAM4S8B) || \\r
606                 SAM_PART_IS_DEFINED(SAM4S8C)    \\r
607         )\r
608 \r
609 #define SAM4S16 ( \\r
610                 SAM_PART_IS_DEFINED(SAM4S16B) || \\r
611                 SAM_PART_IS_DEFINED(SAM4S16C)    \\r
612         )\r
613 /** @} */\r
614 \r
615 /**\r
616  * \name SAM families\r
617  * @{\r
618  */\r
619 /** SAM3S Family */\r
620 #define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8)\r
621 \r
622 /** SAM3U Family */\r
623 #define SAM3U (SAM3U1 || SAM3U2 || SAM3U4)\r
624 \r
625 /** SAM3N Family */\r
626 #define SAM3N (SAM3N1 || SAM3N2 || SAM3N4)\r
627 \r
628 /** SAM3XA Family */\r
629 #define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8)\r
630 \r
631 /** SAM4S Family */\r
632 #define SAM4S (SAM4S8 || SAM4S16)\r
633 /** @} */\r
634 \r
635 /** SAM product line */\r
636 #define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S)\r
637 \r
638 /** @} */\r
639 \r
640 /** @} */\r
641 \r
642 #endif /* ATMEL_PARTS_H */\r