1 /** 2 * \file 3 * 4 * \brief Atmel part identification macros 5 * 6 * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved. 7 * 8 * \asf_license_start 9 * 10 * \page License 11 * 12 * Redistribution and use in source and binary forms, with or without 13 * modification, are permitted provided that the following conditions are met: 14 * 15 * 1. Redistributions of source code must retain the above copyright notice, 16 * this list of conditions and the following disclaimer. 17 * 18 * 2. Redistributions in binary form must reproduce the above copyright notice, 19 * this list of conditions and the following disclaimer in the documentation 20 * and/or other materials provided with the distribution. 21 * 22 * 3. The name of Atmel may not be used to endorse or promote products derived 23 * from this software without specific prior written permission. 24 * 25 * 4. This software may only be redistributed and used in connection with an 26 * Atmel microcontroller product. 27 * 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38 * POSSIBILITY OF SUCH DAMAGE. 39 * 40 * \asf_license_stop 41 * 42 */ 43 /* 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a> 45 */ 46 47 #ifndef ATMEL_PARTS_H 48 #define ATMEL_PARTS_H 49 50 /** 51 * \defgroup part_macros_group Atmel part identification macros 52 * 53 * This collection of macros identify which series and families that the various 54 * Atmel parts belong to. These can be used to select part-dependent sections of 55 * code at compile time. 56 * 57 * @{ 58 */ 59 60 /** 61 * \name Convenience macros for part checking 62 * @{ 63 */ 64 /* ! Check GCC and IAR part definition for 8-bit AVR */ 65 #define AVR8_PART_IS_DEFINED(part) \ 66 (defined(__ ## part ## __) || defined(__AVR_ ## part ## __)) 67 68 /* ! Check GCC and IAR part definition for 32-bit AVR */ 69 #define AVR32_PART_IS_DEFINED(part) \ 70 (defined(__AT32 ## part ## __) || defined(__AVR32_ ## part ## __)) 71 72 /* ! Check GCC and IAR part definition for SAM */ 73 #define SAM_PART_IS_DEFINED(part) (defined(__ ## part ## __)) 74 /** @} */ 75 76 /** 77 * \defgroup uc3_part_macros_group AVR UC3 parts 78 * @{ 79 */ 80 81 /** 82 * \name AVR UC3 A series 83 * @{ 84 */ 85 #define UC3A0 ( \ 86 AVR32_PART_IS_DEFINED(UC3A0128) || \ 87 AVR32_PART_IS_DEFINED(UC3A0256) || \ 88 AVR32_PART_IS_DEFINED(UC3A0512) \ 89 ) 90 91 #define UC3A1 ( \ 92 AVR32_PART_IS_DEFINED(UC3A1128) || \ 93 AVR32_PART_IS_DEFINED(UC3A1256) || \ 94 AVR32_PART_IS_DEFINED(UC3A1512) \ 95 ) 96 97 #define UC3A3 ( \ 98 AVR32_PART_IS_DEFINED(UC3A364) || \ 99 AVR32_PART_IS_DEFINED(UC3A364S) || \ 100 AVR32_PART_IS_DEFINED(UC3A3128) || \ 101 AVR32_PART_IS_DEFINED(UC3A3128S) || \ 102 AVR32_PART_IS_DEFINED(UC3A3256) || \ 103 AVR32_PART_IS_DEFINED(UC3A3256S) \ 104 ) 105 106 #define UC3A4 ( \ 107 AVR32_PART_IS_DEFINED(UC3A464) || \ 108 AVR32_PART_IS_DEFINED(UC3A464S) || \ 109 AVR32_PART_IS_DEFINED(UC3A4128) || \ 110 AVR32_PART_IS_DEFINED(UC3A4128S) || \ 111 AVR32_PART_IS_DEFINED(UC3A4256) || \ 112 AVR32_PART_IS_DEFINED(UC3A4256S) \ 113 ) 114 /** @} */ 115 116 /** 117 * \name AVR UC3 B series 118 * @{ 119 */ 120 #define UC3B0 ( \ 121 AVR32_PART_IS_DEFINED(UC3B064) || \ 122 AVR32_PART_IS_DEFINED(UC3B0128) || \ 123 AVR32_PART_IS_DEFINED(UC3B0256) || \ 124 AVR32_PART_IS_DEFINED(UC3B0512) \ 125 ) 126 127 #define UC3B1 ( \ 128 AVR32_PART_IS_DEFINED(UC3B164) || \ 129 AVR32_PART_IS_DEFINED(UC3B1128) || \ 130 AVR32_PART_IS_DEFINED(UC3B1256) || \ 131 AVR32_PART_IS_DEFINED(UC3B1512) \ 132 ) 133 /** @} */ 134 135 /** 136 * \name AVR UC3 C series 137 * @{ 138 */ 139 #define UC3C0 ( \ 140 AVR32_PART_IS_DEFINED(UC3C064C) || \ 141 AVR32_PART_IS_DEFINED(UC3C0128C) || \ 142 AVR32_PART_IS_DEFINED(UC3C0256C) || \ 143 AVR32_PART_IS_DEFINED(UC3C0512C) \ 144 ) 145 146 #define UC3C1 ( \ 147 AVR32_PART_IS_DEFINED(UC3C164C) || \ 148 AVR32_PART_IS_DEFINED(UC3C1128C) || \ 149 AVR32_PART_IS_DEFINED(UC3C1256C) || \ 150 AVR32_PART_IS_DEFINED(UC3C1512C) \ 151 ) 152 153 #define UC3C2 ( \ 154 AVR32_PART_IS_DEFINED(UC3C264C) || \ 155 AVR32_PART_IS_DEFINED(UC3C2128C) || \ 156 AVR32_PART_IS_DEFINED(UC3C2256C) || \ 157 AVR32_PART_IS_DEFINED(UC3C2512C) \ 158 ) 159 /** @} */ 160 161 /** 162 * \name AVR UC3 D series 163 * @{ 164 */ 165 #define UC3D3 ( \ 166 AVR32_PART_IS_DEFINED(UC64D3) || \ 167 AVR32_PART_IS_DEFINED(UC128D3) \ 168 ) 169 170 #define UC3D4 ( \ 171 AVR32_PART_IS_DEFINED(UC64D4) || \ 172 AVR32_PART_IS_DEFINED(UC128D4) \ 173 ) 174 /** @} */ 175 176 /** 177 * \name AVR UC3 L series 178 * @{ 179 */ 180 #define UC3L0 ( \ 181 AVR32_PART_IS_DEFINED(UC3L016) || \ 182 AVR32_PART_IS_DEFINED(UC3L032) || \ 183 AVR32_PART_IS_DEFINED(UC3L064) \ 184 ) 185 186 #define UC3L0128 ( \ 187 AVR32_PART_IS_DEFINED(UC3L0128) \ 188 ) 189 190 #define UC3L0256 ( \ 191 AVR32_PART_IS_DEFINED(UC3L0256) \ 192 ) 193 194 #define UC3L3 ( \ 195 AVR32_PART_IS_DEFINED(UC64L3U) || \ 196 AVR32_PART_IS_DEFINED(UC128L3U) || \ 197 AVR32_PART_IS_DEFINED(UC256L3U) \ 198 ) 199 200 #define UC3L4 ( \ 201 AVR32_PART_IS_DEFINED(UC64L4U) || \ 202 AVR32_PART_IS_DEFINED(UC128L4U) || \ 203 AVR32_PART_IS_DEFINED(UC256L4U) \ 204 ) 205 206 #define UC3L3_L4 (UC3L3 || UC3L4) 207 /** @} */ 208 209 /** 210 * \name AVR UC3 families 211 * @{ 212 */ 213 /** AVR UC3 A family */ 214 #define UC3A (UC3A0 || UC3A1 || UC3A3 || UC3A4) 215 216 /** AVR UC3 B family */ 217 #define UC3B (UC3B0 || UC3B1) 218 219 /** AVR UC3 C family */ 220 #define UC3C (UC3C0 || UC3C1 || UC3C2) 221 222 /** AVR UC3 D family */ 223 #define UC3D (UC3D3 || UC3D4) 224 225 /** AVR UC3 L family */ 226 #define UC3L (UC3L0 || UC3L0128 || UC3L0256 || UC3L3_L4) 227 /** @} */ 228 229 /** AVR UC3 product line */ 230 #define UC3 (UC3A || UC3B || UC3C || UC3D || UC3L) 231 232 /** @} */ 233 234 /** 235 * \defgroup xmega_part_macros_group AVR XMEGA parts 236 * @{ 237 */ 238 239 /** 240 * \name AVR XMEGA A series 241 * @{ 242 */ 243 #define XMEGA_A1 ( \ 244 AVR8_PART_IS_DEFINED(ATxmega64A1) || \ 245 AVR8_PART_IS_DEFINED(ATxmega128A1) \ 246 ) 247 248 #define XMEGA_A3 ( \ 249 AVR8_PART_IS_DEFINED(ATxmega64A3) || \ 250 AVR8_PART_IS_DEFINED(ATxmega128A3) || \ 251 AVR8_PART_IS_DEFINED(ATxmega192A3) || \ 252 AVR8_PART_IS_DEFINED(ATxmega256A3) \ 253 ) 254 255 #define XMEGA_A3B ( \ 256 AVR8_PART_IS_DEFINED(ATxmega256A3B) \ 257 ) 258 259 #define XMEGA_A4 ( \ 260 AVR8_PART_IS_DEFINED(ATxmega16A4) || \ 261 AVR8_PART_IS_DEFINED(ATxmega32A4) \ 262 ) 263 /** @} */ 264 265 /** 266 * \name AVR XMEGA AU series 267 * @{ 268 */ 269 #define XMEGA_A1U ( \ 270 AVR8_PART_IS_DEFINED(ATxmega64A1U) || \ 271 AVR8_PART_IS_DEFINED(ATxmega128A1U) \ 272 ) 273 274 #define XMEGA_A3U ( \ 275 AVR8_PART_IS_DEFINED(ATxmega64A3U) || \ 276 AVR8_PART_IS_DEFINED(ATxmega128A3U) || \ 277 AVR8_PART_IS_DEFINED(ATxmega192A3U) || \ 278 AVR8_PART_IS_DEFINED(ATxmega256A3U) \ 279 ) 280 281 #define XMEGA_A3BU ( \ 282 AVR8_PART_IS_DEFINED(ATxmega256A3BU) \ 283 ) 284 285 #define XMEGA_A4U ( \ 286 AVR8_PART_IS_DEFINED(ATxmega16A4U) || \ 287 AVR8_PART_IS_DEFINED(ATxmega32A4U) || \ 288 AVR8_PART_IS_DEFINED(ATxmega64A4U) || \ 289 AVR8_PART_IS_DEFINED(ATxmega128A4U) \ 290 ) 291 /** @} */ 292 293 /** 294 * \name AVR XMEGA B series 295 * @{ 296 */ 297 #define XMEGA_B1 ( \ 298 AVR8_PART_IS_DEFINED(ATxmega64B1) || \ 299 AVR8_PART_IS_DEFINED(ATxmega128B1) \ 300 ) 301 302 #define XMEGA_B3 ( \ 303 AVR8_PART_IS_DEFINED(ATxmega64B3) || \ 304 AVR8_PART_IS_DEFINED(ATxmega128B3) \ 305 ) 306 /** @} */ 307 308 /** 309 * \name AVR XMEGA C series 310 * @{ 311 */ 312 #define XMEGA_C3 ( \ 313 AVR8_PART_IS_DEFINED(ATxmega384C3) || \ 314 AVR8_PART_IS_DEFINED(ATxmega256C3) || \ 315 AVR8_PART_IS_DEFINED(ATxmega192C3) || \ 316 AVR8_PART_IS_DEFINED(ATxmega128C3) || \ 317 AVR8_PART_IS_DEFINED(ATxmega64C3) || \ 318 AVR8_PART_IS_DEFINED(ATxmega32C3) \ 319 ) 320 321 #define XMEGA_C4 ( \ 322 AVR8_PART_IS_DEFINED(ATxmega32C4) || \ 323 AVR8_PART_IS_DEFINED(ATxmega16C4) \ 324 ) 325 /** @} */ 326 327 /** 328 * \name AVR XMEGA D series 329 * @{ 330 */ 331 #define XMEGA_D3 ( \ 332 AVR8_PART_IS_DEFINED(ATxmega32D3) || \ 333 AVR8_PART_IS_DEFINED(ATxmega64D3) || \ 334 AVR8_PART_IS_DEFINED(ATxmega128D3) || \ 335 AVR8_PART_IS_DEFINED(ATxmega192D3) || \ 336 AVR8_PART_IS_DEFINED(ATxmega256D3) || \ 337 AVR8_PART_IS_DEFINED(ATxmega384D3) \ 338 ) 339 340 #define XMEGA_D4 ( \ 341 AVR8_PART_IS_DEFINED(ATxmega16D4) || \ 342 AVR8_PART_IS_DEFINED(ATxmega32D4) || \ 343 AVR8_PART_IS_DEFINED(ATxmega64D4) || \ 344 AVR8_PART_IS_DEFINED(ATxmega128D4) \ 345 ) 346 /** @} */ 347 348 /** 349 * \name AVR XMEGA E series 350 * @{ 351 */ 352 #define XMEGA_E5 ( \ 353 AVR8_PART_IS_DEFINED(ATxmega8E5) || \ 354 AVR8_PART_IS_DEFINED(ATxmega16E5) || \ 355 AVR8_PART_IS_DEFINED(ATxmega32E5) \ 356 ) 357 /** @} */ 358 359 360 /** 361 * \name AVR XMEGA families 362 * @{ 363 */ 364 /** AVR XMEGA A family */ 365 #define XMEGA_A (XMEGA_A1 || XMEGA_A3 || XMEGA_A3B || XMEGA_A4) 366 367 /** AVR XMEGA AU family */ 368 #define XMEGA_AU (XMEGA_A1U || XMEGA_A3U || XMEGA_A3BU || XMEGA_A4U) 369 370 /** AVR XMEGA B family */ 371 #define XMEGA_B (XMEGA_B1 || XMEGA_B3) 372 373 /** AVR XMEGA C family */ 374 #define XMEGA_C (XMEGA_C3 || XMEGA_C4) 375 376 /** AVR XMEGA D family */ 377 #define XMEGA_D (XMEGA_D3 || XMEGA_D4) 378 379 /** AVR XMEGA E family */ 380 #define XMEGA_E (XMEGA_E5) 381 /** @} */ 382 383 384 /** AVR XMEGA product line */ 385 #define XMEGA (XMEGA_A || XMEGA_AU || XMEGA_B || XMEGA_C || XMEGA_D || XMEGA_E) 386 387 /** @} */ 388 389 /** 390 * \defgroup mega_part_macros_group megaAVR parts 391 * 392 * \note These megaAVR groupings are based on the groups in AVR Libc for the 393 * part header files. They are not names of official megaAVR device series or 394 * families. 395 * 396 * @{ 397 */ 398 399 /** 400 * \name ATmegaxx0/xx1 subgroups 401 * @{ 402 */ 403 #define MEGA_XX0 ( \ 404 AVR8_PART_IS_DEFINED(ATmega640) || \ 405 AVR8_PART_IS_DEFINED(ATmega1280) || \ 406 AVR8_PART_IS_DEFINED(ATmega2560) \ 407 ) 408 409 #define MEGA_XX1 ( \ 410 AVR8_PART_IS_DEFINED(ATmega1281) || \ 411 AVR8_PART_IS_DEFINED(ATmega2561) \ 412 ) 413 /** @} */ 414 415 /** 416 * \name megaAVR groups 417 * @{ 418 */ 419 /** ATmegaxx0/xx1 group */ 420 #define MEGA_XX0_1 (MEGA_XX0 || MEGA_XX1) 421 422 /** ATmegaxx4 group */ 423 #define MEGA_XX4 ( \ 424 AVR8_PART_IS_DEFINED(ATmega164A) || \ 425 AVR8_PART_IS_DEFINED(ATmega164PA) || \ 426 AVR8_PART_IS_DEFINED(ATmega324A) || \ 427 AVR8_PART_IS_DEFINED(ATmega324PA) || \ 428 AVR8_PART_IS_DEFINED(ATmega644) || \ 429 AVR8_PART_IS_DEFINED(ATmega644A) || \ 430 AVR8_PART_IS_DEFINED(ATmega644PA) || \ 431 AVR8_PART_IS_DEFINED(ATmega1284P) || \ 432 AVR8_PART_IS_DEFINED(ATmega128RFA1) \ 433 ) 434 435 /** ATmegaxx4 group */ 436 #define MEGA_XX4_A ( \ 437 AVR8_PART_IS_DEFINED(ATmega164A) || \ 438 AVR8_PART_IS_DEFINED(ATmega164PA) || \ 439 AVR8_PART_IS_DEFINED(ATmega324A) || \ 440 AVR8_PART_IS_DEFINED(ATmega324PA) || \ 441 AVR8_PART_IS_DEFINED(ATmega644A) || \ 442 AVR8_PART_IS_DEFINED(ATmega644PA) || \ 443 AVR8_PART_IS_DEFINED(ATmega1284P) \ 444 ) 445 446 /** ATmegaxx8 group */ 447 #define MEGA_XX8 ( \ 448 AVR8_PART_IS_DEFINED(ATmega48) || \ 449 AVR8_PART_IS_DEFINED(ATmega48A) || \ 450 AVR8_PART_IS_DEFINED(ATmega48PA) || \ 451 AVR8_PART_IS_DEFINED(ATmega88) || \ 452 AVR8_PART_IS_DEFINED(ATmega88A) || \ 453 AVR8_PART_IS_DEFINED(ATmega88PA) || \ 454 AVR8_PART_IS_DEFINED(ATmega168) || \ 455 AVR8_PART_IS_DEFINED(ATmega168A) || \ 456 AVR8_PART_IS_DEFINED(ATmega168PA) || \ 457 AVR8_PART_IS_DEFINED(ATmega328) || \ 458 AVR8_PART_IS_DEFINED(ATmega328P) \ 459 ) 460 461 /** ATmegaxx8A/P/PA group */ 462 #define MEGA_XX8_A ( \ 463 AVR8_PART_IS_DEFINED(ATmega48A) || \ 464 AVR8_PART_IS_DEFINED(ATmega48PA) || \ 465 AVR8_PART_IS_DEFINED(ATmega88A) || \ 466 AVR8_PART_IS_DEFINED(ATmega88PA) || \ 467 AVR8_PART_IS_DEFINED(ATmega168A) || \ 468 AVR8_PART_IS_DEFINED(ATmega168PA) || \ 469 AVR8_PART_IS_DEFINED(ATmega328P) \ 470 ) 471 472 /** ATmegaxx group */ 473 #define MEGA_XX ( \ 474 AVR8_PART_IS_DEFINED(ATmega16) || \ 475 AVR8_PART_IS_DEFINED(ATmega16A) || \ 476 AVR8_PART_IS_DEFINED(ATmega32) || \ 477 AVR8_PART_IS_DEFINED(ATmega32A) || \ 478 AVR8_PART_IS_DEFINED(ATmega64) || \ 479 AVR8_PART_IS_DEFINED(ATmega64A) || \ 480 AVR8_PART_IS_DEFINED(ATmega128) || \ 481 AVR8_PART_IS_DEFINED(ATmega128A) \ 482 ) 483 484 /** ATmegaxxA/P/PA group */ 485 #define MEGA_XX_A ( \ 486 AVR8_PART_IS_DEFINED(ATmega16A) || \ 487 AVR8_PART_IS_DEFINED(ATmega32A) || \ 488 AVR8_PART_IS_DEFINED(ATmega64A) || \ 489 AVR8_PART_IS_DEFINED(ATmega128A) \ 490 ) 491 /** ATmegaxxRFA1 group */ 492 #define MEGA_RFA1 ( \ 493 AVR8_PART_IS_DEFINED(ATmega128RFA1) \ 494 ) 495 496 /** ATmegaxxRFR2 group */ 497 #define MEGA_RFR2 ( \ 498 AVR8_PART_IS_DEFINED(ATmega64RFR2) || \ 499 AVR8_PART_IS_DEFINED(ATmega128RFR2) || \ 500 AVR8_PART_IS_DEFINED(ATmega256RFR2) || \ 501 AVR8_PART_IS_DEFINED(ATmega644RFR2) || \ 502 AVR8_PART_IS_DEFINED(ATmega1284RFR2) || \ 503 AVR8_PART_IS_DEFINED(ATmega2564RFR2) \ 504 ) 505 506 507 /** ATmegaxxRFxx group */ 508 #define MEGA_RF (MEGA_RFA1 || MEGA_RFR2) 509 510 /** 511 * \name ATmegaxx_un0/un1/un2 subgroups 512 * @{ 513 */ 514 #define MEGA_XX_UN0 ( \ 515 AVR8_PART_IS_DEFINED(ATmega16) || \ 516 AVR8_PART_IS_DEFINED(ATmega16A) || \ 517 AVR8_PART_IS_DEFINED(ATmega32) || \ 518 AVR8_PART_IS_DEFINED(ATmega32A) \ 519 ) 520 521 /** ATmegaxx group without power reduction and 522 * And interrupt sense register. 523 */ 524 #define MEGA_XX_UN1 ( \ 525 AVR8_PART_IS_DEFINED(ATmega64) || \ 526 AVR8_PART_IS_DEFINED(ATmega64A) || \ 527 AVR8_PART_IS_DEFINED(ATmega128) || \ 528 AVR8_PART_IS_DEFINED(ATmega128A) \ 529 ) 530 531 /** ATmegaxx group without power reduction and 532 * And interrupt sense register. 533 */ 534 #define MEGA_XX_UN2 ( \ 535 AVR8_PART_IS_DEFINED(ATmega169P) || \ 536 AVR8_PART_IS_DEFINED(ATmega169PA) || \ 537 AVR8_PART_IS_DEFINED(ATmega329P) || \ 538 AVR8_PART_IS_DEFINED(ATmega329PA) \ 539 ) 540 541 /** Devices added to complete megaAVR offering. 542 * Please do not use this group symbol as it is not intended 543 * to be permanent: the devices should be regrouped. 544 */ 545 #define MEGA_UNCATEGORIZED ( \ 546 AVR8_PART_IS_DEFINED(AT90CAN128) || \ 547 AVR8_PART_IS_DEFINED(AT90CAN32) || \ 548 AVR8_PART_IS_DEFINED(AT90CAN64) || \ 549 AVR8_PART_IS_DEFINED(AT90PWM1) || \ 550 AVR8_PART_IS_DEFINED(AT90PWM216) || \ 551 AVR8_PART_IS_DEFINED(AT90PWM2B) || \ 552 AVR8_PART_IS_DEFINED(AT90PWM316) || \ 553 AVR8_PART_IS_DEFINED(AT90PWM3B) || \ 554 AVR8_PART_IS_DEFINED(AT90PWM81) || \ 555 AVR8_PART_IS_DEFINED(AT90USB1286) || \ 556 AVR8_PART_IS_DEFINED(AT90USB1287) || \ 557 AVR8_PART_IS_DEFINED(AT90USB162) || \ 558 AVR8_PART_IS_DEFINED(AT90USB646) || \ 559 AVR8_PART_IS_DEFINED(AT90USB647) || \ 560 AVR8_PART_IS_DEFINED(AT90USB82) || \ 561 AVR8_PART_IS_DEFINED(ATmega1284) || \ 562 AVR8_PART_IS_DEFINED(ATmega162) || \ 563 AVR8_PART_IS_DEFINED(ATmega164P) || \ 564 AVR8_PART_IS_DEFINED(ATmega165A) || \ 565 AVR8_PART_IS_DEFINED(ATmega165P) || \ 566 AVR8_PART_IS_DEFINED(ATmega165PA) || \ 567 AVR8_PART_IS_DEFINED(ATmega168P) || \ 568 AVR8_PART_IS_DEFINED(ATmega169A) || \ 569 AVR8_PART_IS_DEFINED(ATmega16M1) || \ 570 AVR8_PART_IS_DEFINED(ATmega16U2) || \ 571 AVR8_PART_IS_DEFINED(ATmega16U4) || \ 572 AVR8_PART_IS_DEFINED(ATmega256RFA2) || \ 573 AVR8_PART_IS_DEFINED(ATmega324P) || \ 574 AVR8_PART_IS_DEFINED(ATmega325) || \ 575 AVR8_PART_IS_DEFINED(ATmega3250) || \ 576 AVR8_PART_IS_DEFINED(ATmega3250A) || \ 577 AVR8_PART_IS_DEFINED(ATmega3250P) || \ 578 AVR8_PART_IS_DEFINED(ATmega3250PA) || \ 579 AVR8_PART_IS_DEFINED(ATmega325A) || \ 580 AVR8_PART_IS_DEFINED(ATmega325P) || \ 581 AVR8_PART_IS_DEFINED(ATmega325PA) || \ 582 AVR8_PART_IS_DEFINED(ATmega329) || \ 583 AVR8_PART_IS_DEFINED(ATmega3290) || \ 584 AVR8_PART_IS_DEFINED(ATmega3290A) || \ 585 AVR8_PART_IS_DEFINED(ATmega3290P) || \ 586 AVR8_PART_IS_DEFINED(ATmega3290PA) || \ 587 AVR8_PART_IS_DEFINED(ATmega329A) || \ 588 AVR8_PART_IS_DEFINED(ATmega32M1) || \ 589 AVR8_PART_IS_DEFINED(ATmega32U2) || \ 590 AVR8_PART_IS_DEFINED(ATmega32U4) || \ 591 AVR8_PART_IS_DEFINED(ATmega48P) || \ 592 AVR8_PART_IS_DEFINED(ATmega644P) || \ 593 AVR8_PART_IS_DEFINED(ATmega645) || \ 594 AVR8_PART_IS_DEFINED(ATmega6450) || \ 595 AVR8_PART_IS_DEFINED(ATmega6450A) || \ 596 AVR8_PART_IS_DEFINED(ATmega6450P) || \ 597 AVR8_PART_IS_DEFINED(ATmega645A) || \ 598 AVR8_PART_IS_DEFINED(ATmega645P) || \ 599 AVR8_PART_IS_DEFINED(ATmega649) || \ 600 AVR8_PART_IS_DEFINED(ATmega6490) || \ 601 AVR8_PART_IS_DEFINED(ATmega6490A) || \ 602 AVR8_PART_IS_DEFINED(ATmega6490P) || \ 603 AVR8_PART_IS_DEFINED(ATmega649A) || \ 604 AVR8_PART_IS_DEFINED(ATmega649P) || \ 605 AVR8_PART_IS_DEFINED(ATmega64M1) || \ 606 AVR8_PART_IS_DEFINED(ATmega64RFA2) || \ 607 AVR8_PART_IS_DEFINED(ATmega8) || \ 608 AVR8_PART_IS_DEFINED(ATmega8515) || \ 609 AVR8_PART_IS_DEFINED(ATmega8535) || \ 610 AVR8_PART_IS_DEFINED(ATmega88P) || \ 611 AVR8_PART_IS_DEFINED(ATmega8A) || \ 612 AVR8_PART_IS_DEFINED(ATmega8U2) \ 613 ) 614 615 /** Unspecified group */ 616 #define MEGA_UNSPECIFIED (MEGA_XX_UN0 || MEGA_XX_UN1 || MEGA_XX_UN2 || \ 617 MEGA_UNCATEGORIZED) 618 619 /** @} */ 620 621 /** megaAVR product line */ 622 #define MEGA (MEGA_XX0_1 || MEGA_XX4 || MEGA_XX8 || MEGA_XX || MEGA_RF || \ 623 MEGA_UNSPECIFIED) 624 625 /** @} */ 626 627 /** 628 * \defgroup tiny_part_macros_group tinyAVR parts 629 * 630 * @{ 631 */ 632 633 /** 634 * \name tinyAVR groups 635 * @{ 636 */ 637 638 /** Devices added to complete tinyAVR offering. 639 * Please do not use this group symbol as it is not intended 640 * to be permanent: the devices should be regrouped. 641 */ 642 #define TINY_UNCATEGORIZED ( \ 643 AVR8_PART_IS_DEFINED(ATtiny10) || \ 644 AVR8_PART_IS_DEFINED(ATtiny13) || \ 645 AVR8_PART_IS_DEFINED(ATtiny13A) || \ 646 AVR8_PART_IS_DEFINED(ATtiny1634) || \ 647 AVR8_PART_IS_DEFINED(ATtiny167) || \ 648 AVR8_PART_IS_DEFINED(ATtiny20) || \ 649 AVR8_PART_IS_DEFINED(ATtiny2313) || \ 650 AVR8_PART_IS_DEFINED(ATtiny2313A) || \ 651 AVR8_PART_IS_DEFINED(ATtiny24) || \ 652 AVR8_PART_IS_DEFINED(ATtiny24A) || \ 653 AVR8_PART_IS_DEFINED(ATtiny25) || \ 654 AVR8_PART_IS_DEFINED(ATtiny26) || \ 655 AVR8_PART_IS_DEFINED(ATtiny261) || \ 656 AVR8_PART_IS_DEFINED(ATtiny261A) || \ 657 AVR8_PART_IS_DEFINED(ATtiny4) || \ 658 AVR8_PART_IS_DEFINED(ATtiny40) || \ 659 AVR8_PART_IS_DEFINED(ATtiny4313) || \ 660 AVR8_PART_IS_DEFINED(ATtiny43U) || \ 661 AVR8_PART_IS_DEFINED(ATtiny44) || \ 662 AVR8_PART_IS_DEFINED(ATtiny44A) || \ 663 AVR8_PART_IS_DEFINED(ATtiny45) || \ 664 AVR8_PART_IS_DEFINED(ATtiny461) || \ 665 AVR8_PART_IS_DEFINED(ATtiny461A) || \ 666 AVR8_PART_IS_DEFINED(ATtiny48) || \ 667 AVR8_PART_IS_DEFINED(ATtiny5) || \ 668 AVR8_PART_IS_DEFINED(ATtiny828) || \ 669 AVR8_PART_IS_DEFINED(ATtiny84) || \ 670 AVR8_PART_IS_DEFINED(ATtiny84A) || \ 671 AVR8_PART_IS_DEFINED(ATtiny85) || \ 672 AVR8_PART_IS_DEFINED(ATtiny861) || \ 673 AVR8_PART_IS_DEFINED(ATtiny861A) || \ 674 AVR8_PART_IS_DEFINED(ATtiny87) || \ 675 AVR8_PART_IS_DEFINED(ATtiny88) || \ 676 AVR8_PART_IS_DEFINED(ATtiny9) \ 677 ) 678 679 /** @} */ 680 681 /** tinyAVR product line */ 682 #define TINY (TINY_UNCATEGORIZED) 683 684 /** @} */ 685 686 /** 687 * \defgroup sam_part_macros_group SAM parts 688 * @{ 689 */ 690 691 /** 692 * \name SAM3S series 693 * @{ 694 */ 695 #define SAM3S1 ( \ 696 SAM_PART_IS_DEFINED(SAM3S1A) || \ 697 SAM_PART_IS_DEFINED(SAM3S1B) || \ 698 SAM_PART_IS_DEFINED(SAM3S1C) \ 699 ) 700 701 #define SAM3S2 ( \ 702 SAM_PART_IS_DEFINED(SAM3S2A) || \ 703 SAM_PART_IS_DEFINED(SAM3S2B) || \ 704 SAM_PART_IS_DEFINED(SAM3S2C) \ 705 ) 706 707 #define SAM3S4 ( \ 708 SAM_PART_IS_DEFINED(SAM3S4A) || \ 709 SAM_PART_IS_DEFINED(SAM3S4B) || \ 710 SAM_PART_IS_DEFINED(SAM3S4C) \ 711 ) 712 713 #define SAM3S8 ( \ 714 SAM_PART_IS_DEFINED(SAM3S8B) || \ 715 SAM_PART_IS_DEFINED(SAM3S8C) \ 716 ) 717 718 #define SAM3SD8 ( \ 719 SAM_PART_IS_DEFINED(SAM3SD8B) || \ 720 SAM_PART_IS_DEFINED(SAM3SD8C) \ 721 ) 722 /** @} */ 723 724 /** 725 * \name SAM3U series 726 * @{ 727 */ 728 #define SAM3U1 ( \ 729 SAM_PART_IS_DEFINED(SAM3U1C) || \ 730 SAM_PART_IS_DEFINED(SAM3U1E) \ 731 ) 732 733 #define SAM3U2 ( \ 734 SAM_PART_IS_DEFINED(SAM3U2C) || \ 735 SAM_PART_IS_DEFINED(SAM3U2E) \ 736 ) 737 738 #define SAM3U4 ( \ 739 SAM_PART_IS_DEFINED(SAM3U4C) || \ 740 SAM_PART_IS_DEFINED(SAM3U4E) \ 741 ) 742 /** @} */ 743 744 /** 745 * \name SAM3N series 746 * @{ 747 */ 748 #define SAM3N00 ( \ 749 SAM_PART_IS_DEFINED(SAM3N00A) || \ 750 SAM_PART_IS_DEFINED(SAM3N00B) \ 751 ) 752 753 #define SAM3N0 ( \ 754 SAM_PART_IS_DEFINED(SAM3N0A) || \ 755 SAM_PART_IS_DEFINED(SAM3N0B) || \ 756 SAM_PART_IS_DEFINED(SAM3N0C) \ 757 ) 758 759 #define SAM3N1 ( \ 760 SAM_PART_IS_DEFINED(SAM3N1A) || \ 761 SAM_PART_IS_DEFINED(SAM3N1B) || \ 762 SAM_PART_IS_DEFINED(SAM3N1C) \ 763 ) 764 765 #define SAM3N2 ( \ 766 SAM_PART_IS_DEFINED(SAM3N2A) || \ 767 SAM_PART_IS_DEFINED(SAM3N2B) || \ 768 SAM_PART_IS_DEFINED(SAM3N2C) \ 769 ) 770 771 #define SAM3N4 ( \ 772 SAM_PART_IS_DEFINED(SAM3N4A) || \ 773 SAM_PART_IS_DEFINED(SAM3N4B) || \ 774 SAM_PART_IS_DEFINED(SAM3N4C) \ 775 ) 776 /** @} */ 777 778 /** 779 * \name SAM3X series 780 * @{ 781 */ 782 #define SAM3X4 ( \ 783 SAM_PART_IS_DEFINED(SAM3X4C) || \ 784 SAM_PART_IS_DEFINED(SAM3X4E) \ 785 ) 786 787 #define SAM3X8 ( \ 788 SAM_PART_IS_DEFINED(SAM3X8C) || \ 789 SAM_PART_IS_DEFINED(SAM3X8E) || \ 790 SAM_PART_IS_DEFINED(SAM3X8H) \ 791 ) 792 /** @} */ 793 794 /** 795 * \name SAM3A series 796 * @{ 797 */ 798 #define SAM3A4 ( \ 799 SAM_PART_IS_DEFINED(SAM3A4C) \ 800 ) 801 802 #define SAM3A8 ( \ 803 SAM_PART_IS_DEFINED(SAM3A8C) \ 804 ) 805 /** @} */ 806 807 /** 808 * \name SAM4S series 809 * @{ 810 */ 811 #define SAM4S2 ( \ 812 SAM_PART_IS_DEFINED(SAM4S2A) || \ 813 SAM_PART_IS_DEFINED(SAM4S2B) || \ 814 SAM_PART_IS_DEFINED(SAM4S2C) \ 815 ) 816 817 #define SAM4S4 ( \ 818 SAM_PART_IS_DEFINED(SAM4S4A) || \ 819 SAM_PART_IS_DEFINED(SAM4S4B) || \ 820 SAM_PART_IS_DEFINED(SAM4S4C) \ 821 ) 822 823 #define SAM4S8 ( \ 824 SAM_PART_IS_DEFINED(SAM4S8B) || \ 825 SAM_PART_IS_DEFINED(SAM4S8C) \ 826 ) 827 828 #define SAM4S16 ( \ 829 SAM_PART_IS_DEFINED(SAM4S16B) || \ 830 SAM_PART_IS_DEFINED(SAM4S16C) \ 831 ) 832 833 #define SAM4SA16 ( \ 834 SAM_PART_IS_DEFINED(SAM4SA16B) || \ 835 SAM_PART_IS_DEFINED(SAM4SA16C) \ 836 ) 837 838 #define SAM4SD16 ( \ 839 SAM_PART_IS_DEFINED(SAM4SD16B) || \ 840 SAM_PART_IS_DEFINED(SAM4SD16C) \ 841 ) 842 843 #define SAM4SD32 ( \ 844 SAM_PART_IS_DEFINED(SAM4SD32B) || \ 845 SAM_PART_IS_DEFINED(SAM4SD32C) \ 846 ) 847 /** @} */ 848 849 /** 850 * \name SAM4L series 851 * @{ 852 */ 853 #define SAM4LS ( \ 854 SAM_PART_IS_DEFINED(SAM4LS2A) || \ 855 SAM_PART_IS_DEFINED(SAM4LS2B) || \ 856 SAM_PART_IS_DEFINED(SAM4LS2C) || \ 857 SAM_PART_IS_DEFINED(SAM4LS4A) || \ 858 SAM_PART_IS_DEFINED(SAM4LS4B) || \ 859 SAM_PART_IS_DEFINED(SAM4LS4C) || \ 860 SAM_PART_IS_DEFINED(SAM4LS8A) || \ 861 SAM_PART_IS_DEFINED(SAM4LS8B) || \ 862 SAM_PART_IS_DEFINED(SAM4LS8C) \ 863 ) 864 865 #define SAM4LC ( \ 866 SAM_PART_IS_DEFINED(SAM4LC2A) || \ 867 SAM_PART_IS_DEFINED(SAM4LC2B) || \ 868 SAM_PART_IS_DEFINED(SAM4LC2C) || \ 869 SAM_PART_IS_DEFINED(SAM4LC4A) || \ 870 SAM_PART_IS_DEFINED(SAM4LC4B) || \ 871 SAM_PART_IS_DEFINED(SAM4LC4C) || \ 872 SAM_PART_IS_DEFINED(SAM4LC8A) || \ 873 SAM_PART_IS_DEFINED(SAM4LC8B) || \ 874 SAM_PART_IS_DEFINED(SAM4LC8C) \ 875 ) 876 /** @} */ 877 878 /** 879 * \name SAMD20 series 880 * @{ 881 */ 882 #define SAMD20J ( \ 883 SAM_PART_IS_DEFINED(SAMD20J14) || \ 884 SAM_PART_IS_DEFINED(SAMD20J15) || \ 885 SAM_PART_IS_DEFINED(SAMD20J16) || \ 886 SAM_PART_IS_DEFINED(SAMD20J17) || \ 887 SAM_PART_IS_DEFINED(SAMD20J18) \ 888 ) 889 890 #define SAMD20G ( \ 891 SAM_PART_IS_DEFINED(SAMD20G14) || \ 892 SAM_PART_IS_DEFINED(SAMD20G15) || \ 893 SAM_PART_IS_DEFINED(SAMD20G16) || \ 894 SAM_PART_IS_DEFINED(SAMD20G17) || \ 895 SAM_PART_IS_DEFINED(SAMD20G17U) || \ 896 SAM_PART_IS_DEFINED(SAMD20G18) || \ 897 SAM_PART_IS_DEFINED(SAMD20G18U) \ 898 ) 899 900 #define SAMD20E ( \ 901 SAM_PART_IS_DEFINED(SAMD20E14) || \ 902 SAM_PART_IS_DEFINED(SAMD20E15) || \ 903 SAM_PART_IS_DEFINED(SAMD20E16) || \ 904 SAM_PART_IS_DEFINED(SAMD20E17) || \ 905 SAM_PART_IS_DEFINED(SAMD20E18) \ 906 ) 907 /** @} */ 908 909 /** 910 * \name SAMD21 series 911 * @{ 912 */ 913 #define SAMD21J ( \ 914 SAM_PART_IS_DEFINED(SAMD21J15A) || \ 915 SAM_PART_IS_DEFINED(SAMD21J16A) || \ 916 SAM_PART_IS_DEFINED(SAMD21J17A) || \ 917 SAM_PART_IS_DEFINED(SAMD21J18A) || \ 918 SAM_PART_IS_DEFINED(SAMD21J15B) || \ 919 SAM_PART_IS_DEFINED(SAMD21J16B) \ 920 ) 921 922 #define SAMD21G ( \ 923 SAM_PART_IS_DEFINED(SAMD21G15A) || \ 924 SAM_PART_IS_DEFINED(SAMD21G16A) || \ 925 SAM_PART_IS_DEFINED(SAMD21G17A) || \ 926 SAM_PART_IS_DEFINED(SAMD21G17AU) || \ 927 SAM_PART_IS_DEFINED(SAMD21G18A) || \ 928 SAM_PART_IS_DEFINED(SAMD21G18AU) || \ 929 SAM_PART_IS_DEFINED(SAMD21G15B) || \ 930 SAM_PART_IS_DEFINED(SAMD21G16B) || \ 931 SAM_PART_IS_DEFINED(SAMD21G15L) || \ 932 SAM_PART_IS_DEFINED(SAMD21G16L) \ 933 ) 934 935 #define SAMD21GXXL ( \ 936 SAM_PART_IS_DEFINED(SAMD21G15L) || \ 937 SAM_PART_IS_DEFINED(SAMD21G16L) \ 938 ) 939 940 #define SAMD21E ( \ 941 SAM_PART_IS_DEFINED(SAMD21E15A) || \ 942 SAM_PART_IS_DEFINED(SAMD21E16A) || \ 943 SAM_PART_IS_DEFINED(SAMD21E17A) || \ 944 SAM_PART_IS_DEFINED(SAMD21E18A) || \ 945 SAM_PART_IS_DEFINED(SAMD21E15B) || \ 946 SAM_PART_IS_DEFINED(SAMD21E15BU) || \ 947 SAM_PART_IS_DEFINED(SAMD21E16B) || \ 948 SAM_PART_IS_DEFINED(SAMD21E16BU) || \ 949 SAM_PART_IS_DEFINED(SAMD21E15L) || \ 950 SAM_PART_IS_DEFINED(SAMD21E16L) \ 951 ) 952 953 #define SAMD21EXXL ( \ 954 SAM_PART_IS_DEFINED(SAMD21E15L) || \ 955 SAM_PART_IS_DEFINED(SAMD21E16L) \ 956 ) 957 958 /** @} */ 959 960 /** 961 * \name SAMR21 series 962 * @{ 963 */ 964 #define SAMR21G ( \ 965 SAM_PART_IS_DEFINED(SAMR21G16A) || \ 966 SAM_PART_IS_DEFINED(SAMR21G17A) || \ 967 SAM_PART_IS_DEFINED(SAMR21G18A) \ 968 ) 969 970 #define SAMR21E ( \ 971 SAM_PART_IS_DEFINED(SAMR21E16A) || \ 972 SAM_PART_IS_DEFINED(SAMR21E17A) || \ 973 SAM_PART_IS_DEFINED(SAMR21E18A) || \ 974 SAM_PART_IS_DEFINED(SAMR21E19A) \ 975 ) 976 /** @} */ 977 978 /** 979 * \name SAMD09 series 980 * @{ 981 */ 982 #define SAMD09C ( \ 983 SAM_PART_IS_DEFINED(SAMD09C13A) \ 984 ) 985 986 #define SAMD09D ( \ 987 SAM_PART_IS_DEFINED(SAMD09D14A) \ 988 ) 989 /** @} */ 990 991 /** 992 * \name SAMD10 series 993 * @{ 994 */ 995 #define SAMD10C ( \ 996 SAM_PART_IS_DEFINED(SAMD10C12A) || \ 997 SAM_PART_IS_DEFINED(SAMD10C13A) || \ 998 SAM_PART_IS_DEFINED(SAMD10C14A) \ 999 ) 1000 1001 #define SAMD10DS ( \ 1002 SAM_PART_IS_DEFINED(SAMD10D12AS) || \ 1003 SAM_PART_IS_DEFINED(SAMD10D13AS) || \ 1004 SAM_PART_IS_DEFINED(SAMD10D14AS) \ 1005 ) 1006 1007 #define SAMD10DM ( \ 1008 SAM_PART_IS_DEFINED(SAMD10D12AM) || \ 1009 SAM_PART_IS_DEFINED(SAMD10D13AM) || \ 1010 SAM_PART_IS_DEFINED(SAMD10D14AM) \ 1011 ) 1012 /** @} */ 1013 1014 /** 1015 * \name SAMD11 series 1016 * @{ 1017 */ 1018 #define SAMD11C ( \ 1019 SAM_PART_IS_DEFINED(SAMD11C14A) \ 1020 ) 1021 1022 #define SAMD11DS ( \ 1023 SAM_PART_IS_DEFINED(SAMD11D14AS) \ 1024 ) 1025 1026 #define SAMD11DM ( \ 1027 SAM_PART_IS_DEFINED(SAMD11D14AM) \ 1028 ) 1029 /** @} */ 1030 1031 /** 1032 * \name SAML21 series 1033 * @{ 1034 */ 1035 #define SAML21E ( \ 1036 SAM_PART_IS_DEFINED(SAML21E18A) || \ 1037 SAM_PART_IS_DEFINED(SAML21E15B) || \ 1038 SAM_PART_IS_DEFINED(SAML21E16B) || \ 1039 SAM_PART_IS_DEFINED(SAML21E17B) || \ 1040 SAM_PART_IS_DEFINED(SAML21E18B) \ 1041 ) 1042 1043 #define SAML21G ( \ 1044 SAM_PART_IS_DEFINED(SAML21G18A) || \ 1045 SAM_PART_IS_DEFINED(SAML21G16B) || \ 1046 SAM_PART_IS_DEFINED(SAML21G17B) || \ 1047 SAM_PART_IS_DEFINED(SAML21G18B) \ 1048 ) 1049 1050 #define SAML21J ( \ 1051 SAM_PART_IS_DEFINED(SAML21J18A) || \ 1052 SAM_PART_IS_DEFINED(SAML21J16B) || \ 1053 SAM_PART_IS_DEFINED(SAML21J17B) || \ 1054 SAM_PART_IS_DEFINED(SAML21J18B) \ 1055 ) 1056 1057 /* Group for SAML21 A variant: SAML21[E/G/J][18]A */ 1058 #define SAML21XXXA ( \ 1059 SAM_PART_IS_DEFINED(SAML21E18A) || \ 1060 SAM_PART_IS_DEFINED(SAML21G18A) || \ 1061 SAM_PART_IS_DEFINED(SAML21J18A) \ 1062 ) 1063 1064 /* Group for SAML21 B variant: SAML21[E/G/J][15/16/1718]B */ 1065 #define SAML21XXXB ( \ 1066 SAM_PART_IS_DEFINED(SAML21E15B) || \ 1067 SAM_PART_IS_DEFINED(SAML21E16B) || \ 1068 SAM_PART_IS_DEFINED(SAML21E17B) || \ 1069 SAM_PART_IS_DEFINED(SAML21E18B) || \ 1070 SAM_PART_IS_DEFINED(SAML21G16B) || \ 1071 SAM_PART_IS_DEFINED(SAML21G17B) || \ 1072 SAM_PART_IS_DEFINED(SAML21G18B) || \ 1073 SAM_PART_IS_DEFINED(SAML21J16B) || \ 1074 SAM_PART_IS_DEFINED(SAML21J17B) || \ 1075 SAM_PART_IS_DEFINED(SAML21J18B) \ 1076 ) 1077 1078 /** @} */ 1079 1080 /** 1081 * \name SAML22 series 1082 * @{ 1083 */ 1084 #define SAML22N ( \ 1085 SAM_PART_IS_DEFINED(SAML22N16A) || \ 1086 SAM_PART_IS_DEFINED(SAML22N17A) || \ 1087 SAM_PART_IS_DEFINED(SAML22N18A) \ 1088 ) 1089 1090 #define SAML22G ( \ 1091 SAM_PART_IS_DEFINED(SAML22G16A) || \ 1092 SAM_PART_IS_DEFINED(SAML22G17A) || \ 1093 SAM_PART_IS_DEFINED(SAML22G18A) \ 1094 ) 1095 1096 #define SAML22J ( \ 1097 SAM_PART_IS_DEFINED(SAML22J16A) || \ 1098 SAM_PART_IS_DEFINED(SAML22J17A) || \ 1099 SAM_PART_IS_DEFINED(SAML22J18A) \ 1100 ) 1101 /** @} */ 1102 1103 /** 1104 * \name SAMDA0 series 1105 * @{ 1106 */ 1107 #define SAMDA0J ( \ 1108 SAM_PART_IS_DEFINED(SAMDA0J14A) || \ 1109 SAM_PART_IS_DEFINED(SAMDA0J15A) || \ 1110 SAM_PART_IS_DEFINED(SAMDA0J16A) \ 1111 ) 1112 1113 #define SAMDA0G ( \ 1114 SAM_PART_IS_DEFINED(SAMDA0G14A) || \ 1115 SAM_PART_IS_DEFINED(SAMDA0G15A) || \ 1116 SAM_PART_IS_DEFINED(SAMDA0G16A) \ 1117 ) 1118 1119 #define SAMDA0E ( \ 1120 SAM_PART_IS_DEFINED(SAMDA0E14A) || \ 1121 SAM_PART_IS_DEFINED(SAMDA0E15A) || \ 1122 SAM_PART_IS_DEFINED(SAMDA0E16A) \ 1123 ) 1124 /** @} */ 1125 1126 /** 1127 * \name SAMDA1 series 1128 * @{ 1129 */ 1130 #define SAMDA1J ( \ 1131 SAM_PART_IS_DEFINED(SAMDA1J14A) || \ 1132 SAM_PART_IS_DEFINED(SAMDA1J15A) || \ 1133 SAM_PART_IS_DEFINED(SAMDA1J16A) \ 1134 ) 1135 1136 #define SAMDA1G ( \ 1137 SAM_PART_IS_DEFINED(SAMDA1G14A) || \ 1138 SAM_PART_IS_DEFINED(SAMDA1G15A) || \ 1139 SAM_PART_IS_DEFINED(SAMDA1G16A) \ 1140 ) 1141 1142 #define SAMDA1E ( \ 1143 SAM_PART_IS_DEFINED(SAMDA1E14A) || \ 1144 SAM_PART_IS_DEFINED(SAMDA1E15A) || \ 1145 SAM_PART_IS_DEFINED(SAMDA1E16A) \ 1146 ) 1147 /** @} */ 1148 1149 /** 1150 * \name SAMC20 series 1151 * @{ 1152 */ 1153 #define SAMC20E ( \ 1154 SAM_PART_IS_DEFINED(SAMC20E15A) || \ 1155 SAM_PART_IS_DEFINED(SAMC20E16A) || \ 1156 SAM_PART_IS_DEFINED(SAMC20E17A) || \ 1157 SAM_PART_IS_DEFINED(SAMC20E18A) \ 1158 ) 1159 1160 #define SAMC20G ( \ 1161 SAM_PART_IS_DEFINED(SAMC20G15A) || \ 1162 SAM_PART_IS_DEFINED(SAMC20G16A) || \ 1163 SAM_PART_IS_DEFINED(SAMC20G17A) || \ 1164 SAM_PART_IS_DEFINED(SAMC20G18A) \ 1165 ) 1166 1167 #define SAMC20J ( \ 1168 SAM_PART_IS_DEFINED(SAMC20J15A) || \ 1169 SAM_PART_IS_DEFINED(SAMC20J16A) || \ 1170 SAM_PART_IS_DEFINED(SAMC20J17A) || \ 1171 SAM_PART_IS_DEFINED(SAMC20J18A) \ 1172 ) 1173 /** @} */ 1174 1175 /** 1176 * \name SAMC21 series 1177 * @{ 1178 */ 1179 #define SAMC21E ( \ 1180 SAM_PART_IS_DEFINED(SAMC21E15A) || \ 1181 SAM_PART_IS_DEFINED(SAMC21E16A) || \ 1182 SAM_PART_IS_DEFINED(SAMC21E17A) || \ 1183 SAM_PART_IS_DEFINED(SAMC21E18A) \ 1184 ) 1185 1186 #define SAMC21G ( \ 1187 SAM_PART_IS_DEFINED(SAMC21G15A) || \ 1188 SAM_PART_IS_DEFINED(SAMC21G16A) || \ 1189 SAM_PART_IS_DEFINED(SAMC21G17A) || \ 1190 SAM_PART_IS_DEFINED(SAMC21G18A) \ 1191 ) 1192 1193 #define SAMC21J ( \ 1194 SAM_PART_IS_DEFINED(SAMC21J15A) || \ 1195 SAM_PART_IS_DEFINED(SAMC21J16A) || \ 1196 SAM_PART_IS_DEFINED(SAMC21J17A) || \ 1197 SAM_PART_IS_DEFINED(SAMC21J18A) \ 1198 ) 1199 /** @} */ 1200 1201 /** 1202 * \name SAM4E series 1203 * @{ 1204 */ 1205 #define SAM4E8 ( \ 1206 SAM_PART_IS_DEFINED(SAM4E8C) || \ 1207 SAM_PART_IS_DEFINED(SAM4E8CB) || \ 1208 SAM_PART_IS_DEFINED(SAM4E8E) \ 1209 ) 1210 1211 #define SAM4E16 ( \ 1212 SAM_PART_IS_DEFINED(SAM4E16C) || \ 1213 SAM_PART_IS_DEFINED(SAM4E16CB) || \ 1214 SAM_PART_IS_DEFINED(SAM4E16E) \ 1215 ) 1216 /** @} */ 1217 1218 /** 1219 * \name SAM4N series 1220 * @{ 1221 */ 1222 #define SAM4N8 ( \ 1223 SAM_PART_IS_DEFINED(SAM4N8A) || \ 1224 SAM_PART_IS_DEFINED(SAM4N8B) || \ 1225 SAM_PART_IS_DEFINED(SAM4N8C) \ 1226 ) 1227 1228 #define SAM4N16 ( \ 1229 SAM_PART_IS_DEFINED(SAM4N16B) || \ 1230 SAM_PART_IS_DEFINED(SAM4N16C) \ 1231 ) 1232 /** @} */ 1233 1234 /** 1235 * \name SAM4C series 1236 * @{ 1237 */ 1238 #define SAM4C4_0 ( \ 1239 SAM_PART_IS_DEFINED(SAM4C4C_0) \ 1240 ) 1241 1242 #define SAM4C4_1 ( \ 1243 SAM_PART_IS_DEFINED(SAM4C4C_1) \ 1244 ) 1245 1246 #define SAM4C4 (SAM4C4_0 || SAM4C4_1) 1247 1248 #define SAM4C8_0 ( \ 1249 SAM_PART_IS_DEFINED(SAM4C8C_0) \ 1250 ) 1251 1252 #define SAM4C8_1 ( \ 1253 SAM_PART_IS_DEFINED(SAM4C8C_1) \ 1254 ) 1255 1256 #define SAM4C8 (SAM4C8_0 || SAM4C8_1) 1257 1258 #define SAM4C16_0 ( \ 1259 SAM_PART_IS_DEFINED(SAM4C16C_0) \ 1260 ) 1261 1262 #define SAM4C16_1 ( \ 1263 SAM_PART_IS_DEFINED(SAM4C16C_1) \ 1264 ) 1265 1266 #define SAM4C16 (SAM4C16_0 || SAM4C16_1) 1267 1268 #define SAM4C32_0 ( \ 1269 SAM_PART_IS_DEFINED(SAM4C32C_0) ||\ 1270 SAM_PART_IS_DEFINED(SAM4C32E_0) \ 1271 ) 1272 1273 #define SAM4C32_1 ( \ 1274 SAM_PART_IS_DEFINED(SAM4C32C_1) ||\ 1275 SAM_PART_IS_DEFINED(SAM4C32E_1) \ 1276 ) 1277 1278 1279 #define SAM4C32 (SAM4C32_0 || SAM4C32_1) 1280 1281 /** @} */ 1282 1283 /** 1284 * \name SAM4CM series 1285 * @{ 1286 */ 1287 #define SAM4CMP8_0 ( \ 1288 SAM_PART_IS_DEFINED(SAM4CMP8C_0) \ 1289 ) 1290 1291 #define SAM4CMP8_1 ( \ 1292 SAM_PART_IS_DEFINED(SAM4CMP8C_1) \ 1293 ) 1294 1295 #define SAM4CMP8 (SAM4CMP8_0 || SAM4CMP8_1) 1296 1297 #define SAM4CMP16_0 ( \ 1298 SAM_PART_IS_DEFINED(SAM4CMP16C_0) \ 1299 ) 1300 1301 #define SAM4CMP16_1 ( \ 1302 SAM_PART_IS_DEFINED(SAM4CMP16C_1) \ 1303 ) 1304 1305 #define SAM4CMP16 (SAM4CMP16_0 || SAM4CMP16_1) 1306 1307 #define SAM4CMP32_0 ( \ 1308 SAM_PART_IS_DEFINED(SAM4CMP32C_0) \ 1309 ) 1310 1311 #define SAM4CMP32_1 ( \ 1312 SAM_PART_IS_DEFINED(SAM4CMP32C_1) \ 1313 ) 1314 1315 #define SAM4CMP32 (SAM4CMP32_0 || SAM4CMP32_1) 1316 1317 #define SAM4CMS4_0 ( \ 1318 SAM_PART_IS_DEFINED(SAM4CMS4C_0) \ 1319 ) 1320 1321 #define SAM4CMS4_1 ( \ 1322 SAM_PART_IS_DEFINED(SAM4CMS4C_1) \ 1323 ) 1324 1325 #define SAM4CMS4 (SAM4CMS4_0 || SAM4CMS4_1) 1326 1327 #define SAM4CMS8_0 ( \ 1328 SAM_PART_IS_DEFINED(SAM4CMS8C_0) \ 1329 ) 1330 1331 #define SAM4CMS8_1 ( \ 1332 SAM_PART_IS_DEFINED(SAM4CMS8C_1) \ 1333 ) 1334 1335 #define SAM4CMS8 (SAM4CMS8_0 || SAM4CMS8_1) 1336 1337 #define SAM4CMS16_0 ( \ 1338 SAM_PART_IS_DEFINED(SAM4CMS16C_0) \ 1339 ) 1340 1341 #define SAM4CMS16_1 ( \ 1342 SAM_PART_IS_DEFINED(SAM4CMS16C_1) \ 1343 ) 1344 1345 #define SAM4CMS16 (SAM4CMS16_0 || SAM4CMS16_1) 1346 1347 #define SAM4CMS32_0 ( \ 1348 SAM_PART_IS_DEFINED(SAM4CMS32C_0) \ 1349 ) 1350 1351 #define SAM4CMS32_1 ( \ 1352 SAM_PART_IS_DEFINED(SAM4CMS32C_1) \ 1353 ) 1354 1355 #define SAM4CMS32 (SAM4CMS32_0 || SAM4CMS32_1) 1356 1357 /** @} */ 1358 1359 /** 1360 * \name SAM4CP series 1361 * @{ 1362 */ 1363 #define SAM4CP16_0 ( \ 1364 SAM_PART_IS_DEFINED(SAM4CP16B_0) \ 1365 ) 1366 1367 #define SAM4CP16_1 ( \ 1368 SAM_PART_IS_DEFINED(SAM4CP16B_1) \ 1369 ) 1370 1371 #define SAM4CP16 (SAM4CP16_0 || SAM4CP16_1) 1372 /** @} */ 1373 1374 /** 1375 * \name SAMG series 1376 * @{ 1377 */ 1378 #define SAMG51 ( \ 1379 SAM_PART_IS_DEFINED(SAMG51G18) \ 1380 ) 1381 1382 #define SAMG53 ( \ 1383 SAM_PART_IS_DEFINED(SAMG53G19) ||\ 1384 SAM_PART_IS_DEFINED(SAMG53N19) \ 1385 ) 1386 1387 #define SAMG54 ( \ 1388 SAM_PART_IS_DEFINED(SAMG54G19) ||\ 1389 SAM_PART_IS_DEFINED(SAMG54J19) ||\ 1390 SAM_PART_IS_DEFINED(SAMG54N19) \ 1391 ) 1392 1393 #define SAMG55 ( \ 1394 SAM_PART_IS_DEFINED(SAMG55G18) ||\ 1395 SAM_PART_IS_DEFINED(SAMG55G19) ||\ 1396 SAM_PART_IS_DEFINED(SAMG55J18) ||\ 1397 SAM_PART_IS_DEFINED(SAMG55J19) ||\ 1398 SAM_PART_IS_DEFINED(SAMG55N19) \ 1399 ) 1400 /** @} */ 1401 1402 /** 1403 * \name SAMV71 series 1404 * @{ 1405 */ 1406 #define SAMV71J ( \ 1407 SAM_PART_IS_DEFINED(SAMV71J19) || \ 1408 SAM_PART_IS_DEFINED(SAMV71J20) || \ 1409 SAM_PART_IS_DEFINED(SAMV71J21) \ 1410 ) 1411 1412 #define SAMV71N ( \ 1413 SAM_PART_IS_DEFINED(SAMV71N19) || \ 1414 SAM_PART_IS_DEFINED(SAMV71N20) || \ 1415 SAM_PART_IS_DEFINED(SAMV71N21) \ 1416 ) 1417 1418 #define SAMV71Q ( \ 1419 SAM_PART_IS_DEFINED(SAMV71Q19) || \ 1420 SAM_PART_IS_DEFINED(SAMV71Q20) || \ 1421 SAM_PART_IS_DEFINED(SAMV71Q21) \ 1422 ) 1423 /** @} */ 1424 1425 /** 1426 * \name SAMV70 series 1427 * @{ 1428 */ 1429 #define SAMV70J ( \ 1430 SAM_PART_IS_DEFINED(SAMV70J19) || \ 1431 SAM_PART_IS_DEFINED(SAMV70J20) \ 1432 ) 1433 1434 #define SAMV70N ( \ 1435 SAM_PART_IS_DEFINED(SAMV70N19) || \ 1436 SAM_PART_IS_DEFINED(SAMV70N20) \ 1437 ) 1438 1439 #define SAMV70Q ( \ 1440 SAM_PART_IS_DEFINED(SAMV70Q19) || \ 1441 SAM_PART_IS_DEFINED(SAMV70Q20) \ 1442 ) 1443 /** @} */ 1444 1445 /** 1446 * \name SAMS70 series 1447 * @{ 1448 */ 1449 #define SAMS70J ( \ 1450 SAM_PART_IS_DEFINED(SAMS70J19) || \ 1451 SAM_PART_IS_DEFINED(SAMS70J20) || \ 1452 SAM_PART_IS_DEFINED(SAMS70J21) \ 1453 ) 1454 1455 #define SAMS70N ( \ 1456 SAM_PART_IS_DEFINED(SAMS70N19) || \ 1457 SAM_PART_IS_DEFINED(SAMS70N20) || \ 1458 SAM_PART_IS_DEFINED(SAMS70N21) \ 1459 ) 1460 1461 #define SAMS70Q ( \ 1462 SAM_PART_IS_DEFINED(SAMS70Q19) || \ 1463 SAM_PART_IS_DEFINED(SAMS70Q20) || \ 1464 SAM_PART_IS_DEFINED(SAMS70Q21) \ 1465 ) 1466 /** @} */ 1467 1468 /** 1469 * \name SAME70 series 1470 * @{ 1471 */ 1472 #define SAME70J ( \ 1473 SAM_PART_IS_DEFINED(SAME70J19) || \ 1474 SAM_PART_IS_DEFINED(SAME70J20) || \ 1475 SAM_PART_IS_DEFINED(SAME70J21) \ 1476 ) 1477 1478 #define SAME70N ( \ 1479 SAM_PART_IS_DEFINED(SAME70N19) || \ 1480 SAM_PART_IS_DEFINED(SAME70N20) || \ 1481 SAM_PART_IS_DEFINED(SAME70N21) \ 1482 ) 1483 1484 #define SAME70Q ( \ 1485 SAM_PART_IS_DEFINED(SAME70Q19) || \ 1486 SAM_PART_IS_DEFINED(SAME70Q20) || \ 1487 SAM_PART_IS_DEFINED(SAME70Q21) \ 1488 ) 1489 /** @} */ 1490 1491 /** 1492 * \name SAM families 1493 * @{ 1494 */ 1495 /** SAM3S Family */ 1496 #define SAM3S (SAM3S1 || SAM3S2 || SAM3S4 || SAM3S8 || SAM3SD8) 1497 1498 /** SAM3U Family */ 1499 #define SAM3U (SAM3U1 || SAM3U2 || SAM3U4) 1500 1501 /** SAM3N Family */ 1502 #define SAM3N (SAM3N00 || SAM3N0 || SAM3N1 || SAM3N2 || SAM3N4) 1503 1504 /** SAM3XA Family */ 1505 #define SAM3XA (SAM3X4 || SAM3X8 || SAM3A4 || SAM3A8) 1506 1507 /** SAM4S Family */ 1508 #define SAM4S (SAM4S2 || SAM4S4 || SAM4S8 || SAM4S16 || SAM4SA16 || SAM4SD16 || SAM4SD32) 1509 1510 /** SAM4L Family */ 1511 #define SAM4L (SAM4LS || SAM4LC) 1512 1513 /** SAMD20 Family */ 1514 #define SAMD20 (SAMD20J || SAMD20G || SAMD20E) 1515 1516 /** SAMD21 Family */ 1517 #define SAMD21 (SAMD21J || SAMD21G || SAMD21E) 1518 1519 /** SAMD09 Family */ 1520 #define SAMD09 (SAMD09C || SAMD09D) 1521 1522 /** SAMD10 Family */ 1523 #define SAMD10 (SAMD10C || SAMD10DS || SAMD10DM) 1524 1525 /** SAMD11 Family */ 1526 #define SAMD11 (SAMD11C || SAMD11DS || SAMD11DM) 1527 1528 /** SAMDA1 Family */ 1529 #define SAMDA1 (SAMDA1J || SAMDA1G || SAMDA1E) 1530 1531 /** SAMD Family */ 1532 #define SAMD (SAMD20 || SAMD21 || SAMD09 || SAMD10 || SAMD11 || SAMDA1) 1533 1534 /** SAMR21 Family */ 1535 #define SAMR21 (SAMR21G || SAMR21E) 1536 1537 /** SAML21 Family */ 1538 #define SAML21 (SAML21J || SAML21G || SAML21E) 1539 1540 /** SAML22 Family */ 1541 #define SAML22 (SAML22J || SAML22G || SAML22N) 1542 /** SAMC20 Family */ 1543 #define SAMC20 (SAMC20J || SAMC20G || SAMC20E) 1544 1545 /** SAMC21 Family */ 1546 #define SAMC21 (SAMC21J || SAMC21G || SAMC21E) 1547 1548 /** SAM4E Family */ 1549 #define SAM4E (SAM4E8 || SAM4E16) 1550 1551 /** SAM4N Family */ 1552 #define SAM4N (SAM4N8 || SAM4N16) 1553 1554 /** SAM4C Family */ 1555 #define SAM4C_0 (SAM4C4_0 || SAM4C8_0 || SAM4C16_0 || SAM4C32_0) 1556 #define SAM4C_1 (SAM4C4_1 || SAM4C8_1 || SAM4C16_1 || SAM4C32_1) 1557 #define SAM4C (SAM4C4 || SAM4C8 || SAM4C16 || SAM4C32) 1558 1559 /** SAM4CM Family */ 1560 #define SAM4CM_0 (SAM4CMP8_0 || SAM4CMP16_0 || SAM4CMP32_0 || \ 1561 SAM4CMS4_0 || SAM4CMS8_0 || SAM4CMS16_0 || SAM4CMS32_0) 1562 #define SAM4CM_1 (SAM4CMP8_1 || SAM4CMP16_1 || SAM4CMP32_1 || \ 1563 SAM4CMS4_1 || SAM4CMS8_1 || SAM4CMS16_1 || SAM4CMS32_1) 1564 #define SAM4CM (SAM4CMP8 || SAM4CMP16 || SAM4CMP32 || \ 1565 SAM4CMS4 || SAM4CMS8 || SAM4CMS16 || SAM4CMS32) 1566 1567 /** SAM4CP Family */ 1568 #define SAM4CP_0 (SAM4CP16_0) 1569 #define SAM4CP_1 (SAM4CP16_1) 1570 #define SAM4CP (SAM4CP16) 1571 1572 /** SAMG Family */ 1573 #define SAMG (SAMG51 || SAMG53 || SAMG54 || SAMG55) 1574 1575 /** SAMV71 Family */ 1576 #define SAMV71 (SAMV71J || SAMV71N || SAMV71Q) 1577 1578 /** SAMV70 Family */ 1579 #define SAMV70 (SAMV70J || SAMV70N || SAMV70Q) 1580 1581 /** SAME70 Family */ 1582 #define SAME70 (SAME70J || SAME70N || SAME70Q) 1583 1584 /** SAMS70 Family */ 1585 #define SAMS70 (SAMS70J || SAMS70N || SAMS70Q) 1586 1587 /** SAM0 product line (cortex-m0+) */ 1588 #define SAM0 (SAMD20 || SAMD21 || SAMR21 || SAMD10 || SAMD11 || SAML21 ||\ 1589 SAMDA1 || SAMC20 || SAMC21 || SAML22 || SAMD09) 1590 1591 /** @} */ 1592 1593 /** SAM product line */ 1594 #define SAM (SAM3S || SAM3U || SAM3N || SAM3XA || SAM4S || SAM4L || SAM4E || \ 1595 SAM0 || SAM4N || SAM4C || SAM4CM || SAM4CP || SAMG || SAMV71 || SAMV70 || SAME70 || SAMS70) 1596 1597 /** @} */ 1598 1599 /** @} */ 1600 1601 /** @} */ 1602 1603 #endif /* ATMEL_PARTS_H */ 1604