source: rtos_arduino/trunk/arduino_lib/hardware/tools/CMSIS/Device/ATMEL/sam.h@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

File size: 16.4 KB
Line 
1/* ----------------------------------------------------------------------------
2 * SAM Software Package License
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2014, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following condition is met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29#ifndef _SAM_INCLUDED_
30#define _SAM_INCLUDED_
31
32#define part_is_defined(part) (defined(__ ## part ## __))
33
34/*
35 * ----------------------------------------------------------------------------
36 * WISC family
37 * ----------------------------------------------------------------------------
38 */
39
40/* WISC35 series */
41#define WISC35D3N ( \
42 part_is_defined( WISC35D3NA ) )
43
44/* Entire WISC35 series */
45#define WISC35_SERIES (WISC35D3N)
46
47/* Entire WISC family */
48#define WISC_SERIES (WISC35_SERIES)
49
50/*
51 * ----------------------------------------------------------------------------
52 * SAML family
53 * ----------------------------------------------------------------------------
54 */
55
56/* SAML21 series */
57#define SAML21G18 ( \
58 part_is_defined( SAML21G18A ) )
59
60#define SAML21G16 ( \
61 part_is_defined( SAML21G16A ) )
62
63#define SAML21G17 ( \
64 part_is_defined( SAML21G17A ) )
65
66#define SAML21J18 ( \
67 part_is_defined( SAML21J18A ) )
68
69#define SAML21J17 ( \
70 part_is_defined( SAML21J17A ) )
71
72#define SAML21J16 ( \
73 part_is_defined( SAML21J16A ) )
74
75#define SAML21E15 ( \
76 part_is_defined( SAML21E15A ) )
77
78#define SAML21E16 ( \
79 part_is_defined( SAML21E16A ) )
80
81#define SAML21E17 ( \
82 part_is_defined( SAML21E17A ) )
83
84/* Entire SAML21 series */
85#define SAML21_SERIES (SAML21G18 || SAML21G16 || SAML21G17 || SAML21J18 || SAML21J17 || SAML21J16 || SAML21E15 || SAML21E16 || SAML21E17)
86
87/* Entire SAML family */
88#define SAML_SERIES (SAML21_SERIES)
89
90/*
91 * ----------------------------------------------------------------------------
92 * SAMG family
93 * ----------------------------------------------------------------------------
94 */
95
96/* SAMG51 series */
97#define SAMG51N1 ( \
98 part_is_defined( SAMG51N18 ) )
99
100#define SAMG51G1 ( \
101 part_is_defined( SAMG51G18 ) )
102
103/* Entire SAMG51 series */
104#define SAMG51_SERIES (SAMG51N1 || SAMG51G1)
105
106/* SAMG53 series */
107#define SAMG53N1 ( \
108 part_is_defined( SAMG53N19 ) )
109
110#define SAMG53G1 ( \
111 part_is_defined( SAMG53G19 ) )
112
113/* Entire SAMG53 series */
114#define SAMG53_SERIES (SAMG53N1 || SAMG53G1)
115
116/* SAMG54 series */
117#define SAMG54N1 ( \
118 part_is_defined( SAMG54N19 ) )
119
120#define SAMG54J1 ( \
121 part_is_defined( SAMG54J19 ) )
122
123#define SAMG54G1 ( \
124 part_is_defined( SAMG54G19 ) )
125
126/* Entire SAMG54 series */
127#define SAMG54_SERIES (SAMG54N1 || SAMG54J1 || SAMG54G1)
128
129/* Entire SAMG family */
130#define SAMG_SERIES (SAMG53_SERIES || SAMG54_SERIES || SAMG51_SERIES)
131
132/*
133 * ----------------------------------------------------------------------------
134 * SAMD family
135 * ----------------------------------------------------------------------------
136 */
137
138/* SAMD11 series */
139#define SAMD11D14 ( \
140 part_is_defined( SAMD11D14A ) )
141
142#define SAMD11D12 ( \
143 part_is_defined( SAMD11D12A ) )
144
145#define SAMD11D13 ( \
146 part_is_defined( SAMD11D13A ) )
147
148#define SAMD11C13 ( \
149 part_is_defined( SAMD11C13A ) )
150
151#define SAMD11C12 ( \
152 part_is_defined( SAMD11C12A ) )
153
154#define SAMD11C14 ( \
155 part_is_defined( SAMD11C14A ) )
156
157#define SAMD11E13 ( \
158 part_is_defined( SAMD11E13A ) )
159
160#define SAMD11E12 ( \
161 part_is_defined( SAMD11E12A ) )
162
163#define SAMD11E14 ( \
164 part_is_defined( SAMD11E14A ) )
165
166/* Entire SAMD11 series */
167#define SAMD11_SERIES (SAMD11D14 || SAMD11D12 || SAMD11D13 || SAMD11C13 || SAMD11C12 || SAMD11C14 || SAMD11E13 || SAMD11E12 || SAMD11E14)
168
169/* SAMD10 series */
170#define SAMD10D13 ( \
171 part_is_defined( SAMD10D13A ) )
172
173#define SAMD10D12 ( \
174 part_is_defined( SAMD10D12A ) )
175
176#define SAMD10D14 ( \
177 part_is_defined( SAMD10D14A ) )
178
179#define SAMD10E14 ( \
180 part_is_defined( SAMD10E14A ) )
181
182#define SAMD10E12 ( \
183 part_is_defined( SAMD10E12A ) )
184
185#define SAMD10E13 ( \
186 part_is_defined( SAMD10E13A ) )
187
188#define SAMD10C14 ( \
189 part_is_defined( SAMD10C14A ) )
190
191#define SAMD10C12 ( \
192 part_is_defined( SAMD10C12A ) )
193
194#define SAMD10C13 ( \
195 part_is_defined( SAMD10C13A ) )
196
197/* Entire SAMD10 series */
198#define SAMD10_SERIES (SAMD10D13 || SAMD10D12 || SAMD10D14 || SAMD10E14 || SAMD10E12 || SAMD10E13 || SAMD10C14 || SAMD10C12 || SAMD10C13)
199
200/* SAMD21 series */
201#define SAMD21J17 ( \
202 part_is_defined( SAMD21J17A ) )
203
204#define SAMD21E15 ( \
205 part_is_defined( SAMD21E15A ) )
206
207#define SAMD21E16 ( \
208 part_is_defined( SAMD21E16A ) )
209
210#define SAMD21E17 ( \
211 part_is_defined( SAMD21E17A ) )
212
213#define SAMD21E18 ( \
214 part_is_defined( SAMD21E18A ) )
215
216#define SAMD21J16 ( \
217 part_is_defined( SAMD21J16A ) )
218
219#define SAMD21G16 ( \
220 part_is_defined( SAMD21G16A ) )
221
222#define SAMD21G17 ( \
223 part_is_defined( SAMD21G17A ) )
224
225#define SAMD21J15 ( \
226 part_is_defined( SAMD21J15A ) )
227
228#define SAMD21G15 ( \
229 part_is_defined( SAMD21G15A ) )
230
231#define SAMD21G18 ( \
232 part_is_defined( SAMD21G18A ) )
233
234#define SAMD21J18 ( \
235 part_is_defined( SAMD21J18A ) )
236
237/* Entire SAMD21 series */
238#define SAMD21_SERIES (SAMD21J17 || SAMD21E15 || SAMD21E16 || SAMD21E17 || SAMD21E18 || SAMD21J16 || SAMD21G16 || SAMD21G17 || SAMD21J15 || SAMD21G15 || SAMD21G18 || SAMD21J18)
239
240/* SAMD20 series */
241#define SAMD20J1 ( \
242 part_is_defined( SAMD20J14 ) || \
243 part_is_defined( SAMD20J15 ) || \
244 part_is_defined( SAMD20J16 ) || \
245 part_is_defined( SAMD20J17 ) || \
246 part_is_defined( SAMD20J18 ) )
247
248#define SAMD20G1 ( \
249 part_is_defined( SAMD20G14 ) || \
250 part_is_defined( SAMD20G15 ) || \
251 part_is_defined( SAMD20G16 ) || \
252 part_is_defined( SAMD20G17 ) || \
253 part_is_defined( SAMD20G18 ) )
254
255#define SAMD20E1 ( \
256 part_is_defined( SAMD20E14 ) || \
257 part_is_defined( SAMD20E15 ) || \
258 part_is_defined( SAMD20E16 ) || \
259 part_is_defined( SAMD20E17 ) || \
260 part_is_defined( SAMD20E18 ) || \
261 part_is_defined( SAMD20E1F ) )
262
263/* Entire SAMD20 series */
264#define SAMD20_SERIES (SAMD20J1 || SAMD20G1 || SAMD20E1)
265
266/* Entire SAMD family */
267#define SAMD_SERIES (SAMD11_SERIES || SAMD21_SERIES || SAMD20_SERIES || SAMD10_SERIES)
268
269/*
270 * ----------------------------------------------------------------------------
271 * SAM3 family
272 * ----------------------------------------------------------------------------
273 */
274
275/* SAM3U series */
276#define SAM3U1 ( \
277 part_is_defined( SAM3U1E ) || \
278 part_is_defined( SAM3U1C ) )
279
280#define SAM3U2 ( \
281 part_is_defined( SAM3U2E ) || \
282 part_is_defined( SAM3U2C ) )
283
284#define SAM3U4 ( \
285 part_is_defined( SAM3U4E ) || \
286 part_is_defined( SAM3U4C ) )
287
288/* Entire SAM3U series */
289#define SAM3U_SERIES (SAM3U1 || SAM3U2 || SAM3U4)
290
291/* SAM3S series */
292#define SAM3S2 ( \
293 part_is_defined( SAM3S2C ) || \
294 part_is_defined( SAM3S2B ) || \
295 part_is_defined( SAM3S2A ) )
296
297#define SAM3S1 ( \
298 part_is_defined( SAM3S1C ) || \
299 part_is_defined( SAM3S1B ) || \
300 part_is_defined( SAM3S1A ) )
301
302#define SAM3S4 ( \
303 part_is_defined( SAM3S4C ) || \
304 part_is_defined( SAM3S4B ) || \
305 part_is_defined( SAM3S4A ) )
306
307/* Entire SAM3S series */
308#define SAM3S_SERIES (SAM3S2 || SAM3S1 || SAM3S4)
309
310/* SAM3XA series */
311#define SAM3A4 ( \
312 part_is_defined( SAM3A4C ) )
313
314#define SAM3X4 ( \
315 part_is_defined( SAM3X4C ) || \
316 part_is_defined( SAM3X4E ) )
317
318#define SAM3A8 ( \
319 part_is_defined( SAM3A8C ) )
320
321#define SAM3X8 ( \
322 part_is_defined( SAM3X8C ) || \
323 part_is_defined( SAM3X8E ) || \
324 part_is_defined( SAM3X8H ) )
325
326/* Entire SAM3XA series */
327#define SAM3XA_SERIES (SAM3A4 || SAM3X4 || SAM3A8 || SAM3X8)
328
329/* SAM3SD8 series */
330#define SAM3S8 ( \
331 part_is_defined( SAM3S8C ) || \
332 part_is_defined( SAM3S8B ) )
333
334#define SAM3SD8 ( \
335 part_is_defined( SAM3SD8C ) || \
336 part_is_defined( SAM3SD8B ) )
337
338/* Entire SAM3SD8 series */
339#define SAM3SD8_SERIES (SAM3S8 || SAM3SD8)
340
341/* SAM3N series */
342#define SAM3N1 ( \
343 part_is_defined( SAM3N1C ) || \
344 part_is_defined( SAM3N1B ) || \
345 part_is_defined( SAM3N1A ) )
346
347#define SAM3N0 ( \
348 part_is_defined( SAM3N0C ) || \
349 part_is_defined( SAM3N0B ) || \
350 part_is_defined( SAM3N0A ) )
351
352#define SAM3N00 ( \
353 part_is_defined( SAM3N00B ) || \
354 part_is_defined( SAM3N00A ) )
355
356#define SAM3N2 ( \
357 part_is_defined( SAM3N2C ) || \
358 part_is_defined( SAM3N2B ) || \
359 part_is_defined( SAM3N2A ) )
360
361#define SAM3N4 ( \
362 part_is_defined( SAM3N4C ) || \
363 part_is_defined( SAM3N4B ) || \
364 part_is_defined( SAM3N4A ) )
365
366/* Entire SAM3N series */
367#define SAM3N_SERIES (SAM3N1 || SAM3N0 || SAM3N00 || SAM3N2 || SAM3N4)
368
369/* Entire SAM3 family */
370#define SAM3_SERIES (SAM3S_SERIES || SAM3N_SERIES || SAM3U_SERIES || SAM3XA_SERIES || SAM3SD8_SERIES)
371
372/*
373 * ----------------------------------------------------------------------------
374 * SAMR family
375 * ----------------------------------------------------------------------------
376 */
377
378/* SAMR21 series */
379#define SAMR21E16 ( \
380 part_is_defined( SAMR21E16A ) )
381
382#define SAMR21E18 ( \
383 part_is_defined( SAMR21E18A ) )
384
385#define SAMR21G16 ( \
386 part_is_defined( SAMR21G16A ) )
387
388#define SAMR21G17 ( \
389 part_is_defined( SAMR21G17A ) )
390
391#define SAMR21G18 ( \
392 part_is_defined( SAMR21G18A ) )
393
394#define SAMR21E17 ( \
395 part_is_defined( SAMR21E17A ) )
396
397/* Entire SAMR21 series */
398#define SAMR21_SERIES (SAMR21E16 || SAMR21E18 || SAMR21G16 || SAMR21G17 || SAMR21G18 || SAMR21E17)
399
400/* Entire SAMR family */
401#define SAMR_SERIES (SAMR21_SERIES)
402
403/*
404 * ----------------------------------------------------------------------------
405 * SAM4 family
406 * ----------------------------------------------------------------------------
407 */
408
409/* SAM4CP series */
410#define SAM4CP16B_ ( \
411 part_is_defined( SAM4CP16B_0 ) || \
412 part_is_defined( SAM4CP16B_1 ) )
413
414/* Entire SAM4CP series */
415#define SAM4CP_SERIES (SAM4CP16B_)
416
417/* SAM4N series */
418#define SAM4N8 ( \
419 part_is_defined( SAM4N8A ) || \
420 part_is_defined( SAM4N8B ) || \
421 part_is_defined( SAM4N8C ) )
422
423#define SAM4N16 ( \
424 part_is_defined( SAM4N16B ) || \
425 part_is_defined( SAM4N16C ) )
426
427/* Entire SAM4N series */
428#define SAM4N_SERIES (SAM4N8 || SAM4N16)
429
430/* SAM4S series */
431#define SAM4S8 ( \
432 part_is_defined( SAM4S8C ) || \
433 part_is_defined( SAM4S8B ) )
434
435#define SAM4S2 ( \
436 part_is_defined( SAM4S2A ) || \
437 part_is_defined( SAM4S2B ) || \
438 part_is_defined( SAM4S2C ) )
439
440#define SAM4S4 ( \
441 part_is_defined( SAM4S4A ) || \
442 part_is_defined( SAM4S4B ) || \
443 part_is_defined( SAM4S4C ) )
444
445#define SAM4SD16 ( \
446 part_is_defined( SAM4SD16B ) || \
447 part_is_defined( SAM4SD16C ) )
448
449#define SAM4S16 ( \
450 part_is_defined( SAM4S16C ) || \
451 part_is_defined( SAM4S16B ) )
452
453#define SAM4SD32 ( \
454 part_is_defined( SAM4SD32B ) || \
455 part_is_defined( SAM4SD32C ) )
456
457#define SAM4SA16 ( \
458 part_is_defined( SAM4SA16B ) || \
459 part_is_defined( SAM4SA16C ) )
460
461/* Entire SAM4S series */
462#define SAM4S_SERIES (SAM4S8 || SAM4S2 || SAM4S4 || SAM4SD16 || SAM4S16 || SAM4SD32 || SAM4SA16)
463
464/* SAM4SP series */
465#define SAM4SP32 ( \
466 part_is_defined( SAM4SP32A ) )
467
468/* Entire SAM4SP series */
469#define SAM4SP_SERIES (SAM4SP32)
470
471/* SAM4E series */
472#define SAM4E16 ( \
473 part_is_defined( SAM4E16E ) || \
474 part_is_defined( SAM4E16C ) )
475
476#define SAM4E8 ( \
477 part_is_defined( SAM4E8E ) || \
478 part_is_defined( SAM4E8C ) )
479
480/* Entire SAM4E series */
481#define SAM4E_SERIES (SAM4E16 || SAM4E8)
482
483/* SAM4C series */
484#define SAM4C8C_ ( \
485 part_is_defined( SAM4C8C_0 ) || \
486 part_is_defined( SAM4C8C_1 ) )
487
488#define SAM4C16C_ ( \
489 part_is_defined( SAM4C16C_0 ) || \
490 part_is_defined( SAM4C16C_1 ) )
491
492/* Entire SAM4C series */
493#define SAM4C_SERIES (SAM4C8C_ || SAM4C16C_)
494
495/* SAM4L series */
496#define SAM4LS4 ( \
497 part_is_defined( ATSAM4LS4A ) || part_is_defined( SAM4LS4A ) || \
498 part_is_defined( ATSAM4LS4B ) || part_is_defined( SAM4LS4B ) || \
499 part_is_defined( ATSAM4LS4C ) || part_is_defined( SAM4LS4C ) )
500
501#define SAM4LS2 ( \
502 part_is_defined( ATSAM4LS2A ) || part_is_defined( SAM4LS2A ) || \
503 part_is_defined( ATSAM4LS2B ) || part_is_defined( SAM4LS2B ) || \
504 part_is_defined( ATSAM4LS2C ) || part_is_defined( SAM4LS2C ) )
505
506#define SAM4LS8 ( \
507 part_is_defined( ATSAM4LS8A ) || part_is_defined( SAM4LS8A ) || \
508 part_is_defined( ATSAM4LS8B ) || part_is_defined( SAM4LS8B ) || \
509 part_is_defined( ATSAM4LS8C ) || part_is_defined( SAM4LS8C ) )
510
511#define SAM4LC4 ( \
512 part_is_defined( ATSAM4LC4A ) || part_is_defined( SAM4LC4A ) || \
513 part_is_defined( ATSAM4LC4B ) || part_is_defined( SAM4LC4B ) || \
514 part_is_defined( ATSAM4LC4C ) || part_is_defined( SAM4LC4C ) )
515
516#define SAM4LC2 ( \
517 part_is_defined( ATSAM4LC2A ) || part_is_defined( SAM4LC2A ) || \
518 part_is_defined( ATSAM4LC2B ) || part_is_defined( SAM4LC2B ) || \
519 part_is_defined( ATSAM4LC2C ) || part_is_defined( SAM4LC2C ) )
520
521#define SAM4LC8 ( \
522 part_is_defined( ATSAM4LC8A ) || part_is_defined( SAM4LC8A ) || \
523 part_is_defined( ATSAM4LC8B ) || part_is_defined( SAM4LC8B ) || \
524 part_is_defined( ATSAM4LC8C ) || part_is_defined( SAM4LC8C ) )
525
526/* Entire SAM4L series */
527#define SAM4L_SERIES (SAM4LS4 || SAM4LS2 || SAM4LS8 || SAM4LC4 || SAM4LC2 || SAM4LC8)
528
529/* SAM4C32 series */
530#define SAM4C32C_ ( \
531 part_is_defined( SAM4C32C_0 ) || \
532 part_is_defined( SAM4C32C_1 ) )
533
534#define SAM4C32E_ ( \
535 part_is_defined( SAM4C32E_0 ) || \
536 part_is_defined( SAM4C32E_1 ) )
537
538/* Entire SAM4C32 series */
539#define SAM4C32_SERIES (SAM4C32C_ || SAM4C32E_)
540
541/* SAM4CM32 series */
542#define SAM4CMP32C_ ( \
543 part_is_defined( SAM4CMP32C_0 ) || \
544 part_is_defined( SAM4CMP32C_1 ) )
545
546#define SAM4CMS32C_ ( \
547 part_is_defined( SAM4CMS32C_0 ) || \
548 part_is_defined( SAM4CMS32C_1 ) )
549
550/* Entire SAM4CM32 series */
551#define SAM4CM32_SERIES (SAM4CMP32C_ || SAM4CMS32C_)
552
553/* SAM4CM series */
554#define SAM4CMP16C_ ( \
555 part_is_defined( SAM4CMP16C_0 ) || \
556 part_is_defined( SAM4CMP16C_1 ) )
557
558#define SAM4CMS16C_ ( \
559 part_is_defined( SAM4CMS16C_0 ) || \
560 part_is_defined( SAM4CMS16C_1 ) )
561
562#define SAM4CMP8C_ ( \
563 part_is_defined( SAM4CMP8C_0 ) || \
564 part_is_defined( SAM4CMP8C_1 ) )
565
566#define SAM4CMS8C_ ( \
567 part_is_defined( SAM4CMS8C_0 ) || \
568 part_is_defined( SAM4CMS8C_1 ) )
569
570/* Entire SAM4CM series */
571#define SAM4CM_SERIES (SAM4CMP16C_ || SAM4CMS16C_ || SAM4CMP8C_ || SAM4CMS8C_)
572
573/* Entire SAM4 family */
574#define SAM4_SERIES (SAM4E_SERIES || SAM4CM32_SERIES || SAM4SP_SERIES || SAM4C32_SERIES || SAM4S_SERIES || SAM4L_SERIES || SAM4CM_SERIES || SAM4N_SERIES || SAM4CP_SERIES || SAM4C_SERIES)
575
576/*
577 * ----------------------------------------------------------------------------
578 * Whole SAM product line
579 * ----------------------------------------------------------------------------
580 */
581
582#define SAM (SAM4_SERIES || SAMR_SERIES || SAM3_SERIES || WISC_SERIES || SAML_SERIES || SAMD_SERIES || SAMG_SERIES)
583
584/*
585 * ----------------------------------------------------------------------------
586 * Header inclusion
587 * ----------------------------------------------------------------------------
588 */
589
590#if WISC_SERIES
591#include "wisc.h"
592#endif /* WISC_SERIES */
593
594#if SAML_SERIES
595#include "saml.h"
596#endif /* SAML_SERIES */
597
598#if SAMG_SERIES
599#include "samg.h"
600#endif /* SAMG_SERIES */
601
602#if SAMD_SERIES
603#include "samd.h"
604#endif /* SAMD_SERIES */
605
606#if SAM3_SERIES
607#include "sam3.h"
608#endif /* SAM3_SERIES */
609
610#if SAMR_SERIES
611#include "samr.h"
612#endif /* SAMR_SERIES */
613
614#if SAM4_SERIES
615#include "sam4.h"
616#endif /* SAM4_SERIES */
617
618#endif
Note: See TracBrowser for help on using the repository browser.