1 /***************************************************************************** 2 * 3 * Copyright (C) 2014 Atmel Corporation 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in 14 * the documentation and/or other materials provided with the 15 * distribution. 16 * 17 * * Neither the name of the copyright holders nor the names of 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 * POSSIBILITY OF SUCH DAMAGE. 32 ****************************************************************************/ 33 34 35 /* $Id: iox64d4.h 2460 2014-12-03 05:39:25Z pitchumani $ */ 36 37 #ifndef _AVR_IO_H_ 38 # error "Include <avr/io.h> instead of this file." 39 #endif 40 41 #ifndef _AVR_IOXXX_H_ 42 # define _AVR_IOXXX_H_ "iox64d4.h" 43 #else 44 # error "Attempt to include more than one <avr/ioXXX.h> file." 45 #endif 46 47 #ifndef _AVR_ATXMEGA64D4_H_INCLUDED 48 #define _AVR_ATXMEGA64D4_H_INCLUDED 49 50 /* Ungrouped common registers */ 51 #define GPIOR0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ 52 #define GPIOR1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ 53 #define GPIOR2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ 54 #define GPIOR3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ 55 56 /* Deprecated */ 57 #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ 58 #define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ 59 #define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ 60 #define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ 61 62 #define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ 63 #define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ 64 #define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ 65 #define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ 66 #define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ 67 #define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ 68 #define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ 69 #define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ 70 #define SREG _SFR_MEM8(0x003F) /* Status Register */ 71 72 /* C Language Only */ 73 #if !defined (__ASSEMBLER__) 74 75 #include <stdint.h> 76 77 typedef volatile uint8_t register8_t; 78 typedef volatile uint16_t register16_t; 79 typedef volatile uint32_t register32_t; 80 81 82 #ifdef _WORDREGISTER 83 #undef _WORDREGISTER 84 #endif 85 #define _WORDREGISTER(regname) \ 86 __extension__ union \ 87 { \ 88 register16_t regname; \ 89 struct \ 90 { \ 91 register8_t regname ## L; \ 92 register8_t regname ## H; \ 93 }; \ 94 } 95 96 #ifdef _DWORDREGISTER 97 #undef _DWORDREGISTER 98 #endif 99 #define _DWORDREGISTER(regname) \ 100 __extension__ union \ 101 { \ 102 register32_t regname; \ 103 struct \ 104 { \ 105 register8_t regname ## 0; \ 106 register8_t regname ## 1; \ 107 register8_t regname ## 2; \ 108 register8_t regname ## 3; \ 109 }; \ 110 } 111 112 113 /* 114 ========================================================================== 115 IO Module Structures 116 ========================================================================== 117 */ 118 119 120 /* 121 -------------------------------------------------------------------------- 122 VPORT - Virtual Ports 123 -------------------------------------------------------------------------- 124 */ 125 126 /* Virtual Port */ 127 typedef struct VPORT_struct 128 { 129 register8_t DIR; /* I/O Port Data Direction */ 130 register8_t OUT; /* I/O Port Output */ 131 register8_t IN; /* I/O Port Input */ 132 register8_t INTFLAGS; /* Interrupt Flag Register */ 133 } VPORT_t; 134 135 136 /* 137 -------------------------------------------------------------------------- 138 XOCD - On-Chip Debug System 139 -------------------------------------------------------------------------- 140 */ 141 142 /* On-Chip Debug System */ 143 typedef struct OCD_struct 144 { 145 register8_t OCDR0; /* OCD Register 0 */ 146 register8_t OCDR1; /* OCD Register 1 */ 147 } OCD_t; 148 149 150 /* 151 -------------------------------------------------------------------------- 152 CPU - CPU 153 -------------------------------------------------------------------------- 154 */ 155 156 /* CCP signatures */ 157 typedef enum CCP_enum 158 { 159 CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ 160 CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ 161 } CCP_t; 162 163 164 /* 165 -------------------------------------------------------------------------- 166 CLK - Clock System 167 -------------------------------------------------------------------------- 168 */ 169 170 /* Clock System */ 171 typedef struct CLK_struct 172 { 173 register8_t CTRL; /* Control Register */ 174 register8_t PSCTRL; /* Prescaler Control Register */ 175 register8_t LOCK; /* Lock register */ 176 register8_t RTCCTRL; /* RTC Control Register */ 177 register8_t reserved_0x04; 178 } CLK_t; 179 180 181 /* Power Reduction */ 182 typedef struct PR_struct 183 { 184 register8_t PRGEN; /* General Power Reduction */ 185 register8_t PRPA; /* Power Reduction Port A */ 186 register8_t reserved_0x02; 187 register8_t PRPC; /* Power Reduction Port C */ 188 register8_t PRPD; /* Power Reduction Port D */ 189 register8_t PRPE; /* Power Reduction Port E */ 190 register8_t PRPF; /* Power Reduction Port F */ 191 } PR_t; 192 193 /* System Clock Selection */ 194 typedef enum CLK_SCLKSEL_enum 195 { 196 CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2 MHz RC Oscillator */ 197 CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32 MHz RC Oscillator */ 198 CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32.768 kHz RC Oscillator */ 199 CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ 200 CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ 201 } CLK_SCLKSEL_t; 202 203 /* Prescaler A Division Factor */ 204 typedef enum CLK_PSADIV_enum 205 { 206 CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ 207 CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ 208 CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ 209 CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ 210 CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ 211 CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ 212 CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ 213 CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ 214 CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ 215 CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ 216 } CLK_PSADIV_t; 217 218 /* Prescaler B and C Division Factor */ 219 typedef enum CLK_PSBCDIV_enum 220 { 221 CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ 222 CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ 223 CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ 224 CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ 225 } CLK_PSBCDIV_t; 226 227 /* RTC Clock Source */ 228 typedef enum CLK_RTCSRC_enum 229 { 230 CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1 kHz from internal 32kHz ULP */ 231 CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1.024 kHz from 32.768 kHz crystal oscillator on TOSC */ 232 CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1.024 kHz from 32.768 kHz internal oscillator */ 233 CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32.768 kHz from 32.768 kHz crystal oscillator on TOSC */ 234 CLK_RTCSRC_RCOSC32_gc = (0x06<<1), /* 32.768 kHz from 32.768 kHz internal oscillator */ 235 CLK_RTCSRC_EXTCLK_gc = (0x07<<1), /* External Clock from TOSC1 */ 236 } CLK_RTCSRC_t; 237 238 239 /* 240 -------------------------------------------------------------------------- 241 SLEEP - Sleep Controller 242 -------------------------------------------------------------------------- 243 */ 244 245 /* Sleep Controller */ 246 typedef struct SLEEP_struct 247 { 248 register8_t CTRL; /* Control Register */ 249 } SLEEP_t; 250 251 /* Sleep Mode */ 252 typedef enum SLEEP_SMODE_enum 253 { 254 SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ 255 SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ 256 SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ 257 SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ 258 SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ 259 } SLEEP_SMODE_t; 260 261 262 #define SLEEP_MODE_IDLE (0x00<<1) 263 #define SLEEP_MODE_PWR_DOWN (0x02<<1) 264 #define SLEEP_MODE_PWR_SAVE (0x03<<1) 265 #define SLEEP_MODE_STANDBY (0x06<<1) 266 #define SLEEP_MODE_EXT_STANDBY (0x07<<1) 267 268 269 /* 270 -------------------------------------------------------------------------- 271 OSC - Oscillator 272 -------------------------------------------------------------------------- 273 */ 274 275 /* Oscillator */ 276 typedef struct OSC_struct 277 { 278 register8_t CTRL; /* Control Register */ 279 register8_t STATUS; /* Status Register */ 280 register8_t XOSCCTRL; /* External Oscillator Control Register */ 281 register8_t XOSCFAIL; /* Oscillator Failure Detection Register */ 282 register8_t RC32KCAL; /* 32.768 kHz Internal Oscillator Calibration Register */ 283 register8_t PLLCTRL; /* PLL Control Register */ 284 register8_t DFLLCTRL; /* DFLL Control Register */ 285 } OSC_t; 286 287 /* Oscillator Frequency Range */ 288 typedef enum OSC_FRQRANGE_enum 289 { 290 OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ 291 OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ 292 OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ 293 OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ 294 } OSC_FRQRANGE_t; 295 296 /* External Oscillator Selection and Startup Time */ 297 typedef enum OSC_XOSCSEL_enum 298 { 299 OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ 300 OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32.768 kHz TOSC - 32K CLK */ 301 OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16 MHz XTAL - 256 CLK */ 302 OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16 MHz XTAL - 1K CLK */ 303 OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16 MHz XTAL - 16K CLK */ 304 } OSC_XOSCSEL_t; 305 306 /* PLL Clock Source */ 307 typedef enum OSC_PLLSRC_enum 308 { 309 OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2 MHz RC Oscillator */ 310 OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32 MHz RC Oscillator */ 311 OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ 312 } OSC_PLLSRC_t; 313 314 /* 2 MHz DFLL Calibration Reference */ 315 typedef enum OSC_RC2MCREF_enum 316 { 317 OSC_RC2MCREF_RC32K_gc = (0x00<<0), /* Internal 32.768 kHz RC Oscillator */ 318 OSC_RC2MCREF_XOSC32K_gc = (0x01<<0), /* External 32.768 kHz Crystal Oscillator */ 319 } OSC_RC2MCREF_t; 320 321 /* 32 MHz DFLL Calibration Reference */ 322 typedef enum OSC_RC32MCREF_enum 323 { 324 OSC_RC32MCREF_RC32K_gc = (0x00<<1), /* Internal 32.768 kHz RC Oscillator */ 325 OSC_RC32MCREF_XOSC32K_gc = (0x01<<1), /* External 32.768 kHz Crystal Oscillator */ 326 } OSC_RC32MCREF_t; 327 328 329 /* 330 -------------------------------------------------------------------------- 331 DFLL - DFLL 332 -------------------------------------------------------------------------- 333 */ 334 335 /* DFLL */ 336 typedef struct DFLL_struct 337 { 338 register8_t CTRL; /* Control Register */ 339 register8_t reserved_0x01; 340 register8_t CALA; /* Calibration Register A */ 341 register8_t CALB; /* Calibration Register B */ 342 register8_t COMP0; /* Oscillator Compare Register 0 */ 343 register8_t COMP1; /* Oscillator Compare Register 1 */ 344 register8_t COMP2; /* Oscillator Compare Register 2 */ 345 register8_t reserved_0x07; 346 } DFLL_t; 347 348 349 /* 350 -------------------------------------------------------------------------- 351 RST - Reset 352 -------------------------------------------------------------------------- 353 */ 354 355 /* Reset */ 356 typedef struct RST_struct 357 { 358 register8_t STATUS; /* Status Register */ 359 register8_t CTRL; /* Control Register */ 360 } RST_t; 361 362 363 /* 364 -------------------------------------------------------------------------- 365 WDT - Watch-Dog Timer 366 -------------------------------------------------------------------------- 367 */ 368 369 /* Watch-Dog Timer */ 370 typedef struct WDT_struct 371 { 372 register8_t CTRL; /* Control */ 373 register8_t WINCTRL; /* Windowed Mode Control */ 374 register8_t STATUS; /* Status */ 375 } WDT_t; 376 377 /* Period setting */ 378 typedef enum WDT_PER_enum 379 { 380 WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ 381 WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ 382 WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ 383 WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ 384 WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.128s @ 3.3V) */ 385 WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.256s @ 3.3V) */ 386 WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.512s @ 3.3V) */ 387 WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ 388 WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ 389 WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ 390 WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ 391 } WDT_PER_t; 392 393 /* Closed window period */ 394 typedef enum WDT_WPER_enum 395 { 396 WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ 397 WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ 398 WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ 399 WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ 400 WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.128s @ 3.3V) */ 401 WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.256s @ 3.3V) */ 402 WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.512s @ 3.3V) */ 403 WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ 404 WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ 405 WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ 406 WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ 407 } WDT_WPER_t; 408 409 410 /* 411 -------------------------------------------------------------------------- 412 MCU - MCU Control 413 -------------------------------------------------------------------------- 414 */ 415 416 /* MCU Control */ 417 typedef struct MCU_struct 418 { 419 register8_t DEVID0; /* Device ID byte 0 */ 420 register8_t DEVID1; /* Device ID byte 1 */ 421 register8_t DEVID2; /* Device ID byte 2 */ 422 register8_t REVID; /* Revision ID */ 423 register8_t reserved_0x04; 424 register8_t reserved_0x05; 425 register8_t reserved_0x06; 426 register8_t ANAINIT; /* Analog Startup Delay */ 427 register8_t EVSYSLOCK; /* Event System Lock */ 428 register8_t AWEXLOCK; /* AWEX Lock */ 429 register8_t reserved_0x0A; 430 register8_t reserved_0x0B; 431 } MCU_t; 432 433 434 /* 435 -------------------------------------------------------------------------- 436 PMIC - Programmable Multi-level Interrupt Controller 437 -------------------------------------------------------------------------- 438 */ 439 440 /* Programmable Multi-level Interrupt Controller */ 441 typedef struct PMIC_struct 442 { 443 register8_t STATUS; /* Status Register */ 444 register8_t INTPRI; /* Interrupt Priority */ 445 register8_t CTRL; /* Control Register */ 446 register8_t reserved_0x03; 447 register8_t reserved_0x04; 448 register8_t reserved_0x05; 449 register8_t reserved_0x06; 450 register8_t reserved_0x07; 451 register8_t reserved_0x08; 452 register8_t reserved_0x09; 453 register8_t reserved_0x0A; 454 register8_t reserved_0x0B; 455 register8_t reserved_0x0C; 456 register8_t reserved_0x0D; 457 register8_t reserved_0x0E; 458 register8_t reserved_0x0F; 459 } PMIC_t; 460 461 462 /* 463 -------------------------------------------------------------------------- 464 PORTCFG - Port Configuration 465 -------------------------------------------------------------------------- 466 */ 467 468 /* I/O port Configuration */ 469 typedef struct PORTCFG_struct 470 { 471 register8_t MPCMASK; /* Multi-pin Configuration Mask */ 472 register8_t reserved_0x01; 473 register8_t VPCTRLA; /* Virtual Port Control Register A */ 474 register8_t VPCTRLB; /* Virtual Port Control Register B */ 475 register8_t CLKEVOUT; /* Clock and Event Out Register */ 476 register8_t reserved_0x05; 477 register8_t EVOUTSEL; /* Event Output Select */ 478 } PORTCFG_t; 479 480 /* Virtual Port Mapping */ 481 typedef enum PORTCFG_VP02MAP_enum 482 { 483 PORTCFG_VP02MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ 484 PORTCFG_VP02MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ 485 PORTCFG_VP02MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ 486 PORTCFG_VP02MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ 487 PORTCFG_VP02MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ 488 PORTCFG_VP02MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ 489 PORTCFG_VP02MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ 490 PORTCFG_VP02MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ 491 PORTCFG_VP02MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ 492 PORTCFG_VP02MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ 493 PORTCFG_VP02MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ 494 PORTCFG_VP02MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ 495 PORTCFG_VP02MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ 496 PORTCFG_VP02MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ 497 PORTCFG_VP02MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ 498 PORTCFG_VP02MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ 499 } PORTCFG_VP02MAP_t; 500 501 /* Virtual Port Mapping */ 502 typedef enum PORTCFG_VP13MAP_enum 503 { 504 PORTCFG_VP13MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ 505 PORTCFG_VP13MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ 506 PORTCFG_VP13MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ 507 PORTCFG_VP13MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ 508 PORTCFG_VP13MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ 509 PORTCFG_VP13MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ 510 PORTCFG_VP13MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ 511 PORTCFG_VP13MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ 512 PORTCFG_VP13MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ 513 PORTCFG_VP13MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ 514 PORTCFG_VP13MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ 515 PORTCFG_VP13MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ 516 PORTCFG_VP13MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ 517 PORTCFG_VP13MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ 518 PORTCFG_VP13MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ 519 PORTCFG_VP13MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ 520 } PORTCFG_VP13MAP_t; 521 522 /* System Clock Output Port */ 523 typedef enum PORTCFG_CLKOUT_enum 524 { 525 PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* System Clock Output Disabled */ 526 PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* System Clock Output on Port C pin 7 */ 527 PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* System Clock Output on Port D pin 7 */ 528 PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* System Clock Output on Port E pin 7 */ 529 } PORTCFG_CLKOUT_t; 530 531 /* Peripheral Clock Output Select */ 532 typedef enum PORTCFG_CLKOUTSEL_enum 533 { 534 PORTCFG_CLKOUTSEL_CLK1X_gc = (0x00<<2), /* 1x Peripheral Clock Output to pin */ 535 PORTCFG_CLKOUTSEL_CLK2X_gc = (0x01<<2), /* 2x Peripheral Clock Output to pin */ 536 PORTCFG_CLKOUTSEL_CLK4X_gc = (0x02<<2), /* 4x Peripheral Clock Output to pin */ 537 } PORTCFG_CLKOUTSEL_t; 538 539 /* Event Output Port */ 540 typedef enum PORTCFG_EVOUT_enum 541 { 542 PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ 543 PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ 544 PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ 545 PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ 546 } PORTCFG_EVOUT_t; 547 548 /* Event Output Select */ 549 typedef enum PORTCFG_EVOUTSEL_enum 550 { 551 PORTCFG_EVOUTSEL_0_gc = (0x00<<0), /* Event Channel 0 output to pin */ 552 PORTCFG_EVOUTSEL_1_gc = (0x01<<0), /* Event Channel 1 output to pin */ 553 PORTCFG_EVOUTSEL_2_gc = (0x02<<0), /* Event Channel 2 output to pin */ 554 PORTCFG_EVOUTSEL_3_gc = (0x03<<0), /* Event Channel 3 output to pin */ 555 } PORTCFG_EVOUTSEL_t; 556 557 558 /* 559 -------------------------------------------------------------------------- 560 CRC - Cyclic Redundancy Checker 561 -------------------------------------------------------------------------- 562 */ 563 564 /* Cyclic Redundancy Checker */ 565 typedef struct CRC_struct 566 { 567 register8_t CTRL; /* Control Register */ 568 register8_t STATUS; /* Status Register */ 569 register8_t reserved_0x02; 570 register8_t DATAIN; /* Data Input */ 571 register8_t CHECKSUM0; /* Checksum byte 0 */ 572 register8_t CHECKSUM1; /* Checksum byte 1 */ 573 register8_t CHECKSUM2; /* Checksum byte 2 */ 574 register8_t CHECKSUM3; /* Checksum byte 3 */ 575 } CRC_t; 576 577 /* Reset */ 578 typedef enum CRC_RESET_enum 579 { 580 CRC_RESET_NO_gc = (0x00<<6), /* No Reset */ 581 CRC_RESET_RESET0_gc = (0x02<<6), /* Reset CRC with CHECKSUM to all zeros */ 582 CRC_RESET_RESET1_gc = (0x03<<6), /* Reset CRC with CHECKSUM to all ones */ 583 } CRC_RESET_t; 584 585 /* Input Source */ 586 typedef enum CRC_SOURCE_enum 587 { 588 CRC_SOURCE_DISABLE_gc = (0x00<<0), /* Disabled */ 589 CRC_SOURCE_IO_gc = (0x01<<0), /* I/O Interface */ 590 CRC_SOURCE_FLASH_gc = (0x02<<0), /* Flash */ 591 } CRC_SOURCE_t; 592 593 594 /* 595 -------------------------------------------------------------------------- 596 EVSYS - Event System 597 -------------------------------------------------------------------------- 598 */ 599 600 /* Event System */ 601 typedef struct EVSYS_struct 602 { 603 register8_t CH0MUX; /* Event Channel 0 Multiplexer */ 604 register8_t CH1MUX; /* Event Channel 1 Multiplexer */ 605 register8_t CH2MUX; /* Event Channel 2 Multiplexer */ 606 register8_t CH3MUX; /* Event Channel 3 Multiplexer */ 607 register8_t reserved_0x04; 608 register8_t reserved_0x05; 609 register8_t reserved_0x06; 610 register8_t reserved_0x07; 611 register8_t CH0CTRL; /* Channel 0 Control Register */ 612 register8_t CH1CTRL; /* Channel 1 Control Register */ 613 register8_t CH2CTRL; /* Channel 2 Control Register */ 614 register8_t CH3CTRL; /* Channel 3 Control Register */ 615 register8_t reserved_0x0C; 616 register8_t reserved_0x0D; 617 register8_t reserved_0x0E; 618 register8_t reserved_0x0F; 619 register8_t STROBE; /* Event Strobe */ 620 register8_t DATA; /* Event Data */ 621 } EVSYS_t; 622 623 /* Quadrature Decoder Index Recognition Mode */ 624 typedef enum EVSYS_QDIRM_enum 625 { 626 EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ 627 EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ 628 EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ 629 EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ 630 } EVSYS_QDIRM_t; 631 632 /* Digital filter coefficient */ 633 typedef enum EVSYS_DIGFILT_enum 634 { 635 EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ 636 EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ 637 EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ 638 EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ 639 EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ 640 EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ 641 EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ 642 EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ 643 } EVSYS_DIGFILT_t; 644 645 /* Event Channel multiplexer input selection */ 646 typedef enum EVSYS_CHMUX_enum 647 { 648 EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ 649 EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ 650 EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ 651 EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ 652 EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ 653 EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ 654 EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ 655 EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ 656 EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ 657 EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ 658 EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ 659 EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ 660 EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ 661 EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ 662 EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ 663 EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ 664 EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ 665 EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ 666 EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ 667 EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ 668 EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ 669 EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ 670 EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ 671 EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ 672 EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ 673 EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ 674 EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ 675 EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ 676 EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ 677 EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ 678 EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ 679 EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ 680 EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ 681 EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ 682 EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ 683 EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ 684 EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ 685 EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ 686 EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ 687 EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ 688 EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ 689 EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ 690 EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ 691 EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ 692 EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ 693 EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ 694 EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ 695 EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ 696 EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ 697 EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ 698 EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ 699 EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ 700 EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ 701 EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ 702 EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ 703 EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ 704 EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ 705 EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ 706 EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ 707 EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ 708 EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ 709 EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ 710 EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ 711 EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ 712 EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ 713 EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ 714 EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ 715 EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ 716 EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ 717 EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ 718 EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ 719 EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ 720 EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ 721 EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ 722 EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ 723 EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ 724 EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ 725 EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ 726 EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ 727 EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ 728 EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ 729 EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ 730 EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ 731 EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ 732 EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ 733 EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ 734 EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ 735 EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ 736 EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ 737 EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ 738 EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ 739 EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ 740 EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ 741 EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ 742 EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ 743 EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ 744 EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ 745 EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ 746 EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ 747 } EVSYS_CHMUX_t; 748 749 750 /* 751 -------------------------------------------------------------------------- 752 NVM - Non Volatile Memory Controller 753 -------------------------------------------------------------------------- 754 */ 755 756 /* Non-volatile Memory Controller */ 757 typedef struct NVM_struct 758 { 759 register8_t ADDR0; /* Address Register 0 */ 760 register8_t ADDR1; /* Address Register 1 */ 761 register8_t ADDR2; /* Address Register 2 */ 762 register8_t reserved_0x03; 763 register8_t DATA0; /* Data Register 0 */ 764 register8_t DATA1; /* Data Register 1 */ 765 register8_t DATA2; /* Data Register 2 */ 766 register8_t reserved_0x07; 767 register8_t reserved_0x08; 768 register8_t reserved_0x09; 769 register8_t CMD; /* Command */ 770 register8_t CTRLA; /* Control Register A */ 771 register8_t CTRLB; /* Control Register B */ 772 register8_t INTCTRL; /* Interrupt Control */ 773 register8_t reserved_0x0E; 774 register8_t STATUS; /* Status */ 775 register8_t LOCKBITS; /* Lock Bits */ 776 } NVM_t; 777 778 /* NVM Command */ 779 typedef enum NVM_CMD_enum 780 { 781 NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ 782 NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ 783 NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ 784 NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ 785 NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ 786 NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ 787 NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ 788 NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ 789 NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ 790 NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ 791 NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ 792 NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ 793 NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ 794 NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ 795 NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ 796 NVM_CMD_ERASE_FLASH_PAGE_gc = (0x2B<<0), /* Erase Flash Page */ 797 NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ 798 NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ 799 NVM_CMD_WRITE_FLASH_PAGE_gc = (0x2E<<0), /* Write Flash Page */ 800 NVM_CMD_ERASE_WRITE_FLASH_PAGE_gc = (0x2F<<0), /* Erase-and-write Flash Page */ 801 NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ 802 NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ 803 NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ 804 NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ 805 NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ 806 NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ 807 NVM_CMD_APP_CRC_gc = (0x38<<0), /* Application section CRC */ 808 NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Boot Section CRC */ 809 NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Flash Range CRC */ 810 NVM_CMD_CHIP_ERASE_gc = (0x40<<0), /* Erase Chip */ 811 NVM_CMD_READ_NVM_gc = (0x43<<0), /* Read NVM */ 812 NVM_CMD_WRITE_FUSE_gc = (0x4C<<0), /* Write Fuse byte */ 813 NVM_CMD_ERASE_BOOT_gc = (0x68<<0), /* Erase Boot Section */ 814 NVM_CMD_FLASH_CRC_gc = (0x78<<0), /* Flash CRC */ 815 } NVM_CMD_t; 816 817 /* SPM ready interrupt level */ 818 typedef enum NVM_SPMLVL_enum 819 { 820 NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ 821 NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ 822 NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ 823 NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ 824 } NVM_SPMLVL_t; 825 826 /* EEPROM ready interrupt level */ 827 typedef enum NVM_EELVL_enum 828 { 829 NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ 830 NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ 831 NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ 832 NVM_EELVL_HI_gc = (0x03<<0), /* High level */ 833 } NVM_EELVL_t; 834 835 /* Boot lock bits - boot setcion */ 836 typedef enum NVM_BLBB_enum 837 { 838 NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ 839 NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ 840 NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ 841 NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ 842 } NVM_BLBB_t; 843 844 /* Boot lock bits - application section */ 845 typedef enum NVM_BLBA_enum 846 { 847 NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ 848 NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ 849 NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ 850 NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ 851 } NVM_BLBA_t; 852 853 /* Boot lock bits - application table section */ 854 typedef enum NVM_BLBAT_enum 855 { 856 NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ 857 NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ 858 NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ 859 NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ 860 } NVM_BLBAT_t; 861 862 /* Lock bits */ 863 typedef enum NVM_LB_enum 864 { 865 NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ 866 NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ 867 NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ 868 } NVM_LB_t; 869 870 871 /* 872 -------------------------------------------------------------------------- 873 ADC - Analog/Digital Converter 874 -------------------------------------------------------------------------- 875 */ 876 877 /* ADC Channel */ 878 typedef struct ADC_CH_struct 879 { 880 register8_t CTRL; /* Control Register */ 881 register8_t MUXCTRL; /* MUX Control */ 882 register8_t INTCTRL; /* Channel Interrupt Control Register */ 883 register8_t INTFLAGS; /* Interrupt Flags */ 884 _WORDREGISTER(RES); /* Channel Result */ 885 register8_t SCAN; /* Input Channel Scan */ 886 register8_t reserved_0x07; 887 } ADC_CH_t; 888 889 890 /* Analog-to-Digital Converter */ 891 typedef struct ADC_struct 892 { 893 register8_t CTRLA; /* Control Register A */ 894 register8_t CTRLB; /* Control Register B */ 895 register8_t REFCTRL; /* Reference Control */ 896 register8_t EVCTRL; /* Event Control */ 897 register8_t PRESCALER; /* Clock Prescaler */ 898 register8_t reserved_0x05; 899 register8_t INTFLAGS; /* Interrupt Flags */ 900 register8_t TEMP; /* Temporary Register */ 901 register8_t reserved_0x08; 902 register8_t reserved_0x09; 903 register8_t reserved_0x0A; 904 register8_t reserved_0x0B; 905 _WORDREGISTER(CAL); /* Calibration Value */ 906 register8_t reserved_0x0E; 907 register8_t reserved_0x0F; 908 _WORDREGISTER(CH0RES); /* Channel 0 Result */ 909 register8_t reserved_0x12; 910 register8_t reserved_0x13; 911 register8_t reserved_0x14; 912 register8_t reserved_0x15; 913 register8_t reserved_0x16; 914 register8_t reserved_0x17; 915 _WORDREGISTER(CMP); /* Compare Value */ 916 register8_t reserved_0x1A; 917 register8_t reserved_0x1B; 918 register8_t reserved_0x1C; 919 register8_t reserved_0x1D; 920 register8_t reserved_0x1E; 921 register8_t reserved_0x1F; 922 ADC_CH_t CH0; /* ADC Channel 0 */ 923 } ADC_t; 924 925 /* Current Limitation */ 926 typedef enum ADC_CURRLIMIT_enum 927 { 928 ADC_CURRLIMIT_NO_gc = (0x00<<5), /* No current limit, 300ksps max sampling rate */ 929 ADC_CURRLIMIT_LOW_gc = (0x01<<5), /* Low current limit, 250ksps max sampling rate */ 930 ADC_CURRLIMIT_MED_gc = (0x02<<5), /* Medium current limit, 150ksps max sampling rate */ 931 ADC_CURRLIMIT_HIGH_gc = (0x03<<5), /* High current limit, 50ksps max sampling rate */ 932 } ADC_CURRLIMIT_t; 933 934 /* Positive input multiplexer selection */ 935 typedef enum ADC_CH_MUXPOS_enum 936 { 937 ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ 938 ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ 939 ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ 940 ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ 941 ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ 942 ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ 943 ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ 944 ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ 945 ADC_CH_MUXPOS_PIN8_gc = (0x08<<3), /* Input pin 8 */ 946 ADC_CH_MUXPOS_PIN9_gc = (0x09<<3), /* Input pin 9 */ 947 ADC_CH_MUXPOS_PIN10_gc = (0x0A<<3), /* Input pin 10 */ 948 ADC_CH_MUXPOS_PIN11_gc = (0x0B<<3), /* Input pin 11 */ 949 } ADC_CH_MUXPOS_t; 950 951 /* Internal input multiplexer selections */ 952 typedef enum ADC_CH_MUXINT_enum 953 { 954 ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ 955 ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ 956 ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ 957 } ADC_CH_MUXINT_t; 958 959 /* Negative input multiplexer selection */ 960 typedef enum ADC_CH_MUXNEG_enum 961 { 962 ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ 963 ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ 964 ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ 965 ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ 966 ADC_CH_MUXNEG_PIN4_gc = (0x00<<0), /* Input pin 4 */ 967 ADC_CH_MUXNEG_PIN5_gc = (0x01<<0), /* Input pin 5 */ 968 ADC_CH_MUXNEG_PIN6_gc = (0x02<<0), /* Input pin 6 */ 969 ADC_CH_MUXNEG_PIN7_gc = (0x03<<0), /* Input pin 7 */ 970 } ADC_CH_MUXNEG_t; 971 972 /* Input mode */ 973 typedef enum ADC_CH_INPUTMODE_enum 974 { 975 ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ 976 ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ 977 ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ 978 ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ 979 } ADC_CH_INPUTMODE_t; 980 981 /* Gain factor */ 982 typedef enum ADC_CH_GAIN_enum 983 { 984 ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ 985 ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ 986 ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ 987 ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ 988 ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ 989 ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ 990 ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ 991 ADC_CH_GAIN_DIV2_gc = (0x07<<2), /* x/2 gain */ 992 } ADC_CH_GAIN_t; 993 994 /* Conversion result resolution */ 995 typedef enum ADC_RESOLUTION_enum 996 { 997 ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ 998 ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ 999 ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ 1000 } ADC_RESOLUTION_t; 1001 1002 /* Voltage reference selection */ 1003 typedef enum ADC_REFSEL_enum 1004 { 1005 ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ 1006 ADC_REFSEL_INTVCC_gc = (0x01<<4), /* Internal VCC / 1.6 */ 1007 ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ 1008 ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ 1009 ADC_REFSEL_INTVCC2_gc = (0x04<<4), /* Internal VCC / 2 */ 1010 } ADC_REFSEL_t; 1011 1012 /* Event channel input selection */ 1013 typedef enum ADC_EVSEL_enum 1014 { 1015 ADC_EVSEL_0_gc = (0x00<<3), /* Event Channel 0 */ 1016 ADC_EVSEL_1_gc = (0x01<<3), /* Event Channel 1 */ 1017 ADC_EVSEL_2_gc = (0x02<<3), /* Event Channel 2 */ 1018 ADC_EVSEL_3_gc = (0x03<<3), /* Event Channel 3 */ 1019 } ADC_EVSEL_t; 1020 1021 /* Event action selection */ 1022 typedef enum ADC_EVACT_enum 1023 { 1024 ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ 1025 ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ 1026 ADC_EVACT_SYNCSWEEP_gc = (0x06<<0), /* The ADC is flushed and restarted for accurate timing */ 1027 } ADC_EVACT_t; 1028 1029 /* Interupt mode */ 1030 typedef enum ADC_CH_INTMODE_enum 1031 { 1032 ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ 1033 ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ 1034 ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ 1035 } ADC_CH_INTMODE_t; 1036 1037 /* Interrupt level */ 1038 typedef enum ADC_CH_INTLVL_enum 1039 { 1040 ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ 1041 ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ 1042 ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ 1043 ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ 1044 } ADC_CH_INTLVL_t; 1045 1046 /* Clock prescaler */ 1047 typedef enum ADC_PRESCALER_enum 1048 { 1049 ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ 1050 ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ 1051 ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ 1052 ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ 1053 ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ 1054 ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ 1055 ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ 1056 ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ 1057 } ADC_PRESCALER_t; 1058 1059 1060 /* 1061 -------------------------------------------------------------------------- 1062 AC - Analog Comparator 1063 -------------------------------------------------------------------------- 1064 */ 1065 1066 /* Analog Comparator */ 1067 typedef struct AC_struct 1068 { 1069 register8_t AC0CTRL; /* Analog Comparator 0 Control */ 1070 register8_t AC1CTRL; /* Analog Comparator 1 Control */ 1071 register8_t AC0MUXCTRL; /* Analog Comparator 0 MUX Control */ 1072 register8_t AC1MUXCTRL; /* Analog Comparator 1 MUX Control */ 1073 register8_t CTRLA; /* Control Register A */ 1074 register8_t CTRLB; /* Control Register B */ 1075 register8_t WINCTRL; /* Window Mode Control */ 1076 register8_t STATUS; /* Status */ 1077 } AC_t; 1078 1079 /* Interrupt mode */ 1080 typedef enum AC_INTMODE_enum 1081 { 1082 AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ 1083 AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ 1084 AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ 1085 } AC_INTMODE_t; 1086 1087 /* Interrupt level */ 1088 typedef enum AC_INTLVL_enum 1089 { 1090 AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ 1091 AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ 1092 AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ 1093 AC_INTLVL_HI_gc = (0x03<<4), /* High level */ 1094 } AC_INTLVL_t; 1095 1096 /* Hysteresis mode selection */ 1097 typedef enum AC_HYSMODE_enum 1098 { 1099 AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ 1100 AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ 1101 AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ 1102 } AC_HYSMODE_t; 1103 1104 /* Positive input multiplexer selection */ 1105 typedef enum AC_MUXPOS_enum 1106 { 1107 AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ 1108 AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ 1109 AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ 1110 AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ 1111 AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ 1112 AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ 1113 AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ 1114 } AC_MUXPOS_t; 1115 1116 /* Negative input multiplexer selection */ 1117 typedef enum AC_MUXNEG_enum 1118 { 1119 AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ 1120 AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ 1121 AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ 1122 AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ 1123 AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ 1124 AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ 1125 AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ 1126 } AC_MUXNEG_t; 1127 1128 /* Windows interrupt mode */ 1129 typedef enum AC_WINTMODE_enum 1130 { 1131 AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ 1132 AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ 1133 AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ 1134 AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ 1135 } AC_WINTMODE_t; 1136 1137 /* Window interrupt level */ 1138 typedef enum AC_WINTLVL_enum 1139 { 1140 AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ 1141 AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ 1142 AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ 1143 AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ 1144 } AC_WINTLVL_t; 1145 1146 /* Window mode state */ 1147 typedef enum AC_WSTATE_enum 1148 { 1149 AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ 1150 AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ 1151 AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ 1152 } AC_WSTATE_t; 1153 1154 1155 /* 1156 -------------------------------------------------------------------------- 1157 RTC - Real-Time Counter 1158 -------------------------------------------------------------------------- 1159 */ 1160 1161 /* Real-Time Counter */ 1162 typedef struct RTC_struct 1163 { 1164 register8_t CTRL; /* Control Register */ 1165 register8_t STATUS; /* Status Register */ 1166 register8_t INTCTRL; /* Interrupt Control Register */ 1167 register8_t INTFLAGS; /* Interrupt Flags */ 1168 register8_t TEMP; /* Temporary register */ 1169 register8_t reserved_0x05; 1170 register8_t reserved_0x06; 1171 register8_t reserved_0x07; 1172 _WORDREGISTER(CNT); /* Count Register */ 1173 _WORDREGISTER(PER); /* Period Register */ 1174 _WORDREGISTER(COMP); /* Compare Register */ 1175 } RTC_t; 1176 1177 /* Prescaler Factor */ 1178 typedef enum RTC_PRESCALER_enum 1179 { 1180 RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ 1181 RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ 1182 RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ 1183 RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ 1184 RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ 1185 RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ 1186 RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ 1187 RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ 1188 } RTC_PRESCALER_t; 1189 1190 /* Compare Interrupt level */ 1191 typedef enum RTC_COMPINTLVL_enum 1192 { 1193 RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1194 RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1195 RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1196 RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ 1197 } RTC_COMPINTLVL_t; 1198 1199 /* Overflow Interrupt level */ 1200 typedef enum RTC_OVFINTLVL_enum 1201 { 1202 RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1203 RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1204 RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1205 RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ 1206 } RTC_OVFINTLVL_t; 1207 1208 1209 /* 1210 -------------------------------------------------------------------------- 1211 TWI - Two-Wire Interface 1212 -------------------------------------------------------------------------- 1213 */ 1214 1215 /* */ 1216 typedef struct TWI_MASTER_struct 1217 { 1218 register8_t CTRLA; /* Control Register A */ 1219 register8_t CTRLB; /* Control Register B */ 1220 register8_t CTRLC; /* Control Register C */ 1221 register8_t STATUS; /* Status Register */ 1222 register8_t BAUD; /* Baurd Rate Control Register */ 1223 register8_t ADDR; /* Address Register */ 1224 register8_t DATA; /* Data Register */ 1225 } TWI_MASTER_t; 1226 1227 1228 /* */ 1229 typedef struct TWI_SLAVE_struct 1230 { 1231 register8_t CTRLA; /* Control Register A */ 1232 register8_t CTRLB; /* Control Register B */ 1233 register8_t STATUS; /* Status Register */ 1234 register8_t ADDR; /* Address Register */ 1235 register8_t DATA; /* Data Register */ 1236 register8_t ADDRMASK; /* Address Mask Register */ 1237 } TWI_SLAVE_t; 1238 1239 1240 /* Two-Wire Interface */ 1241 typedef struct TWI_struct 1242 { 1243 register8_t CTRL; /* TWI Common Control Register */ 1244 TWI_MASTER_t MASTER; /* TWI master module */ 1245 TWI_SLAVE_t SLAVE; /* TWI slave module */ 1246 } TWI_t; 1247 1248 /* SDA Hold Time */ 1249 typedef enum TWI_SDAHOLD_enum 1250 { 1251 TWI_SDAHOLD_OFF_gc = (0x00<<1), /* SDA Hold Time off */ 1252 TWI_SDAHOLD_50NS_gc = (0x01<<1), /* SDA Hold Time 50 ns */ 1253 TWI_SDAHOLD_300NS_gc = (0x02<<1), /* SDA Hold Time 300 ns */ 1254 TWI_SDAHOLD_400NS_gc = (0x03<<1), /* SDA Hold Time 400 ns */ 1255 } TWI_SDAHOLD_t; 1256 1257 /* Master Interrupt Level */ 1258 typedef enum TWI_MASTER_INTLVL_enum 1259 { 1260 TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ 1261 TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ 1262 TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ 1263 TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ 1264 } TWI_MASTER_INTLVL_t; 1265 1266 /* Inactive Timeout */ 1267 typedef enum TWI_MASTER_TIMEOUT_enum 1268 { 1269 TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ 1270 TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ 1271 TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ 1272 TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ 1273 } TWI_MASTER_TIMEOUT_t; 1274 1275 /* Master Command */ 1276 typedef enum TWI_MASTER_CMD_enum 1277 { 1278 TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ 1279 TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ 1280 TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ 1281 TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ 1282 } TWI_MASTER_CMD_t; 1283 1284 /* Master Bus State */ 1285 typedef enum TWI_MASTER_BUSSTATE_enum 1286 { 1287 TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ 1288 TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ 1289 TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ 1290 TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ 1291 } TWI_MASTER_BUSSTATE_t; 1292 1293 /* Slave Interrupt Level */ 1294 typedef enum TWI_SLAVE_INTLVL_enum 1295 { 1296 TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ 1297 TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ 1298 TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ 1299 TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ 1300 } TWI_SLAVE_INTLVL_t; 1301 1302 /* Slave Command */ 1303 typedef enum TWI_SLAVE_CMD_enum 1304 { 1305 TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ 1306 TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ 1307 TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ 1308 } TWI_SLAVE_CMD_t; 1309 1310 1311 /* 1312 -------------------------------------------------------------------------- 1313 PORT - I/O Port Configuration 1314 -------------------------------------------------------------------------- 1315 */ 1316 1317 /* I/O Ports */ 1318 typedef struct PORT_struct 1319 { 1320 register8_t DIR; /* I/O Port Data Direction */ 1321 register8_t DIRSET; /* I/O Port Data Direction Set */ 1322 register8_t DIRCLR; /* I/O Port Data Direction Clear */ 1323 register8_t DIRTGL; /* I/O Port Data Direction Toggle */ 1324 register8_t OUT; /* I/O Port Output */ 1325 register8_t OUTSET; /* I/O Port Output Set */ 1326 register8_t OUTCLR; /* I/O Port Output Clear */ 1327 register8_t OUTTGL; /* I/O Port Output Toggle */ 1328 register8_t IN; /* I/O port Input */ 1329 register8_t INTCTRL; /* Interrupt Control Register */ 1330 register8_t INT0MASK; /* Port Interrupt 0 Mask */ 1331 register8_t INT1MASK; /* Port Interrupt 1 Mask */ 1332 register8_t INTFLAGS; /* Interrupt Flag Register */ 1333 register8_t reserved_0x0D; 1334 register8_t REMAP; /* I/O Port Pin Remap Register */ 1335 register8_t reserved_0x0F; 1336 register8_t PIN0CTRL; /* Pin 0 Control Register */ 1337 register8_t PIN1CTRL; /* Pin 1 Control Register */ 1338 register8_t PIN2CTRL; /* Pin 2 Control Register */ 1339 register8_t PIN3CTRL; /* Pin 3 Control Register */ 1340 register8_t PIN4CTRL; /* Pin 4 Control Register */ 1341 register8_t PIN5CTRL; /* Pin 5 Control Register */ 1342 register8_t PIN6CTRL; /* Pin 6 Control Register */ 1343 register8_t PIN7CTRL; /* Pin 7 Control Register */ 1344 } PORT_t; 1345 1346 /* Port Interrupt 0 Level */ 1347 typedef enum PORT_INT0LVL_enum 1348 { 1349 PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1350 PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ 1351 PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ 1352 PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ 1353 } PORT_INT0LVL_t; 1354 1355 /* Port Interrupt 1 Level */ 1356 typedef enum PORT_INT1LVL_enum 1357 { 1358 PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1359 PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ 1360 PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ 1361 PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ 1362 } PORT_INT1LVL_t; 1363 1364 /* Output/Pull Configuration */ 1365 typedef enum PORT_OPC_enum 1366 { 1367 PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ 1368 PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ 1369 PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ 1370 PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ 1371 PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ 1372 PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ 1373 PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ 1374 PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ 1375 } PORT_OPC_t; 1376 1377 /* Input/Sense Configuration */ 1378 typedef enum PORT_ISC_enum 1379 { 1380 PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ 1381 PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ 1382 PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ 1383 PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ 1384 PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ 1385 } PORT_ISC_t; 1386 1387 1388 /* 1389 -------------------------------------------------------------------------- 1390 TC - 16-bit Timer/Counter With PWM 1391 -------------------------------------------------------------------------- 1392 */ 1393 1394 /* 16-bit Timer/Counter 0 */ 1395 typedef struct TC0_struct 1396 { 1397 register8_t CTRLA; /* Control Register A */ 1398 register8_t CTRLB; /* Control Register B */ 1399 register8_t CTRLC; /* Control register C */ 1400 register8_t CTRLD; /* Control Register D */ 1401 register8_t CTRLE; /* Control Register E */ 1402 register8_t reserved_0x05; 1403 register8_t INTCTRLA; /* Interrupt Control Register A */ 1404 register8_t INTCTRLB; /* Interrupt Control Register B */ 1405 register8_t CTRLFCLR; /* Control Register F Clear */ 1406 register8_t CTRLFSET; /* Control Register F Set */ 1407 register8_t CTRLGCLR; /* Control Register G Clear */ 1408 register8_t CTRLGSET; /* Control Register G Set */ 1409 register8_t INTFLAGS; /* Interrupt Flag Register */ 1410 register8_t reserved_0x0D; 1411 register8_t reserved_0x0E; 1412 register8_t TEMP; /* Temporary Register For 16-bit Access */ 1413 register8_t reserved_0x10; 1414 register8_t reserved_0x11; 1415 register8_t reserved_0x12; 1416 register8_t reserved_0x13; 1417 register8_t reserved_0x14; 1418 register8_t reserved_0x15; 1419 register8_t reserved_0x16; 1420 register8_t reserved_0x17; 1421 register8_t reserved_0x18; 1422 register8_t reserved_0x19; 1423 register8_t reserved_0x1A; 1424 register8_t reserved_0x1B; 1425 register8_t reserved_0x1C; 1426 register8_t reserved_0x1D; 1427 register8_t reserved_0x1E; 1428 register8_t reserved_0x1F; 1429 _WORDREGISTER(CNT); /* Count */ 1430 register8_t reserved_0x22; 1431 register8_t reserved_0x23; 1432 register8_t reserved_0x24; 1433 register8_t reserved_0x25; 1434 _WORDREGISTER(PER); /* Period */ 1435 _WORDREGISTER(CCA); /* Compare or Capture A */ 1436 _WORDREGISTER(CCB); /* Compare or Capture B */ 1437 _WORDREGISTER(CCC); /* Compare or Capture C */ 1438 _WORDREGISTER(CCD); /* Compare or Capture D */ 1439 register8_t reserved_0x30; 1440 register8_t reserved_0x31; 1441 register8_t reserved_0x32; 1442 register8_t reserved_0x33; 1443 register8_t reserved_0x34; 1444 register8_t reserved_0x35; 1445 _WORDREGISTER(PERBUF); /* Period Buffer */ 1446 _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ 1447 _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ 1448 _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ 1449 _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ 1450 } TC0_t; 1451 1452 1453 /* 16-bit Timer/Counter 1 */ 1454 typedef struct TC1_struct 1455 { 1456 register8_t CTRLA; /* Control Register A */ 1457 register8_t CTRLB; /* Control Register B */ 1458 register8_t CTRLC; /* Control register C */ 1459 register8_t CTRLD; /* Control Register D */ 1460 register8_t CTRLE; /* Control Register E */ 1461 register8_t reserved_0x05; 1462 register8_t INTCTRLA; /* Interrupt Control Register A */ 1463 register8_t INTCTRLB; /* Interrupt Control Register B */ 1464 register8_t CTRLFCLR; /* Control Register F Clear */ 1465 register8_t CTRLFSET; /* Control Register F Set */ 1466 register8_t CTRLGCLR; /* Control Register G Clear */ 1467 register8_t CTRLGSET; /* Control Register G Set */ 1468 register8_t INTFLAGS; /* Interrupt Flag Register */ 1469 register8_t reserved_0x0D; 1470 register8_t reserved_0x0E; 1471 register8_t TEMP; /* Temporary Register For 16-bit Access */ 1472 register8_t reserved_0x10; 1473 register8_t reserved_0x11; 1474 register8_t reserved_0x12; 1475 register8_t reserved_0x13; 1476 register8_t reserved_0x14; 1477 register8_t reserved_0x15; 1478 register8_t reserved_0x16; 1479 register8_t reserved_0x17; 1480 register8_t reserved_0x18; 1481 register8_t reserved_0x19; 1482 register8_t reserved_0x1A; 1483 register8_t reserved_0x1B; 1484 register8_t reserved_0x1C; 1485 register8_t reserved_0x1D; 1486 register8_t reserved_0x1E; 1487 register8_t reserved_0x1F; 1488 _WORDREGISTER(CNT); /* Count */ 1489 register8_t reserved_0x22; 1490 register8_t reserved_0x23; 1491 register8_t reserved_0x24; 1492 register8_t reserved_0x25; 1493 _WORDREGISTER(PER); /* Period */ 1494 _WORDREGISTER(CCA); /* Compare or Capture A */ 1495 _WORDREGISTER(CCB); /* Compare or Capture B */ 1496 register8_t reserved_0x2C; 1497 register8_t reserved_0x2D; 1498 register8_t reserved_0x2E; 1499 register8_t reserved_0x2F; 1500 register8_t reserved_0x30; 1501 register8_t reserved_0x31; 1502 register8_t reserved_0x32; 1503 register8_t reserved_0x33; 1504 register8_t reserved_0x34; 1505 register8_t reserved_0x35; 1506 _WORDREGISTER(PERBUF); /* Period Buffer */ 1507 _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ 1508 _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ 1509 } TC1_t; 1510 1511 /* Clock Selection */ 1512 typedef enum TC_CLKSEL_enum 1513 { 1514 TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ 1515 TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ 1516 TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ 1517 TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ 1518 TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ 1519 TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ 1520 TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ 1521 TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ 1522 TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ 1523 TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ 1524 TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ 1525 TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ 1526 } TC_CLKSEL_t; 1527 1528 /* Waveform Generation Mode */ 1529 typedef enum TC_WGMODE_enum 1530 { 1531 TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ 1532 TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ 1533 TC_WGMODE_SINGLESLOPE_gc = (0x03<<0), /* Single Slope */ 1534 TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ 1535 TC_WGMODE_DSTOP_gc = (0x05<<0), /* Dual Slope, Update on TOP */ 1536 TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ 1537 TC_WGMODE_DSBOTH_gc = (0x06<<0), /* Dual Slope, Update on both TOP and BOTTOM */ 1538 TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on both TOP and BOTTOM */ 1539 TC_WGMODE_DSBOTTOM_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ 1540 TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ 1541 } TC_WGMODE_t; 1542 1543 /* Byte Mode */ 1544 typedef enum TC_BYTEM_enum 1545 { 1546 TC_BYTEM_NORMAL_gc = (0x00<<0), /* 16-bit mode */ 1547 TC_BYTEM_BYTEMODE_gc = (0x01<<0), /* Timer/Counter operating in byte mode only */ 1548 TC_BYTEM_SPLITMODE_gc = (0x02<<0), /* Timer/Counter split into two 8-bit Counters (TC2) */ 1549 } TC_BYTEM_t; 1550 1551 /* Event Action */ 1552 typedef enum TC_EVACT_enum 1553 { 1554 TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ 1555 TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ 1556 TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ 1557 TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ 1558 TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ 1559 TC_EVACT_FRQ_gc = (0x05<<5), /* Frequency Capture */ 1560 TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ 1561 } TC_EVACT_t; 1562 1563 /* Event Selection */ 1564 typedef enum TC_EVSEL_enum 1565 { 1566 TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ 1567 TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ 1568 TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ 1569 TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ 1570 TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ 1571 } TC_EVSEL_t; 1572 1573 /* Error Interrupt Level */ 1574 typedef enum TC_ERRINTLVL_enum 1575 { 1576 TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1577 TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1578 TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1579 TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ 1580 } TC_ERRINTLVL_t; 1581 1582 /* Overflow Interrupt Level */ 1583 typedef enum TC_OVFINTLVL_enum 1584 { 1585 TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1586 TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1587 TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1588 TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ 1589 } TC_OVFINTLVL_t; 1590 1591 /* Compare or Capture D Interrupt Level */ 1592 typedef enum TC_CCDINTLVL_enum 1593 { 1594 TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ 1595 TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ 1596 TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ 1597 TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ 1598 } TC_CCDINTLVL_t; 1599 1600 /* Compare or Capture C Interrupt Level */ 1601 typedef enum TC_CCCINTLVL_enum 1602 { 1603 TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ 1604 TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ 1605 TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ 1606 TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ 1607 } TC_CCCINTLVL_t; 1608 1609 /* Compare or Capture B Interrupt Level */ 1610 typedef enum TC_CCBINTLVL_enum 1611 { 1612 TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1613 TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1614 TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1615 TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ 1616 } TC_CCBINTLVL_t; 1617 1618 /* Compare or Capture A Interrupt Level */ 1619 typedef enum TC_CCAINTLVL_enum 1620 { 1621 TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1622 TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1623 TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1624 TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ 1625 } TC_CCAINTLVL_t; 1626 1627 /* Timer/Counter Command */ 1628 typedef enum TC_CMD_enum 1629 { 1630 TC_CMD_NONE_gc = (0x00<<2), /* No Command */ 1631 TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ 1632 TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ 1633 TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ 1634 } TC_CMD_t; 1635 1636 1637 /* 1638 -------------------------------------------------------------------------- 1639 TC2 - 16-bit Timer/Counter type 2 1640 -------------------------------------------------------------------------- 1641 */ 1642 1643 /* 16-bit Timer/Counter type 2 */ 1644 typedef struct TC2_struct 1645 { 1646 register8_t CTRLA; /* Control Register A */ 1647 register8_t CTRLB; /* Control Register B */ 1648 register8_t CTRLC; /* Control register C */ 1649 register8_t reserved_0x03; 1650 register8_t CTRLE; /* Control Register E */ 1651 register8_t reserved_0x05; 1652 register8_t INTCTRLA; /* Interrupt Control Register A */ 1653 register8_t INTCTRLB; /* Interrupt Control Register B */ 1654 register8_t reserved_0x08; 1655 register8_t CTRLF; /* Control Register F */ 1656 register8_t reserved_0x0A; 1657 register8_t reserved_0x0B; 1658 register8_t INTFLAGS; /* Interrupt Flag Register */ 1659 register8_t reserved_0x0D; 1660 register8_t reserved_0x0E; 1661 register8_t reserved_0x0F; 1662 register8_t reserved_0x10; 1663 register8_t reserved_0x11; 1664 register8_t reserved_0x12; 1665 register8_t reserved_0x13; 1666 register8_t reserved_0x14; 1667 register8_t reserved_0x15; 1668 register8_t reserved_0x16; 1669 register8_t reserved_0x17; 1670 register8_t reserved_0x18; 1671 register8_t reserved_0x19; 1672 register8_t reserved_0x1A; 1673 register8_t reserved_0x1B; 1674 register8_t reserved_0x1C; 1675 register8_t reserved_0x1D; 1676 register8_t reserved_0x1E; 1677 register8_t reserved_0x1F; 1678 register8_t LCNT; /* Low Byte Count */ 1679 register8_t HCNT; /* High Byte Count */ 1680 register8_t reserved_0x22; 1681 register8_t reserved_0x23; 1682 register8_t reserved_0x24; 1683 register8_t reserved_0x25; 1684 register8_t LPER; /* Low Byte Period */ 1685 register8_t HPER; /* High Byte Period */ 1686 register8_t LCMPA; /* Low Byte Compare A */ 1687 register8_t HCMPA; /* High Byte Compare A */ 1688 register8_t LCMPB; /* Low Byte Compare B */ 1689 register8_t HCMPB; /* High Byte Compare B */ 1690 register8_t LCMPC; /* Low Byte Compare C */ 1691 register8_t HCMPC; /* High Byte Compare C */ 1692 register8_t LCMPD; /* Low Byte Compare D */ 1693 register8_t HCMPD; /* High Byte Compare D */ 1694 } TC2_t; 1695 1696 /* Clock Selection */ 1697 typedef enum TC2_CLKSEL_enum 1698 { 1699 TC2_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ 1700 TC2_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ 1701 TC2_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ 1702 TC2_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ 1703 TC2_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ 1704 TC2_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ 1705 TC2_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ 1706 TC2_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ 1707 TC2_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ 1708 TC2_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ 1709 TC2_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ 1710 TC2_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ 1711 } TC2_CLKSEL_t; 1712 1713 /* Byte Mode */ 1714 typedef enum TC2_BYTEM_enum 1715 { 1716 TC2_BYTEM_NORMAL_gc = (0x00<<0), /* 16-bit mode */ 1717 TC2_BYTEM_BYTEMODE_gc = (0x01<<0), /* Timer/Counter operating in byte mode only (TC2) */ 1718 TC2_BYTEM_SPLITMODE_gc = (0x02<<0), /* Timer/Counter split into two 8-bit Counters */ 1719 } TC2_BYTEM_t; 1720 1721 /* High Byte Underflow Interrupt Level */ 1722 typedef enum TC2_HUNFINTLVL_enum 1723 { 1724 TC2_HUNFINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1725 TC2_HUNFINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1726 TC2_HUNFINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1727 TC2_HUNFINTLVL_HI_gc = (0x03<<2), /* High Level */ 1728 } TC2_HUNFINTLVL_t; 1729 1730 /* Low Byte Underflow Interrupt Level */ 1731 typedef enum TC2_LUNFINTLVL_enum 1732 { 1733 TC2_LUNFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1734 TC2_LUNFINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1735 TC2_LUNFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1736 TC2_LUNFINTLVL_HI_gc = (0x03<<0), /* High Level */ 1737 } TC2_LUNFINTLVL_t; 1738 1739 /* Low Byte Compare D Interrupt Level */ 1740 typedef enum TC2_LCMPDINTLVL_enum 1741 { 1742 TC2_LCMPDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ 1743 TC2_LCMPDINTLVL_LO_gc = (0x01<<6), /* Low Level */ 1744 TC2_LCMPDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ 1745 TC2_LCMPDINTLVL_HI_gc = (0x03<<6), /* High Level */ 1746 } TC2_LCMPDINTLVL_t; 1747 1748 /* Low Byte Compare C Interrupt Level */ 1749 typedef enum TC2_LCMPCINTLVL_enum 1750 { 1751 TC2_LCMPCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ 1752 TC2_LCMPCINTLVL_LO_gc = (0x01<<4), /* Low Level */ 1753 TC2_LCMPCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ 1754 TC2_LCMPCINTLVL_HI_gc = (0x03<<4), /* High Level */ 1755 } TC2_LCMPCINTLVL_t; 1756 1757 /* Low Byte Compare B Interrupt Level */ 1758 typedef enum TC2_LCMPBINTLVL_enum 1759 { 1760 TC2_LCMPBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1761 TC2_LCMPBINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1762 TC2_LCMPBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1763 TC2_LCMPBINTLVL_HI_gc = (0x03<<2), /* High Level */ 1764 } TC2_LCMPBINTLVL_t; 1765 1766 /* Low Byte Compare A Interrupt Level */ 1767 typedef enum TC2_LCMPAINTLVL_enum 1768 { 1769 TC2_LCMPAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1770 TC2_LCMPAINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1771 TC2_LCMPAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1772 TC2_LCMPAINTLVL_HI_gc = (0x03<<0), /* High Level */ 1773 } TC2_LCMPAINTLVL_t; 1774 1775 /* Timer/Counter Command */ 1776 typedef enum TC2_CMD_enum 1777 { 1778 TC2_CMD_NONE_gc = (0x00<<2), /* No Command */ 1779 TC2_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ 1780 TC2_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ 1781 } TC2_CMD_t; 1782 1783 /* Timer/Counter Command */ 1784 typedef enum TC2_CMDEN_enum 1785 { 1786 TC2_CMDEN_LOW_gc = (0x01<<0), /* Low Byte Timer/Counter */ 1787 TC2_CMDEN_HIGH_gc = (0x02<<0), /* High Byte Timer/Counter */ 1788 TC2_CMDEN_BOTH_gc = (0x03<<0), /* Both Low Byte and High Byte Timer/Counters */ 1789 } TC2_CMDEN_t; 1790 1791 1792 /* 1793 -------------------------------------------------------------------------- 1794 AWEX - Timer/Counter Advanced Waveform Extension 1795 -------------------------------------------------------------------------- 1796 */ 1797 1798 /* Advanced Waveform Extension */ 1799 typedef struct AWEX_struct 1800 { 1801 register8_t CTRL; /* Control Register */ 1802 register8_t reserved_0x01; 1803 register8_t FDEMASK; /* Fault Detection Event Mask */ 1804 register8_t FDCTRL; /* Fault Detection Control Register */ 1805 register8_t STATUS; /* Status Register */ 1806 register8_t STATUSSET; /* Status Set Register */ 1807 register8_t DTBOTH; /* Dead Time Both Sides */ 1808 register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ 1809 register8_t DTLS; /* Dead Time Low Side */ 1810 register8_t DTHS; /* Dead Time High Side */ 1811 register8_t DTLSBUF; /* Dead Time Low Side Buffer */ 1812 register8_t DTHSBUF; /* Dead Time High Side Buffer */ 1813 register8_t OUTOVEN; /* Output Override Enable */ 1814 } AWEX_t; 1815 1816 /* Fault Detect Action */ 1817 typedef enum AWEX_FDACT_enum 1818 { 1819 AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ 1820 AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ 1821 AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ 1822 } AWEX_FDACT_t; 1823 1824 1825 /* 1826 -------------------------------------------------------------------------- 1827 HIRES - Timer/Counter High-Resolution Extension 1828 -------------------------------------------------------------------------- 1829 */ 1830 1831 /* High-Resolution Extension */ 1832 typedef struct HIRES_struct 1833 { 1834 register8_t CTRLA; /* Control Register */ 1835 } HIRES_t; 1836 1837 /* High Resolution Enable */ 1838 typedef enum HIRES_HREN_enum 1839 { 1840 HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ 1841 HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ 1842 HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ 1843 HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ 1844 } HIRES_HREN_t; 1845 1846 1847 /* 1848 -------------------------------------------------------------------------- 1849 USART - Universal Asynchronous Receiver-Transmitter 1850 -------------------------------------------------------------------------- 1851 */ 1852 1853 /* Universal Synchronous/Asynchronous Receiver/Transmitter */ 1854 typedef struct USART_struct 1855 { 1856 register8_t DATA; /* Data Register */ 1857 register8_t STATUS; /* Status Register */ 1858 register8_t reserved_0x02; 1859 register8_t CTRLA; /* Control Register A */ 1860 register8_t CTRLB; /* Control Register B */ 1861 register8_t CTRLC; /* Control Register C */ 1862 register8_t BAUDCTRLA; /* Baud Rate Control Register A */ 1863 register8_t BAUDCTRLB; /* Baud Rate Control Register B */ 1864 } USART_t; 1865 1866 /* Receive Complete Interrupt level */ 1867 typedef enum USART_RXCINTLVL_enum 1868 { 1869 USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ 1870 USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ 1871 USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ 1872 USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ 1873 } USART_RXCINTLVL_t; 1874 1875 /* Transmit Complete Interrupt level */ 1876 typedef enum USART_TXCINTLVL_enum 1877 { 1878 USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ 1879 USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ 1880 USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ 1881 USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ 1882 } USART_TXCINTLVL_t; 1883 1884 /* Data Register Empty Interrupt level */ 1885 typedef enum USART_DREINTLVL_enum 1886 { 1887 USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1888 USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ 1889 USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1890 USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ 1891 } USART_DREINTLVL_t; 1892 1893 /* Character Size */ 1894 typedef enum USART_CHSIZE_enum 1895 { 1896 USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ 1897 USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ 1898 USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ 1899 USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ 1900 USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ 1901 } USART_CHSIZE_t; 1902 1903 /* Communication Mode */ 1904 typedef enum USART_CMODE_enum 1905 { 1906 USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ 1907 USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ 1908 USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ 1909 USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ 1910 } USART_CMODE_t; 1911 1912 /* Parity Mode */ 1913 typedef enum USART_PMODE_enum 1914 { 1915 USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ 1916 USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ 1917 USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ 1918 } USART_PMODE_t; 1919 1920 1921 /* 1922 -------------------------------------------------------------------------- 1923 SPI - Serial Peripheral Interface 1924 -------------------------------------------------------------------------- 1925 */ 1926 1927 /* Serial Peripheral Interface */ 1928 typedef struct SPI_struct 1929 { 1930 register8_t CTRL; /* Control Register */ 1931 register8_t INTCTRL; /* Interrupt Control Register */ 1932 register8_t STATUS; /* Status Register */ 1933 register8_t DATA; /* Data Register */ 1934 } SPI_t; 1935 1936 /* SPI Mode */ 1937 typedef enum SPI_MODE_enum 1938 { 1939 SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ 1940 SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ 1941 SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ 1942 SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ 1943 } SPI_MODE_t; 1944 1945 /* Prescaler setting */ 1946 typedef enum SPI_PRESCALER_enum 1947 { 1948 SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ 1949 SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ 1950 SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ 1951 SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ 1952 } SPI_PRESCALER_t; 1953 1954 /* Interrupt level */ 1955 typedef enum SPI_INTLVL_enum 1956 { 1957 SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ 1958 SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ 1959 SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ 1960 SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ 1961 } SPI_INTLVL_t; 1962 1963 1964 /* 1965 -------------------------------------------------------------------------- 1966 IRCOM - IR Communication Module 1967 -------------------------------------------------------------------------- 1968 */ 1969 1970 /* IR Communication Module */ 1971 typedef struct IRCOM_struct 1972 { 1973 register8_t CTRL; /* Control Register */ 1974 register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ 1975 register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ 1976 } IRCOM_t; 1977 1978 /* Event channel selection */ 1979 typedef enum IRDA_EVSEL_enum 1980 { 1981 IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ 1982 IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ 1983 IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ 1984 IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ 1985 IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ 1986 } IRDA_EVSEL_t; 1987 1988 1989 /* 1990 -------------------------------------------------------------------------- 1991 FUSE - Fuses and Lockbits 1992 -------------------------------------------------------------------------- 1993 */ 1994 1995 /* Fuses */ 1996 typedef struct NVM_FUSES_struct 1997 { 1998 register8_t reserved_0x00; 1999 register8_t FUSEBYTE1; /* Watchdog Configuration */ 2000 register8_t FUSEBYTE2; /* Reset Configuration */ 2001 register8_t reserved_0x03; 2002 register8_t FUSEBYTE4; /* Start-up Configuration */ 2003 register8_t FUSEBYTE5; /* EESAVE and BOD Level */ 2004 } NVM_FUSES_t; 2005 2006 /* Boot Loader Section Reset Vector */ 2007 typedef enum BOOTRST_enum 2008 { 2009 BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ 2010 BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ 2011 } BOOTRST_t; 2012 2013 /* Timer Oscillator pin location */ 2014 typedef enum TOSCSEL_enum 2015 { 2016 TOSCSEL_ALTERNATE_gc = (0x00<<5), /* TOSC1 / TOSC2 on separate pins */ 2017 TOSCSEL_XTAL_gc = (0x01<<5), /* TOSC1 / TOSC2 shared with XTAL1 / XTAL2 */ 2018 } TOSCSEL_t; 2019 2020 /* BOD operation */ 2021 typedef enum BOD_enum 2022 { 2023 BOD_SAMPLED_gc = (0x01<<0), /* BOD enabled in sampled mode */ 2024 BOD_CONTINUOUS_gc = (0x02<<0), /* BOD enabled continuously */ 2025 BOD_DISABLED_gc = (0x03<<0), /* BOD Disabled */ 2026 } BOD_t; 2027 2028 /* BOD operation */ 2029 typedef enum BODACT_enum 2030 { 2031 BODACT_SAMPLED_gc = (0x01<<4), /* BOD enabled in sampled mode */ 2032 BODACT_CONTINUOUS_gc = (0x02<<4), /* BOD enabled continuously */ 2033 BODACT_DISABLED_gc = (0x03<<4), /* BOD Disabled */ 2034 } BODACT_t; 2035 2036 /* Watchdog (Window) Timeout Period */ 2037 typedef enum WD_enum 2038 { 2039 WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ 2040 WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ 2041 WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ 2042 WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ 2043 WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ 2044 WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ 2045 WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ 2046 WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ 2047 WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ 2048 WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ 2049 WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ 2050 } WD_t; 2051 2052 /* Watchdog (Window) Timeout Period */ 2053 typedef enum WDP_enum 2054 { 2055 WDP_8CLK_gc = (0x00<<0), /* 8 cycles (8ms @ 3.3V) */ 2056 WDP_16CLK_gc = (0x01<<0), /* 16 cycles (16ms @ 3.3V) */ 2057 WDP_32CLK_gc = (0x02<<0), /* 32 cycles (32ms @ 3.3V) */ 2058 WDP_64CLK_gc = (0x03<<0), /* 64 cycles (64ms @ 3.3V) */ 2059 WDP_128CLK_gc = (0x04<<0), /* 128 cycles (0.125s @ 3.3V) */ 2060 WDP_256CLK_gc = (0x05<<0), /* 256 cycles (0.25s @ 3.3V) */ 2061 WDP_512CLK_gc = (0x06<<0), /* 512 cycles (0.5s @ 3.3V) */ 2062 WDP_1KCLK_gc = (0x07<<0), /* 1K cycles (1s @ 3.3V) */ 2063 WDP_2KCLK_gc = (0x08<<0), /* 2K cycles (2s @ 3.3V) */ 2064 WDP_4KCLK_gc = (0x09<<0), /* 4K cycles (4s @ 3.3V) */ 2065 WDP_8KCLK_gc = (0x0A<<0), /* 8K cycles (8s @ 3.3V) */ 2066 } WDP_t; 2067 2068 /* Start-up Time */ 2069 typedef enum SUT_enum 2070 { 2071 SUT_0MS_gc = (0x03<<2), /* 0 ms */ 2072 SUT_4MS_gc = (0x01<<2), /* 4 ms */ 2073 SUT_64MS_gc = (0x00<<2), /* 64 ms */ 2074 } SUT_t; 2075 2076 /* Brown Out Detection Voltage Level */ 2077 typedef enum BODLVL_enum 2078 { 2079 BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ 2080 BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ 2081 BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ 2082 BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ 2083 BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ 2084 BODLVL_2V6_gc = (0x02<<0), /* 2.6 V */ 2085 BODLVL_2V8_gc = (0x01<<0), /* 2.8 V */ 2086 BODLVL_3V0_gc = (0x00<<0), /* 3.0 V */ 2087 } BODLVL_t; 2088 2089 2090 /* 2091 -------------------------------------------------------------------------- 2092 LOCKBIT - Fuses and Lockbits 2093 -------------------------------------------------------------------------- 2094 */ 2095 2096 /* Lock Bits */ 2097 typedef struct NVM_LOCKBITS_struct 2098 { 2099 register8_t LOCKBITS; /* Lock Bits */ 2100 } NVM_LOCKBITS_t; 2101 2102 /* Boot lock bits - boot setcion */ 2103 typedef enum FUSE_BLBB_enum 2104 { 2105 FUSE_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ 2106 FUSE_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ 2107 FUSE_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ 2108 FUSE_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ 2109 } FUSE_BLBB_t; 2110 2111 /* Boot lock bits - application section */ 2112 typedef enum FUSE_BLBA_enum 2113 { 2114 FUSE_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ 2115 FUSE_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ 2116 FUSE_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ 2117 FUSE_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ 2118 } FUSE_BLBA_t; 2119 2120 /* Boot lock bits - application table section */ 2121 typedef enum FUSE_BLBAT_enum 2122 { 2123 FUSE_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ 2124 FUSE_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ 2125 FUSE_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ 2126 FUSE_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ 2127 } FUSE_BLBAT_t; 2128 2129 /* Lock bits */ 2130 typedef enum FUSE_LB_enum 2131 { 2132 FUSE_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ 2133 FUSE_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ 2134 FUSE_LB_NOLOCK_gc = (0x03<<0), /* No locks */ 2135 } FUSE_LB_t; 2136 2137 2138 /* 2139 -------------------------------------------------------------------------- 2140 SIGROW - Signature Row 2141 -------------------------------------------------------------------------- 2142 */ 2143 2144 /* Production Signatures */ 2145 typedef struct NVM_PROD_SIGNATURES_struct 2146 { 2147 register8_t RCOSC2M; /* RCOSC 2 MHz Calibration Value B */ 2148 register8_t RCOSC2MA; /* RCOSC 2 MHz Calibration Value A */ 2149 register8_t RCOSC32K; /* RCOSC 32.768 kHz Calibration Value */ 2150 register8_t RCOSC32M; /* RCOSC 32 MHz Calibration Value B */ 2151 register8_t RCOSC32MA; /* RCOSC 32 MHz Calibration Value A */ 2152 register8_t reserved_0x05; 2153 register8_t reserved_0x06; 2154 register8_t reserved_0x07; 2155 register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ 2156 register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ 2157 register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ 2158 register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ 2159 register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ 2160 register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ 2161 register8_t reserved_0x0E; 2162 register8_t reserved_0x0F; 2163 register8_t WAFNUM; /* Wafer Number */ 2164 register8_t reserved_0x11; 2165 register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ 2166 register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ 2167 register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ 2168 register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ 2169 register8_t reserved_0x16; 2170 register8_t reserved_0x17; 2171 register8_t reserved_0x18; 2172 register8_t reserved_0x19; 2173 register8_t reserved_0x1A; 2174 register8_t reserved_0x1B; 2175 register8_t reserved_0x1C; 2176 register8_t reserved_0x1D; 2177 register8_t reserved_0x1E; 2178 register8_t reserved_0x1F; 2179 register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ 2180 register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ 2181 register8_t reserved_0x22; 2182 register8_t reserved_0x23; 2183 register8_t reserved_0x24; 2184 register8_t reserved_0x25; 2185 register8_t reserved_0x26; 2186 register8_t reserved_0x27; 2187 register8_t reserved_0x28; 2188 register8_t reserved_0x29; 2189 register8_t reserved_0x2A; 2190 register8_t reserved_0x2B; 2191 register8_t reserved_0x2C; 2192 register8_t reserved_0x2D; 2193 register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ 2194 register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 1 */ 2195 register8_t reserved_0x30; 2196 register8_t reserved_0x31; 2197 register8_t reserved_0x32; 2198 register8_t reserved_0x33; 2199 register8_t reserved_0x34; 2200 register8_t reserved_0x35; 2201 register8_t reserved_0x36; 2202 register8_t reserved_0x37; 2203 register8_t reserved_0x38; 2204 register8_t reserved_0x39; 2205 register8_t reserved_0x3A; 2206 register8_t reserved_0x3B; 2207 register8_t reserved_0x3C; 2208 register8_t reserved_0x3D; 2209 register8_t reserved_0x3E; 2210 register8_t reserved_0x3F; 2211 } NVM_PROD_SIGNATURES_t; 2212 2213 /* 2214 ========================================================================== 2215 IO Module Instances. Mapped to memory. 2216 ========================================================================== 2217 */ 2218 2219 #define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port */ 2220 #define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port */ 2221 #define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port */ 2222 #define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port */ 2223 #define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ 2224 #define CLK (*(CLK_t *) 0x0040) /* Clock System */ 2225 #define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ 2226 #define OSC (*(OSC_t *) 0x0050) /* Oscillator */ 2227 #define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL */ 2228 #define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL */ 2229 #define PR (*(PR_t *) 0x0070) /* Power Reduction */ 2230 #define RST (*(RST_t *) 0x0078) /* Reset */ 2231 #define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ 2232 #define MCU (*(MCU_t *) 0x0090) /* MCU Control */ 2233 #define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Multi-level Interrupt Controller */ 2234 #define PORTCFG (*(PORTCFG_t *) 0x00B0) /* I/O port Configuration */ 2235 #define CRC (*(CRC_t *) 0x00D0) /* Cyclic Redundancy Checker */ 2236 #define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ 2237 #define NVM (*(NVM_t *) 0x01C0) /* Non-volatile Memory Controller */ 2238 #define ADCA (*(ADC_t *) 0x0200) /* Analog-to-Digital Converter */ 2239 #define ACA (*(AC_t *) 0x0380) /* Analog Comparator */ 2240 #define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ 2241 #define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface */ 2242 #define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface */ 2243 #define PORTA (*(PORT_t *) 0x0600) /* I/O Ports */ 2244 #define PORTB (*(PORT_t *) 0x0620) /* I/O Ports */ 2245 #define PORTC (*(PORT_t *) 0x0640) /* I/O Ports */ 2246 #define PORTD (*(PORT_t *) 0x0660) /* I/O Ports */ 2247 #define PORTE (*(PORT_t *) 0x0680) /* I/O Ports */ 2248 #define PORTR (*(PORT_t *) 0x07E0) /* I/O Ports */ 2249 #define TCC0 (*(TC0_t *) 0x0800) /* 16-bit Timer/Counter 0 */ 2250 #define TCC2 (*(TC2_t *) 0x0800) /* 16-bit Timer/Counter type 2 */ 2251 #define TCC1 (*(TC1_t *) 0x0840) /* 16-bit Timer/Counter 1 */ 2252 #define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension */ 2253 #define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension */ 2254 #define USARTC0 (*(USART_t *) 0x08A0) /* Universal Synchronous/Asynchronous Receiver/Transmitter */ 2255 #define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface */ 2256 #define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ 2257 #define TCD0 (*(TC0_t *) 0x0900) /* 16-bit Timer/Counter 0 */ 2258 #define TCD2 (*(TC2_t *) 0x0900) /* 16-bit Timer/Counter type 2 */ 2259 #define USARTD0 (*(USART_t *) 0x09A0) /* Universal Synchronous/Asynchronous Receiver/Transmitter */ 2260 #define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface */ 2261 #define TCE0 (*(TC0_t *) 0x0A00) /* 16-bit Timer/Counter 0 */ 2262 2263 2264 #endif /* !defined (__ASSEMBLER__) */ 2265 2266 2267 /* ========== Flattened fully qualified IO register names ========== */ 2268 2269 /* GPIO - General Purpose IO Registers */ 2270 #define GPIO_GPIOR0 _SFR_MEM8(0x0000) 2271 #define GPIO_GPIOR1 _SFR_MEM8(0x0001) 2272 #define GPIO_GPIOR2 _SFR_MEM8(0x0002) 2273 #define GPIO_GPIOR3 _SFR_MEM8(0x0003) 2274 2275 /* Deprecated */ 2276 #define GPIO_GPIO0 _SFR_MEM8(0x0000) 2277 #define GPIO_GPIO1 _SFR_MEM8(0x0001) 2278 #define GPIO_GPIO2 _SFR_MEM8(0x0002) 2279 #define GPIO_GPIO3 _SFR_MEM8(0x0003) 2280 2281 /* NVM_FUSES - Fuses */ 2282 #define FUSE_FUSEBYTE1 _SFR_MEM8(0x0001) 2283 #define FUSE_FUSEBYTE2 _SFR_MEM8(0x0002) 2284 #define FUSE_FUSEBYTE4 _SFR_MEM8(0x0004) 2285 #define FUSE_FUSEBYTE5 _SFR_MEM8(0x0005) 2286 2287 /* NVM_LOCKBITS - Lock Bits */ 2288 #define LOCKBIT_LOCKBITS _SFR_MEM8(0x0000) 2289 2290 /* NVM_PROD_SIGNATURES - Production Signatures */ 2291 #define PRODSIGNATURES_RCOSC2M _SFR_MEM8(0x0000) 2292 #define PRODSIGNATURES_RCOSC2MA _SFR_MEM8(0x0001) 2293 #define PRODSIGNATURES_RCOSC32K _SFR_MEM8(0x0002) 2294 #define PRODSIGNATURES_RCOSC32M _SFR_MEM8(0x0003) 2295 #define PRODSIGNATURES_RCOSC32MA _SFR_MEM8(0x0004) 2296 #define PRODSIGNATURES_LOTNUM0 _SFR_MEM8(0x0008) 2297 #define PRODSIGNATURES_LOTNUM1 _SFR_MEM8(0x0009) 2298 #define PRODSIGNATURES_LOTNUM2 _SFR_MEM8(0x000A) 2299 #define PRODSIGNATURES_LOTNUM3 _SFR_MEM8(0x000B) 2300 #define PRODSIGNATURES_LOTNUM4 _SFR_MEM8(0x000C) 2301 #define PRODSIGNATURES_LOTNUM5 _SFR_MEM8(0x000D) 2302 #define PRODSIGNATURES_WAFNUM _SFR_MEM8(0x0010) 2303 #define PRODSIGNATURES_COORDX0 _SFR_MEM8(0x0012) 2304 #define PRODSIGNATURES_COORDX1 _SFR_MEM8(0x0013) 2305 #define PRODSIGNATURES_COORDY0 _SFR_MEM8(0x0014) 2306 #define PRODSIGNATURES_COORDY1 _SFR_MEM8(0x0015) 2307 #define PRODSIGNATURES_ADCACAL0 _SFR_MEM8(0x0020) 2308 #define PRODSIGNATURES_ADCACAL1 _SFR_MEM8(0x0021) 2309 #define PRODSIGNATURES_TEMPSENSE0 _SFR_MEM8(0x002E) 2310 #define PRODSIGNATURES_TEMPSENSE1 _SFR_MEM8(0x002F) 2311 2312 /* VPORT - Virtual Port */ 2313 #define VPORT0_DIR _SFR_MEM8(0x0010) 2314 #define VPORT0_OUT _SFR_MEM8(0x0011) 2315 #define VPORT0_IN _SFR_MEM8(0x0012) 2316 #define VPORT0_INTFLAGS _SFR_MEM8(0x0013) 2317 2318 /* VPORT - Virtual Port */ 2319 #define VPORT1_DIR _SFR_MEM8(0x0014) 2320 #define VPORT1_OUT _SFR_MEM8(0x0015) 2321 #define VPORT1_IN _SFR_MEM8(0x0016) 2322 #define VPORT1_INTFLAGS _SFR_MEM8(0x0017) 2323 2324 /* VPORT - Virtual Port */ 2325 #define VPORT2_DIR _SFR_MEM8(0x0018) 2326 #define VPORT2_OUT _SFR_MEM8(0x0019) 2327 #define VPORT2_IN _SFR_MEM8(0x001A) 2328 #define VPORT2_INTFLAGS _SFR_MEM8(0x001B) 2329 2330 /* VPORT - Virtual Port */ 2331 #define VPORT3_DIR _SFR_MEM8(0x001C) 2332 #define VPORT3_OUT _SFR_MEM8(0x001D) 2333 #define VPORT3_IN _SFR_MEM8(0x001E) 2334 #define VPORT3_INTFLAGS _SFR_MEM8(0x001F) 2335 2336 /* OCD - On-Chip Debug System */ 2337 #define OCD_OCDR0 _SFR_MEM8(0x002E) 2338 #define OCD_OCDR1 _SFR_MEM8(0x002F) 2339 2340 /* CPU - CPU registers */ 2341 #define CPU_CCP _SFR_MEM8(0x0034) 2342 #define CPU_RAMPD _SFR_MEM8(0x0038) 2343 #define CPU_RAMPX _SFR_MEM8(0x0039) 2344 #define CPU_RAMPY _SFR_MEM8(0x003A) 2345 #define CPU_RAMPZ _SFR_MEM8(0x003B) 2346 #define CPU_EIND _SFR_MEM8(0x003C) 2347 #define CPU_SPL _SFR_MEM8(0x003D) 2348 #define CPU_SPH _SFR_MEM8(0x003E) 2349 #define CPU_SREG _SFR_MEM8(0x003F) 2350 2351 /* CLK - Clock System */ 2352 #define CLK_CTRL _SFR_MEM8(0x0040) 2353 #define CLK_PSCTRL _SFR_MEM8(0x0041) 2354 #define CLK_LOCK _SFR_MEM8(0x0042) 2355 #define CLK_RTCCTRL _SFR_MEM8(0x0043) 2356 2357 /* SLEEP - Sleep Controller */ 2358 #define SLEEP_CTRL _SFR_MEM8(0x0048) 2359 2360 /* OSC - Oscillator */ 2361 #define OSC_CTRL _SFR_MEM8(0x0050) 2362 #define OSC_STATUS _SFR_MEM8(0x0051) 2363 #define OSC_XOSCCTRL _SFR_MEM8(0x0052) 2364 #define OSC_XOSCFAIL _SFR_MEM8(0x0053) 2365 #define OSC_RC32KCAL _SFR_MEM8(0x0054) 2366 #define OSC_PLLCTRL _SFR_MEM8(0x0055) 2367 #define OSC_DFLLCTRL _SFR_MEM8(0x0056) 2368 2369 /* DFLL - DFLL */ 2370 #define DFLLRC32M_CTRL _SFR_MEM8(0x0060) 2371 #define DFLLRC32M_CALA _SFR_MEM8(0x0062) 2372 #define DFLLRC32M_CALB _SFR_MEM8(0x0063) 2373 #define DFLLRC32M_COMP0 _SFR_MEM8(0x0064) 2374 #define DFLLRC32M_COMP1 _SFR_MEM8(0x0065) 2375 #define DFLLRC32M_COMP2 _SFR_MEM8(0x0066) 2376 2377 /* DFLL - DFLL */ 2378 #define DFLLRC2M_CTRL _SFR_MEM8(0x0068) 2379 #define DFLLRC2M_CALA _SFR_MEM8(0x006A) 2380 #define DFLLRC2M_CALB _SFR_MEM8(0x006B) 2381 #define DFLLRC2M_COMP0 _SFR_MEM8(0x006C) 2382 #define DFLLRC2M_COMP1 _SFR_MEM8(0x006D) 2383 #define DFLLRC2M_COMP2 _SFR_MEM8(0x006E) 2384 2385 /* PR - Power Reduction */ 2386 #define PR_PRGEN _SFR_MEM8(0x0070) 2387 #define PR_PRPA _SFR_MEM8(0x0071) 2388 #define PR_PRPC _SFR_MEM8(0x0073) 2389 #define PR_PRPD _SFR_MEM8(0x0074) 2390 #define PR_PRPE _SFR_MEM8(0x0075) 2391 #define PR_PRPF _SFR_MEM8(0x0076) 2392 2393 /* RST - Reset */ 2394 #define RST_STATUS _SFR_MEM8(0x0078) 2395 #define RST_CTRL _SFR_MEM8(0x0079) 2396 2397 /* WDT - Watch-Dog Timer */ 2398 #define WDT_CTRL _SFR_MEM8(0x0080) 2399 #define WDT_WINCTRL _SFR_MEM8(0x0081) 2400 #define WDT_STATUS _SFR_MEM8(0x0082) 2401 2402 /* MCU - MCU Control */ 2403 #define MCU_DEVID0 _SFR_MEM8(0x0090) 2404 #define MCU_DEVID1 _SFR_MEM8(0x0091) 2405 #define MCU_DEVID2 _SFR_MEM8(0x0092) 2406 #define MCU_REVID _SFR_MEM8(0x0093) 2407 #define MCU_ANAINIT _SFR_MEM8(0x0097) 2408 #define MCU_EVSYSLOCK _SFR_MEM8(0x0098) 2409 #define MCU_AWEXLOCK _SFR_MEM8(0x0099) 2410 2411 /* PMIC - Programmable Multi-level Interrupt Controller */ 2412 #define PMIC_STATUS _SFR_MEM8(0x00A0) 2413 #define PMIC_INTPRI _SFR_MEM8(0x00A1) 2414 #define PMIC_CTRL _SFR_MEM8(0x00A2) 2415 2416 /* PORTCFG - I/O port Configuration */ 2417 #define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) 2418 #define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) 2419 #define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) 2420 #define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) 2421 #define PORTCFG_EVOUTSEL _SFR_MEM8(0x00B6) 2422 2423 /* CRC - Cyclic Redundancy Checker */ 2424 #define CRC_CTRL _SFR_MEM8(0x00D0) 2425 #define CRC_STATUS _SFR_MEM8(0x00D1) 2426 #define CRC_DATAIN _SFR_MEM8(0x00D3) 2427 #define CRC_CHECKSUM0 _SFR_MEM8(0x00D4) 2428 #define CRC_CHECKSUM1 _SFR_MEM8(0x00D5) 2429 #define CRC_CHECKSUM2 _SFR_MEM8(0x00D6) 2430 #define CRC_CHECKSUM3 _SFR_MEM8(0x00D7) 2431 2432 /* EVSYS - Event System */ 2433 #define EVSYS_CH0MUX _SFR_MEM8(0x0180) 2434 #define EVSYS_CH1MUX _SFR_MEM8(0x0181) 2435 #define EVSYS_CH2MUX _SFR_MEM8(0x0182) 2436 #define EVSYS_CH3MUX _SFR_MEM8(0x0183) 2437 #define EVSYS_CH0CTRL _SFR_MEM8(0x0188) 2438 #define EVSYS_CH1CTRL _SFR_MEM8(0x0189) 2439 #define EVSYS_CH2CTRL _SFR_MEM8(0x018A) 2440 #define EVSYS_CH3CTRL _SFR_MEM8(0x018B) 2441 #define EVSYS_STROBE _SFR_MEM8(0x0190) 2442 #define EVSYS_DATA _SFR_MEM8(0x0191) 2443 2444 /* NVM - Non-volatile Memory Controller */ 2445 #define NVM_ADDR0 _SFR_MEM8(0x01C0) 2446 #define NVM_ADDR1 _SFR_MEM8(0x01C1) 2447 #define NVM_ADDR2 _SFR_MEM8(0x01C2) 2448 #define NVM_DATA0 _SFR_MEM8(0x01C4) 2449 #define NVM_DATA1 _SFR_MEM8(0x01C5) 2450 #define NVM_DATA2 _SFR_MEM8(0x01C6) 2451 #define NVM_CMD _SFR_MEM8(0x01CA) 2452 #define NVM_CTRLA _SFR_MEM8(0x01CB) 2453 #define NVM_CTRLB _SFR_MEM8(0x01CC) 2454 #define NVM_INTCTRL _SFR_MEM8(0x01CD) 2455 #define NVM_STATUS _SFR_MEM8(0x01CF) 2456 #define NVM_LOCKBITS _SFR_MEM8(0x01D0) 2457 2458 /* ADC - Analog-to-Digital Converter */ 2459 #define ADCA_CTRLA _SFR_MEM8(0x0200) 2460 #define ADCA_CTRLB _SFR_MEM8(0x0201) 2461 #define ADCA_REFCTRL _SFR_MEM8(0x0202) 2462 #define ADCA_EVCTRL _SFR_MEM8(0x0203) 2463 #define ADCA_PRESCALER _SFR_MEM8(0x0204) 2464 #define ADCA_INTFLAGS _SFR_MEM8(0x0206) 2465 #define ADCA_TEMP _SFR_MEM8(0x0207) 2466 #define ADCA_CAL _SFR_MEM16(0x020C) 2467 #define ADCA_CH0RES _SFR_MEM16(0x0210) 2468 #define ADCA_CMP _SFR_MEM16(0x0218) 2469 #define ADCA_CH0_CTRL _SFR_MEM8(0x0220) 2470 #define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) 2471 #define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) 2472 #define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) 2473 #define ADCA_CH0_RES _SFR_MEM16(0x0224) 2474 #define ADCA_CH0_SCAN _SFR_MEM8(0x0226) 2475 2476 /* AC - Analog Comparator */ 2477 #define ACA_AC0CTRL _SFR_MEM8(0x0380) 2478 #define ACA_AC1CTRL _SFR_MEM8(0x0381) 2479 #define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) 2480 #define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) 2481 #define ACA_CTRLA _SFR_MEM8(0x0384) 2482 #define ACA_CTRLB _SFR_MEM8(0x0385) 2483 #define ACA_WINCTRL _SFR_MEM8(0x0386) 2484 #define ACA_STATUS _SFR_MEM8(0x0387) 2485 2486 /* RTC - Real-Time Counter */ 2487 #define RTC_CTRL _SFR_MEM8(0x0400) 2488 #define RTC_STATUS _SFR_MEM8(0x0401) 2489 #define RTC_INTCTRL _SFR_MEM8(0x0402) 2490 #define RTC_INTFLAGS _SFR_MEM8(0x0403) 2491 #define RTC_TEMP _SFR_MEM8(0x0404) 2492 #define RTC_CNT _SFR_MEM16(0x0408) 2493 #define RTC_PER _SFR_MEM16(0x040A) 2494 #define RTC_COMP _SFR_MEM16(0x040C) 2495 2496 /* TWI - Two-Wire Interface */ 2497 #define TWIC_CTRL _SFR_MEM8(0x0480) 2498 #define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) 2499 #define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) 2500 #define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) 2501 #define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) 2502 #define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) 2503 #define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) 2504 #define TWIC_MASTER_DATA _SFR_MEM8(0x0487) 2505 #define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) 2506 #define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) 2507 #define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) 2508 #define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) 2509 #define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) 2510 #define TWIC_SLAVE_ADDRMASK _SFR_MEM8(0x048D) 2511 2512 /* TWI - Two-Wire Interface */ 2513 #define TWIE_CTRL _SFR_MEM8(0x04A0) 2514 #define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) 2515 #define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) 2516 #define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) 2517 #define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) 2518 #define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) 2519 #define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) 2520 #define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) 2521 #define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) 2522 #define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) 2523 #define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) 2524 #define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) 2525 #define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) 2526 #define TWIE_SLAVE_ADDRMASK _SFR_MEM8(0x04AD) 2527 2528 /* PORT - I/O Ports */ 2529 #define PORTA_DIR _SFR_MEM8(0x0600) 2530 #define PORTA_DIRSET _SFR_MEM8(0x0601) 2531 #define PORTA_DIRCLR _SFR_MEM8(0x0602) 2532 #define PORTA_DIRTGL _SFR_MEM8(0x0603) 2533 #define PORTA_OUT _SFR_MEM8(0x0604) 2534 #define PORTA_OUTSET _SFR_MEM8(0x0605) 2535 #define PORTA_OUTCLR _SFR_MEM8(0x0606) 2536 #define PORTA_OUTTGL _SFR_MEM8(0x0607) 2537 #define PORTA_IN _SFR_MEM8(0x0608) 2538 #define PORTA_INTCTRL _SFR_MEM8(0x0609) 2539 #define PORTA_INT0MASK _SFR_MEM8(0x060A) 2540 #define PORTA_INT1MASK _SFR_MEM8(0x060B) 2541 #define PORTA_INTFLAGS _SFR_MEM8(0x060C) 2542 #define PORTA_REMAP _SFR_MEM8(0x060E) 2543 #define PORTA_PIN0CTRL _SFR_MEM8(0x0610) 2544 #define PORTA_PIN1CTRL _SFR_MEM8(0x0611) 2545 #define PORTA_PIN2CTRL _SFR_MEM8(0x0612) 2546 #define PORTA_PIN3CTRL _SFR_MEM8(0x0613) 2547 #define PORTA_PIN4CTRL _SFR_MEM8(0x0614) 2548 #define PORTA_PIN5CTRL _SFR_MEM8(0x0615) 2549 #define PORTA_PIN6CTRL _SFR_MEM8(0x0616) 2550 #define PORTA_PIN7CTRL _SFR_MEM8(0x0617) 2551 2552 /* PORT - I/O Ports */ 2553 #define PORTB_DIR _SFR_MEM8(0x0620) 2554 #define PORTB_DIRSET _SFR_MEM8(0x0621) 2555 #define PORTB_DIRCLR _SFR_MEM8(0x0622) 2556 #define PORTB_DIRTGL _SFR_MEM8(0x0623) 2557 #define PORTB_OUT _SFR_MEM8(0x0624) 2558 #define PORTB_OUTSET _SFR_MEM8(0x0625) 2559 #define PORTB_OUTCLR _SFR_MEM8(0x0626) 2560 #define PORTB_OUTTGL _SFR_MEM8(0x0627) 2561 #define PORTB_IN _SFR_MEM8(0x0628) 2562 #define PORTB_INTCTRL _SFR_MEM8(0x0629) 2563 #define PORTB_INT0MASK _SFR_MEM8(0x062A) 2564 #define PORTB_INT1MASK _SFR_MEM8(0x062B) 2565 #define PORTB_INTFLAGS _SFR_MEM8(0x062C) 2566 #define PORTB_REMAP _SFR_MEM8(0x062E) 2567 #define PORTB_PIN0CTRL _SFR_MEM8(0x0630) 2568 #define PORTB_PIN1CTRL _SFR_MEM8(0x0631) 2569 #define PORTB_PIN2CTRL _SFR_MEM8(0x0632) 2570 #define PORTB_PIN3CTRL _SFR_MEM8(0x0633) 2571 #define PORTB_PIN4CTRL _SFR_MEM8(0x0634) 2572 #define PORTB_PIN5CTRL _SFR_MEM8(0x0635) 2573 #define PORTB_PIN6CTRL _SFR_MEM8(0x0636) 2574 #define PORTB_PIN7CTRL _SFR_MEM8(0x0637) 2575 2576 /* PORT - I/O Ports */ 2577 #define PORTC_DIR _SFR_MEM8(0x0640) 2578 #define PORTC_DIRSET _SFR_MEM8(0x0641) 2579 #define PORTC_DIRCLR _SFR_MEM8(0x0642) 2580 #define PORTC_DIRTGL _SFR_MEM8(0x0643) 2581 #define PORTC_OUT _SFR_MEM8(0x0644) 2582 #define PORTC_OUTSET _SFR_MEM8(0x0645) 2583 #define PORTC_OUTCLR _SFR_MEM8(0x0646) 2584 #define PORTC_OUTTGL _SFR_MEM8(0x0647) 2585 #define PORTC_IN _SFR_MEM8(0x0648) 2586 #define PORTC_INTCTRL _SFR_MEM8(0x0649) 2587 #define PORTC_INT0MASK _SFR_MEM8(0x064A) 2588 #define PORTC_INT1MASK _SFR_MEM8(0x064B) 2589 #define PORTC_INTFLAGS _SFR_MEM8(0x064C) 2590 #define PORTC_REMAP _SFR_MEM8(0x064E) 2591 #define PORTC_PIN0CTRL _SFR_MEM8(0x0650) 2592 #define PORTC_PIN1CTRL _SFR_MEM8(0x0651) 2593 #define PORTC_PIN2CTRL _SFR_MEM8(0x0652) 2594 #define PORTC_PIN3CTRL _SFR_MEM8(0x0653) 2595 #define PORTC_PIN4CTRL _SFR_MEM8(0x0654) 2596 #define PORTC_PIN5CTRL _SFR_MEM8(0x0655) 2597 #define PORTC_PIN6CTRL _SFR_MEM8(0x0656) 2598 #define PORTC_PIN7CTRL _SFR_MEM8(0x0657) 2599 2600 /* PORT - I/O Ports */ 2601 #define PORTD_DIR _SFR_MEM8(0x0660) 2602 #define PORTD_DIRSET _SFR_MEM8(0x0661) 2603 #define PORTD_DIRCLR _SFR_MEM8(0x0662) 2604 #define PORTD_DIRTGL _SFR_MEM8(0x0663) 2605 #define PORTD_OUT _SFR_MEM8(0x0664) 2606 #define PORTD_OUTSET _SFR_MEM8(0x0665) 2607 #define PORTD_OUTCLR _SFR_MEM8(0x0666) 2608 #define PORTD_OUTTGL _SFR_MEM8(0x0667) 2609 #define PORTD_IN _SFR_MEM8(0x0668) 2610 #define PORTD_INTCTRL _SFR_MEM8(0x0669) 2611 #define PORTD_INT0MASK _SFR_MEM8(0x066A) 2612 #define PORTD_INT1MASK _SFR_MEM8(0x066B) 2613 #define PORTD_INTFLAGS _SFR_MEM8(0x066C) 2614 #define PORTD_REMAP _SFR_MEM8(0x066E) 2615 #define PORTD_PIN0CTRL _SFR_MEM8(0x0670) 2616 #define PORTD_PIN1CTRL _SFR_MEM8(0x0671) 2617 #define PORTD_PIN2CTRL _SFR_MEM8(0x0672) 2618 #define PORTD_PIN3CTRL _SFR_MEM8(0x0673) 2619 #define PORTD_PIN4CTRL _SFR_MEM8(0x0674) 2620 #define PORTD_PIN5CTRL _SFR_MEM8(0x0675) 2621 #define PORTD_PIN6CTRL _SFR_MEM8(0x0676) 2622 #define PORTD_PIN7CTRL _SFR_MEM8(0x0677) 2623 2624 /* PORT - I/O Ports */ 2625 #define PORTE_DIR _SFR_MEM8(0x0680) 2626 #define PORTE_DIRSET _SFR_MEM8(0x0681) 2627 #define PORTE_DIRCLR _SFR_MEM8(0x0682) 2628 #define PORTE_DIRTGL _SFR_MEM8(0x0683) 2629 #define PORTE_OUT _SFR_MEM8(0x0684) 2630 #define PORTE_OUTSET _SFR_MEM8(0x0685) 2631 #define PORTE_OUTCLR _SFR_MEM8(0x0686) 2632 #define PORTE_OUTTGL _SFR_MEM8(0x0687) 2633 #define PORTE_IN _SFR_MEM8(0x0688) 2634 #define PORTE_INTCTRL _SFR_MEM8(0x0689) 2635 #define PORTE_INT0MASK _SFR_MEM8(0x068A) 2636 #define PORTE_INT1MASK _SFR_MEM8(0x068B) 2637 #define PORTE_INTFLAGS _SFR_MEM8(0x068C) 2638 #define PORTE_REMAP _SFR_MEM8(0x068E) 2639 #define PORTE_PIN0CTRL _SFR_MEM8(0x0690) 2640 #define PORTE_PIN1CTRL _SFR_MEM8(0x0691) 2641 #define PORTE_PIN2CTRL _SFR_MEM8(0x0692) 2642 #define PORTE_PIN3CTRL _SFR_MEM8(0x0693) 2643 #define PORTE_PIN4CTRL _SFR_MEM8(0x0694) 2644 #define PORTE_PIN5CTRL _SFR_MEM8(0x0695) 2645 #define PORTE_PIN6CTRL _SFR_MEM8(0x0696) 2646 #define PORTE_PIN7CTRL _SFR_MEM8(0x0697) 2647 2648 /* PORT - I/O Ports */ 2649 #define PORTR_DIR _SFR_MEM8(0x07E0) 2650 #define PORTR_DIRSET _SFR_MEM8(0x07E1) 2651 #define PORTR_DIRCLR _SFR_MEM8(0x07E2) 2652 #define PORTR_DIRTGL _SFR_MEM8(0x07E3) 2653 #define PORTR_OUT _SFR_MEM8(0x07E4) 2654 #define PORTR_OUTSET _SFR_MEM8(0x07E5) 2655 #define PORTR_OUTCLR _SFR_MEM8(0x07E6) 2656 #define PORTR_OUTTGL _SFR_MEM8(0x07E7) 2657 #define PORTR_IN _SFR_MEM8(0x07E8) 2658 #define PORTR_INTCTRL _SFR_MEM8(0x07E9) 2659 #define PORTR_INT0MASK _SFR_MEM8(0x07EA) 2660 #define PORTR_INT1MASK _SFR_MEM8(0x07EB) 2661 #define PORTR_INTFLAGS _SFR_MEM8(0x07EC) 2662 #define PORTR_REMAP _SFR_MEM8(0x07EE) 2663 #define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) 2664 #define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) 2665 #define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) 2666 #define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) 2667 #define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) 2668 #define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) 2669 #define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) 2670 #define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) 2671 2672 /* TC0 - 16-bit Timer/Counter 0 */ 2673 #define TCC0_CTRLA _SFR_MEM8(0x0800) 2674 #define TCC0_CTRLB _SFR_MEM8(0x0801) 2675 #define TCC0_CTRLC _SFR_MEM8(0x0802) 2676 #define TCC0_CTRLD _SFR_MEM8(0x0803) 2677 #define TCC0_CTRLE _SFR_MEM8(0x0804) 2678 #define TCC0_INTCTRLA _SFR_MEM8(0x0806) 2679 #define TCC0_INTCTRLB _SFR_MEM8(0x0807) 2680 #define TCC0_CTRLFCLR _SFR_MEM8(0x0808) 2681 #define TCC0_CTRLFSET _SFR_MEM8(0x0809) 2682 #define TCC0_CTRLGCLR _SFR_MEM8(0x080A) 2683 #define TCC0_CTRLGSET _SFR_MEM8(0x080B) 2684 #define TCC0_INTFLAGS _SFR_MEM8(0x080C) 2685 #define TCC0_TEMP _SFR_MEM8(0x080F) 2686 #define TCC0_CNT _SFR_MEM16(0x0820) 2687 #define TCC0_PER _SFR_MEM16(0x0826) 2688 #define TCC0_CCA _SFR_MEM16(0x0828) 2689 #define TCC0_CCB _SFR_MEM16(0x082A) 2690 #define TCC0_CCC _SFR_MEM16(0x082C) 2691 #define TCC0_CCD _SFR_MEM16(0x082E) 2692 #define TCC0_PERBUF _SFR_MEM16(0x0836) 2693 #define TCC0_CCABUF _SFR_MEM16(0x0838) 2694 #define TCC0_CCBBUF _SFR_MEM16(0x083A) 2695 #define TCC0_CCCBUF _SFR_MEM16(0x083C) 2696 #define TCC0_CCDBUF _SFR_MEM16(0x083E) 2697 2698 /* TC2 - 16-bit Timer/Counter type 2 */ 2699 #define TCC2_CTRLA _SFR_MEM8(0x0800) 2700 #define TCC2_CTRLB _SFR_MEM8(0x0801) 2701 #define TCC2_CTRLC _SFR_MEM8(0x0802) 2702 #define TCC2_CTRLE _SFR_MEM8(0x0804) 2703 #define TCC2_INTCTRLA _SFR_MEM8(0x0806) 2704 #define TCC2_INTCTRLB _SFR_MEM8(0x0807) 2705 #define TCC2_CTRLF _SFR_MEM8(0x0809) 2706 #define TCC2_INTFLAGS _SFR_MEM8(0x080C) 2707 #define TCC2_LCNT _SFR_MEM8(0x0820) 2708 #define TCC2_HCNT _SFR_MEM8(0x0821) 2709 #define TCC2_LPER _SFR_MEM8(0x0826) 2710 #define TCC2_HPER _SFR_MEM8(0x0827) 2711 #define TCC2_LCMPA _SFR_MEM8(0x0828) 2712 #define TCC2_HCMPA _SFR_MEM8(0x0829) 2713 #define TCC2_LCMPB _SFR_MEM8(0x082A) 2714 #define TCC2_HCMPB _SFR_MEM8(0x082B) 2715 #define TCC2_LCMPC _SFR_MEM8(0x082C) 2716 #define TCC2_HCMPC _SFR_MEM8(0x082D) 2717 #define TCC2_LCMPD _SFR_MEM8(0x082E) 2718 #define TCC2_HCMPD _SFR_MEM8(0x082F) 2719 2720 /* TC1 - 16-bit Timer/Counter 1 */ 2721 #define TCC1_CTRLA _SFR_MEM8(0x0840) 2722 #define TCC1_CTRLB _SFR_MEM8(0x0841) 2723 #define TCC1_CTRLC _SFR_MEM8(0x0842) 2724 #define TCC1_CTRLD _SFR_MEM8(0x0843) 2725 #define TCC1_CTRLE _SFR_MEM8(0x0844) 2726 #define TCC1_INTCTRLA _SFR_MEM8(0x0846) 2727 #define TCC1_INTCTRLB _SFR_MEM8(0x0847) 2728 #define TCC1_CTRLFCLR _SFR_MEM8(0x0848) 2729 #define TCC1_CTRLFSET _SFR_MEM8(0x0849) 2730 #define TCC1_CTRLGCLR _SFR_MEM8(0x084A) 2731 #define TCC1_CTRLGSET _SFR_MEM8(0x084B) 2732 #define TCC1_INTFLAGS _SFR_MEM8(0x084C) 2733 #define TCC1_TEMP _SFR_MEM8(0x084F) 2734 #define TCC1_CNT _SFR_MEM16(0x0860) 2735 #define TCC1_PER _SFR_MEM16(0x0866) 2736 #define TCC1_CCA _SFR_MEM16(0x0868) 2737 #define TCC1_CCB _SFR_MEM16(0x086A) 2738 #define TCC1_PERBUF _SFR_MEM16(0x0876) 2739 #define TCC1_CCABUF _SFR_MEM16(0x0878) 2740 #define TCC1_CCBBUF _SFR_MEM16(0x087A) 2741 2742 /* AWEX - Advanced Waveform Extension */ 2743 #define AWEXC_CTRL _SFR_MEM8(0x0880) 2744 #define AWEXC_FDEMASK _SFR_MEM8(0x0882) 2745 #define AWEXC_FDCTRL _SFR_MEM8(0x0883) 2746 #define AWEXC_STATUS _SFR_MEM8(0x0884) 2747 #define AWEXC_STATUSSET _SFR_MEM8(0x0885) 2748 #define AWEXC_DTBOTH _SFR_MEM8(0x0886) 2749 #define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) 2750 #define AWEXC_DTLS _SFR_MEM8(0x0888) 2751 #define AWEXC_DTHS _SFR_MEM8(0x0889) 2752 #define AWEXC_DTLSBUF _SFR_MEM8(0x088A) 2753 #define AWEXC_DTHSBUF _SFR_MEM8(0x088B) 2754 #define AWEXC_OUTOVEN _SFR_MEM8(0x088C) 2755 2756 /* HIRES - High-Resolution Extension */ 2757 #define HIRESC_CTRLA _SFR_MEM8(0x0890) 2758 2759 /* USART - Universal Synchronous/Asynchronous Receiver/Transmitter */ 2760 #define USARTC0_DATA _SFR_MEM8(0x08A0) 2761 #define USARTC0_STATUS _SFR_MEM8(0x08A1) 2762 #define USARTC0_CTRLA _SFR_MEM8(0x08A3) 2763 #define USARTC0_CTRLB _SFR_MEM8(0x08A4) 2764 #define USARTC0_CTRLC _SFR_MEM8(0x08A5) 2765 #define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) 2766 #define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) 2767 2768 /* SPI - Serial Peripheral Interface */ 2769 #define SPIC_CTRL _SFR_MEM8(0x08C0) 2770 #define SPIC_INTCTRL _SFR_MEM8(0x08C1) 2771 #define SPIC_STATUS _SFR_MEM8(0x08C2) 2772 #define SPIC_DATA _SFR_MEM8(0x08C3) 2773 2774 /* IRCOM - IR Communication Module */ 2775 #define IRCOM_CTRL _SFR_MEM8(0x08F8) 2776 #define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) 2777 #define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) 2778 2779 /* TC0 - 16-bit Timer/Counter 0 */ 2780 #define TCD0_CTRLA _SFR_MEM8(0x0900) 2781 #define TCD0_CTRLB _SFR_MEM8(0x0901) 2782 #define TCD0_CTRLC _SFR_MEM8(0x0902) 2783 #define TCD0_CTRLD _SFR_MEM8(0x0903) 2784 #define TCD0_CTRLE _SFR_MEM8(0x0904) 2785 #define TCD0_INTCTRLA _SFR_MEM8(0x0906) 2786 #define TCD0_INTCTRLB _SFR_MEM8(0x0907) 2787 #define TCD0_CTRLFCLR _SFR_MEM8(0x0908) 2788 #define TCD0_CTRLFSET _SFR_MEM8(0x0909) 2789 #define TCD0_CTRLGCLR _SFR_MEM8(0x090A) 2790 #define TCD0_CTRLGSET _SFR_MEM8(0x090B) 2791 #define TCD0_INTFLAGS _SFR_MEM8(0x090C) 2792 #define TCD0_TEMP _SFR_MEM8(0x090F) 2793 #define TCD0_CNT _SFR_MEM16(0x0920) 2794 #define TCD0_PER _SFR_MEM16(0x0926) 2795 #define TCD0_CCA _SFR_MEM16(0x0928) 2796 #define TCD0_CCB _SFR_MEM16(0x092A) 2797 #define TCD0_CCC _SFR_MEM16(0x092C) 2798 #define TCD0_CCD _SFR_MEM16(0x092E) 2799 #define TCD0_PERBUF _SFR_MEM16(0x0936) 2800 #define TCD0_CCABUF _SFR_MEM16(0x0938) 2801 #define TCD0_CCBBUF _SFR_MEM16(0x093A) 2802 #define TCD0_CCCBUF _SFR_MEM16(0x093C) 2803 #define TCD0_CCDBUF _SFR_MEM16(0x093E) 2804 2805 /* TC2 - 16-bit Timer/Counter type 2 */ 2806 #define TCD2_CTRLA _SFR_MEM8(0x0900) 2807 #define TCD2_CTRLB _SFR_MEM8(0x0901) 2808 #define TCD2_CTRLC _SFR_MEM8(0x0902) 2809 #define TCD2_CTRLE _SFR_MEM8(0x0904) 2810 #define TCD2_INTCTRLA _SFR_MEM8(0x0906) 2811 #define TCD2_INTCTRLB _SFR_MEM8(0x0907) 2812 #define TCD2_CTRLF _SFR_MEM8(0x0909) 2813 #define TCD2_INTFLAGS _SFR_MEM8(0x090C) 2814 #define TCD2_LCNT _SFR_MEM8(0x0920) 2815 #define TCD2_HCNT _SFR_MEM8(0x0921) 2816 #define TCD2_LPER _SFR_MEM8(0x0926) 2817 #define TCD2_HPER _SFR_MEM8(0x0927) 2818 #define TCD2_LCMPA _SFR_MEM8(0x0928) 2819 #define TCD2_HCMPA _SFR_MEM8(0x0929) 2820 #define TCD2_LCMPB _SFR_MEM8(0x092A) 2821 #define TCD2_HCMPB _SFR_MEM8(0x092B) 2822 #define TCD2_LCMPC _SFR_MEM8(0x092C) 2823 #define TCD2_HCMPC _SFR_MEM8(0x092D) 2824 #define TCD2_LCMPD _SFR_MEM8(0x092E) 2825 #define TCD2_HCMPD _SFR_MEM8(0x092F) 2826 2827 /* USART - Universal Synchronous/Asynchronous Receiver/Transmitter */ 2828 #define USARTD0_DATA _SFR_MEM8(0x09A0) 2829 #define USARTD0_STATUS _SFR_MEM8(0x09A1) 2830 #define USARTD0_CTRLA _SFR_MEM8(0x09A3) 2831 #define USARTD0_CTRLB _SFR_MEM8(0x09A4) 2832 #define USARTD0_CTRLC _SFR_MEM8(0x09A5) 2833 #define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) 2834 #define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) 2835 2836 /* SPI - Serial Peripheral Interface */ 2837 #define SPID_CTRL _SFR_MEM8(0x09C0) 2838 #define SPID_INTCTRL _SFR_MEM8(0x09C1) 2839 #define SPID_STATUS _SFR_MEM8(0x09C2) 2840 #define SPID_DATA _SFR_MEM8(0x09C3) 2841 2842 /* TC0 - 16-bit Timer/Counter 0 */ 2843 #define TCE0_CTRLA _SFR_MEM8(0x0A00) 2844 #define TCE0_CTRLB _SFR_MEM8(0x0A01) 2845 #define TCE0_CTRLC _SFR_MEM8(0x0A02) 2846 #define TCE0_CTRLD _SFR_MEM8(0x0A03) 2847 #define TCE0_CTRLE _SFR_MEM8(0x0A04) 2848 #define TCE0_INTCTRLA _SFR_MEM8(0x0A06) 2849 #define TCE0_INTCTRLB _SFR_MEM8(0x0A07) 2850 #define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) 2851 #define TCE0_CTRLFSET _SFR_MEM8(0x0A09) 2852 #define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) 2853 #define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) 2854 #define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) 2855 #define TCE0_TEMP _SFR_MEM8(0x0A0F) 2856 #define TCE0_CNT _SFR_MEM16(0x0A20) 2857 #define TCE0_PER _SFR_MEM16(0x0A26) 2858 #define TCE0_CCA _SFR_MEM16(0x0A28) 2859 #define TCE0_CCB _SFR_MEM16(0x0A2A) 2860 #define TCE0_CCC _SFR_MEM16(0x0A2C) 2861 #define TCE0_CCD _SFR_MEM16(0x0A2E) 2862 #define TCE0_PERBUF _SFR_MEM16(0x0A36) 2863 #define TCE0_CCABUF _SFR_MEM16(0x0A38) 2864 #define TCE0_CCBBUF _SFR_MEM16(0x0A3A) 2865 #define TCE0_CCCBUF _SFR_MEM16(0x0A3C) 2866 #define TCE0_CCDBUF _SFR_MEM16(0x0A3E) 2867 2868 2869 2870 /*================== Bitfield Definitions ================== */ 2871 2872 /* VPORT - Virtual Ports */ 2873 /* VPORT.INTFLAGS bit masks and bit positions */ 2874 #define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ 2875 #define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ 2876 2877 #define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ 2878 #define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ 2879 2880 /* XOCD - On-Chip Debug System */ 2881 /* OCD.OCDR0 bit masks and bit positions */ 2882 #define OCD_OCDRD_gm 0xFF /* OCDR Dirty group mask. */ 2883 #define OCD_OCDRD_gp 0 /* OCDR Dirty group position. */ 2884 #define OCD_OCDRD0_bm (1<<0) /* OCDR Dirty bit 0 mask. */ 2885 #define OCD_OCDRD0_bp 0 /* OCDR Dirty bit 0 position. */ 2886 #define OCD_OCDRD1_bm (1<<1) /* OCDR Dirty bit 1 mask. */ 2887 #define OCD_OCDRD1_bp 1 /* OCDR Dirty bit 1 position. */ 2888 #define OCD_OCDRD2_bm (1<<2) /* OCDR Dirty bit 2 mask. */ 2889 #define OCD_OCDRD2_bp 2 /* OCDR Dirty bit 2 position. */ 2890 #define OCD_OCDRD3_bm (1<<3) /* OCDR Dirty bit 3 mask. */ 2891 #define OCD_OCDRD3_bp 3 /* OCDR Dirty bit 3 position. */ 2892 #define OCD_OCDRD4_bm (1<<4) /* OCDR Dirty bit 4 mask. */ 2893 #define OCD_OCDRD4_bp 4 /* OCDR Dirty bit 4 position. */ 2894 #define OCD_OCDRD5_bm (1<<5) /* OCDR Dirty bit 5 mask. */ 2895 #define OCD_OCDRD5_bp 5 /* OCDR Dirty bit 5 position. */ 2896 #define OCD_OCDRD6_bm (1<<6) /* OCDR Dirty bit 6 mask. */ 2897 #define OCD_OCDRD6_bp 6 /* OCDR Dirty bit 6 position. */ 2898 #define OCD_OCDRD7_bm (1<<7) /* OCDR Dirty bit 7 mask. */ 2899 #define OCD_OCDRD7_bp 7 /* OCDR Dirty bit 7 position. */ 2900 2901 /* OCD.OCDR1 bit masks and bit positions */ 2902 /* OCD_OCDRD Predefined. */ 2903 /* OCD_OCDRD Predefined. */ 2904 2905 /* CPU - CPU */ 2906 /* CPU.CCP bit masks and bit positions */ 2907 #define CPU_CCP_gm 0xFF /* CCP signature group mask. */ 2908 #define CPU_CCP_gp 0 /* CCP signature group position. */ 2909 #define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ 2910 #define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ 2911 #define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ 2912 #define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ 2913 #define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ 2914 #define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ 2915 #define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ 2916 #define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ 2917 #define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ 2918 #define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ 2919 #define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ 2920 #define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ 2921 #define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ 2922 #define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ 2923 #define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ 2924 #define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ 2925 2926 /* CPU.SREG bit masks and bit positions */ 2927 #define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ 2928 #define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ 2929 2930 #define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ 2931 #define CPU_T_bp 6 /* Transfer Bit bit position. */ 2932 2933 #define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ 2934 #define CPU_H_bp 5 /* Half Carry Flag bit position. */ 2935 2936 #define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ 2937 #define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ 2938 2939 #define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ 2940 #define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ 2941 2942 #define CPU_N_bm 0x04 /* Negative Flag bit mask. */ 2943 #define CPU_N_bp 2 /* Negative Flag bit position. */ 2944 2945 #define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ 2946 #define CPU_Z_bp 1 /* Zero Flag bit position. */ 2947 2948 #define CPU_C_bm 0x01 /* Carry Flag bit mask. */ 2949 #define CPU_C_bp 0 /* Carry Flag bit position. */ 2950 2951 /* CLK - Clock System */ 2952 /* CLK.CTRL bit masks and bit positions */ 2953 #define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ 2954 #define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ 2955 #define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ 2956 #define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ 2957 #define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ 2958 #define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ 2959 #define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ 2960 #define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ 2961 2962 /* CLK.PSCTRL bit masks and bit positions */ 2963 #define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ 2964 #define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ 2965 #define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ 2966 #define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ 2967 #define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ 2968 #define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ 2969 #define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ 2970 #define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ 2971 #define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ 2972 #define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ 2973 #define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ 2974 #define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ 2975 2976 #define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ 2977 #define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ 2978 #define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ 2979 #define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ 2980 #define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ 2981 #define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ 2982 2983 /* CLK.LOCK bit masks and bit positions */ 2984 #define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ 2985 #define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ 2986 2987 /* CLK.RTCCTRL bit masks and bit positions */ 2988 #define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ 2989 #define CLK_RTCSRC_gp 1 /* Clock Source group position. */ 2990 #define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ 2991 #define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ 2992 #define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ 2993 #define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ 2994 #define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ 2995 #define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ 2996 2997 #define CLK_RTCEN_bm 0x01 /* Clock Source Enable bit mask. */ 2998 #define CLK_RTCEN_bp 0 /* Clock Source Enable bit position. */ 2999 3000 /* PR.PRGEN bit masks and bit positions */ 3001 #define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ 3002 #define PR_RTC_bp 2 /* Real-time Counter bit position. */ 3003 3004 #define PR_EVSYS_bm 0x02 /* Event System bit mask. */ 3005 #define PR_EVSYS_bp 1 /* Event System bit position. */ 3006 3007 /* PR.PRPA bit masks and bit positions */ 3008 #define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ 3009 #define PR_ADC_bp 1 /* Port A ADC bit position. */ 3010 3011 #define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ 3012 #define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ 3013 3014 /* PR.PRPC bit masks and bit positions */ 3015 #define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ 3016 #define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ 3017 3018 #define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ 3019 #define PR_USART0_bp 4 /* Port C USART0 bit position. */ 3020 3021 #define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ 3022 #define PR_SPI_bp 3 /* Port C SPI bit position. */ 3023 3024 #define PR_HIRES_bm 0x04 /* Port C HIRES bit mask. */ 3025 #define PR_HIRES_bp 2 /* Port C HIRES bit position. */ 3026 3027 #define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ 3028 #define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ 3029 3030 #define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ 3031 #define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ 3032 3033 /* PR.PRPD bit masks and bit positions */ 3034 /* PR_USART0 Predefined. */ 3035 /* PR_USART0 Predefined. */ 3036 3037 /* PR_SPI Predefined. */ 3038 /* PR_SPI Predefined. */ 3039 3040 /* PR_TC0 Predefined. */ 3041 /* PR_TC0 Predefined. */ 3042 3043 /* PR.PRPE bit masks and bit positions */ 3044 /* PR_TWI Predefined. */ 3045 /* PR_TWI Predefined. */ 3046 3047 /* PR_USART0 Predefined. */ 3048 /* PR_USART0 Predefined. */ 3049 3050 /* PR_TC0 Predefined. */ 3051 /* PR_TC0 Predefined. */ 3052 3053 /* PR.PRPF bit masks and bit positions */ 3054 /* PR_USART0 Predefined. */ 3055 /* PR_USART0 Predefined. */ 3056 3057 /* PR_TC0 Predefined. */ 3058 /* PR_TC0 Predefined. */ 3059 3060 /* SLEEP - Sleep Controller */ 3061 /* SLEEP.CTRL bit masks and bit positions */ 3062 #define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ 3063 #define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ 3064 #define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ 3065 #define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ 3066 #define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ 3067 #define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ 3068 #define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ 3069 #define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ 3070 3071 #define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ 3072 #define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ 3073 3074 /* OSC - Oscillator */ 3075 /* OSC.CTRL bit masks and bit positions */ 3076 #define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ 3077 #define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ 3078 3079 #define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ 3080 #define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ 3081 3082 #define OSC_RC32KEN_bm 0x04 /* Internal 32.768 kHz RC Oscillator Enable bit mask. */ 3083 #define OSC_RC32KEN_bp 2 /* Internal 32.768 kHz RC Oscillator Enable bit position. */ 3084 3085 #define OSC_RC32MEN_bm 0x02 /* Internal 32 MHz RC Oscillator Enable bit mask. */ 3086 #define OSC_RC32MEN_bp 1 /* Internal 32 MHz RC Oscillator Enable bit position. */ 3087 3088 #define OSC_RC2MEN_bm 0x01 /* Internal 2 MHz RC Oscillator Enable bit mask. */ 3089 #define OSC_RC2MEN_bp 0 /* Internal 2 MHz RC Oscillator Enable bit position. */ 3090 3091 /* OSC.STATUS bit masks and bit positions */ 3092 #define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ 3093 #define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ 3094 3095 #define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ 3096 #define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ 3097 3098 #define OSC_RC32KRDY_bm 0x04 /* Internal 32.768 kHz RC Oscillator Ready bit mask. */ 3099 #define OSC_RC32KRDY_bp 2 /* Internal 32.768 kHz RC Oscillator Ready bit position. */ 3100 3101 #define OSC_RC32MRDY_bm 0x02 /* Internal 32 MHz RC Oscillator Ready bit mask. */ 3102 #define OSC_RC32MRDY_bp 1 /* Internal 32 MHz RC Oscillator Ready bit position. */ 3103 3104 #define OSC_RC2MRDY_bm 0x01 /* Internal 2 MHz RC Oscillator Ready bit mask. */ 3105 #define OSC_RC2MRDY_bp 0 /* Internal 2 MHz RC Oscillator Ready bit position. */ 3106 3107 /* OSC.XOSCCTRL bit masks and bit positions */ 3108 #define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ 3109 #define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ 3110 #define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ 3111 #define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ 3112 #define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ 3113 #define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ 3114 3115 #define OSC_X32KLPM_bm 0x20 /* 32.768 kHz XTAL OSC Low-power Mode bit mask. */ 3116 #define OSC_X32KLPM_bp 5 /* 32.768 kHz XTAL OSC Low-power Mode bit position. */ 3117 3118 #define OSC_XOSCPWR_bm 0x10 /* 16 MHz Crystal Oscillator High Power mode bit mask. */ 3119 #define OSC_XOSCPWR_bp 4 /* 16 MHz Crystal Oscillator High Power mode bit position. */ 3120 3121 #define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ 3122 #define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ 3123 #define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ 3124 #define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ 3125 #define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ 3126 #define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ 3127 #define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ 3128 #define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ 3129 #define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ 3130 #define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ 3131 3132 /* OSC.XOSCFAIL bit masks and bit positions */ 3133 #define OSC_PLLFDIF_bm 0x08 /* PLL Failure Detection Interrupt Flag bit mask. */ 3134 #define OSC_PLLFDIF_bp 3 /* PLL Failure Detection Interrupt Flag bit position. */ 3135 3136 #define OSC_PLLFDEN_bm 0x04 /* PLL Failure Detection Enable bit mask. */ 3137 #define OSC_PLLFDEN_bp 2 /* PLL Failure Detection Enable bit position. */ 3138 3139 #define OSC_XOSCFDIF_bm 0x02 /* XOSC Failure Detection Interrupt Flag bit mask. */ 3140 #define OSC_XOSCFDIF_bp 1 /* XOSC Failure Detection Interrupt Flag bit position. */ 3141 3142 #define OSC_XOSCFDEN_bm 0x01 /* XOSC Failure Detection Enable bit mask. */ 3143 #define OSC_XOSCFDEN_bp 0 /* XOSC Failure Detection Enable bit position. */ 3144 3145 /* OSC.PLLCTRL bit masks and bit positions */ 3146 #define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ 3147 #define OSC_PLLSRC_gp 6 /* Clock Source group position. */ 3148 #define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ 3149 #define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ 3150 #define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ 3151 #define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ 3152 3153 #define OSC_PLLDIV_bm 0x20 /* Divide by 2 bit mask. */ 3154 #define OSC_PLLDIV_bp 5 /* Divide by 2 bit position. */ 3155 3156 #define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ 3157 #define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ 3158 #define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ 3159 #define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ 3160 #define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ 3161 #define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ 3162 #define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ 3163 #define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ 3164 #define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ 3165 #define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ 3166 #define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ 3167 #define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ 3168 3169 /* OSC.DFLLCTRL bit masks and bit positions */ 3170 #define OSC_RC32MCREF_gm 0x06 /* 32 MHz DFLL Calibration Reference group mask. */ 3171 #define OSC_RC32MCREF_gp 1 /* 32 MHz DFLL Calibration Reference group position. */ 3172 #define OSC_RC32MCREF0_bm (1<<1) /* 32 MHz DFLL Calibration Reference bit 0 mask. */ 3173 #define OSC_RC32MCREF0_bp 1 /* 32 MHz DFLL Calibration Reference bit 0 position. */ 3174 #define OSC_RC32MCREF1_bm (1<<2) /* 32 MHz DFLL Calibration Reference bit 1 mask. */ 3175 #define OSC_RC32MCREF1_bp 2 /* 32 MHz DFLL Calibration Reference bit 1 position. */ 3176 3177 #define OSC_RC2MCREF_bm 0x01 /* 2 MHz DFLL Calibration Reference bit mask. */ 3178 #define OSC_RC2MCREF_bp 0 /* 2 MHz DFLL Calibration Reference bit position. */ 3179 3180 /* DFLL - DFLL */ 3181 /* DFLL.CTRL bit masks and bit positions */ 3182 #define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ 3183 #define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ 3184 3185 /* DFLL.CALA bit masks and bit positions */ 3186 #define DFLL_CALL_gm 0x7F /* DFLL Calibration Value A group mask. */ 3187 #define DFLL_CALL_gp 0 /* DFLL Calibration Value A group position. */ 3188 #define DFLL_CALL0_bm (1<<0) /* DFLL Calibration Value A bit 0 mask. */ 3189 #define DFLL_CALL0_bp 0 /* DFLL Calibration Value A bit 0 position. */ 3190 #define DFLL_CALL1_bm (1<<1) /* DFLL Calibration Value A bit 1 mask. */ 3191 #define DFLL_CALL1_bp 1 /* DFLL Calibration Value A bit 1 position. */ 3192 #define DFLL_CALL2_bm (1<<2) /* DFLL Calibration Value A bit 2 mask. */ 3193 #define DFLL_CALL2_bp 2 /* DFLL Calibration Value A bit 2 position. */ 3194 #define DFLL_CALL3_bm (1<<3) /* DFLL Calibration Value A bit 3 mask. */ 3195 #define DFLL_CALL3_bp 3 /* DFLL Calibration Value A bit 3 position. */ 3196 #define DFLL_CALL4_bm (1<<4) /* DFLL Calibration Value A bit 4 mask. */ 3197 #define DFLL_CALL4_bp 4 /* DFLL Calibration Value A bit 4 position. */ 3198 #define DFLL_CALL5_bm (1<<5) /* DFLL Calibration Value A bit 5 mask. */ 3199 #define DFLL_CALL5_bp 5 /* DFLL Calibration Value A bit 5 position. */ 3200 #define DFLL_CALL6_bm (1<<6) /* DFLL Calibration Value A bit 6 mask. */ 3201 #define DFLL_CALL6_bp 6 /* DFLL Calibration Value A bit 6 position. */ 3202 3203 /* DFLL.CALB bit masks and bit positions */ 3204 #define DFLL_CALH_gm 0x3F /* DFLL Calibration Value B group mask. */ 3205 #define DFLL_CALH_gp 0 /* DFLL Calibration Value B group position. */ 3206 #define DFLL_CALH0_bm (1<<0) /* DFLL Calibration Value B bit 0 mask. */ 3207 #define DFLL_CALH0_bp 0 /* DFLL Calibration Value B bit 0 position. */ 3208 #define DFLL_CALH1_bm (1<<1) /* DFLL Calibration Value B bit 1 mask. */ 3209 #define DFLL_CALH1_bp 1 /* DFLL Calibration Value B bit 1 position. */ 3210 #define DFLL_CALH2_bm (1<<2) /* DFLL Calibration Value B bit 2 mask. */ 3211 #define DFLL_CALH2_bp 2 /* DFLL Calibration Value B bit 2 position. */ 3212 #define DFLL_CALH3_bm (1<<3) /* DFLL Calibration Value B bit 3 mask. */ 3213 #define DFLL_CALH3_bp 3 /* DFLL Calibration Value B bit 3 position. */ 3214 #define DFLL_CALH4_bm (1<<4) /* DFLL Calibration Value B bit 4 mask. */ 3215 #define DFLL_CALH4_bp 4 /* DFLL Calibration Value B bit 4 position. */ 3216 #define DFLL_CALH5_bm (1<<5) /* DFLL Calibration Value B bit 5 mask. */ 3217 #define DFLL_CALH5_bp 5 /* DFLL Calibration Value B bit 5 position. */ 3218 3219 /* RST - Reset */ 3220 /* RST.STATUS bit masks and bit positions */ 3221 #define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ 3222 #define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ 3223 3224 #define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ 3225 #define RST_SRF_bp 5 /* Software Reset Flag bit position. */ 3226 3227 #define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ 3228 #define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ 3229 3230 #define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ 3231 #define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ 3232 3233 #define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ 3234 #define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ 3235 3236 #define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ 3237 #define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ 3238 3239 #define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ 3240 #define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ 3241 3242 /* RST.CTRL bit masks and bit positions */ 3243 #define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ 3244 #define RST_SWRST_bp 0 /* Software Reset bit position. */ 3245 3246 /* WDT - Watch-Dog Timer */ 3247 /* WDT.CTRL bit masks and bit positions */ 3248 #define WDT_PER_gm 0x3C /* Period group mask. */ 3249 #define WDT_PER_gp 2 /* Period group position. */ 3250 #define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ 3251 #define WDT_PER0_bp 2 /* Period bit 0 position. */ 3252 #define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ 3253 #define WDT_PER1_bp 3 /* Period bit 1 position. */ 3254 #define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ 3255 #define WDT_PER2_bp 4 /* Period bit 2 position. */ 3256 #define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ 3257 #define WDT_PER3_bp 5 /* Period bit 3 position. */ 3258 3259 #define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ 3260 #define WDT_ENABLE_bp 1 /* Enable bit position. */ 3261 3262 #define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ 3263 #define WDT_CEN_bp 0 /* Change Enable bit position. */ 3264 3265 /* WDT.WINCTRL bit masks and bit positions */ 3266 #define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ 3267 #define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ 3268 #define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ 3269 #define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ 3270 #define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ 3271 #define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ 3272 #define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ 3273 #define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ 3274 #define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ 3275 #define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ 3276 3277 #define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ 3278 #define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ 3279 3280 #define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ 3281 #define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ 3282 3283 /* WDT.STATUS bit masks and bit positions */ 3284 #define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ 3285 #define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ 3286 3287 /* MCU - MCU Control */ 3288 /* MCU.ANAINIT bit masks and bit positions */ 3289 #define MCU_STARTUPDLYA_gm 0x03 /* Analog startup delay Port A group mask. */ 3290 #define MCU_STARTUPDLYA_gp 0 /* Analog startup delay Port A group position. */ 3291 #define MCU_STARTUPDLYA0_bm (1<<0) /* Analog startup delay Port A bit 0 mask. */ 3292 #define MCU_STARTUPDLYA0_bp 0 /* Analog startup delay Port A bit 0 position. */ 3293 #define MCU_STARTUPDLYA1_bm (1<<1) /* Analog startup delay Port A bit 1 mask. */ 3294 #define MCU_STARTUPDLYA1_bp 1 /* Analog startup delay Port A bit 1 position. */ 3295 3296 /* MCU.EVSYSLOCK bit masks and bit positions */ 3297 #define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ 3298 #define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ 3299 3300 /* MCU.AWEXLOCK bit masks and bit positions */ 3301 #define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ 3302 #define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ 3303 3304 /* PMIC - Programmable Multi-level Interrupt Controller */ 3305 /* PMIC.STATUS bit masks and bit positions */ 3306 #define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ 3307 #define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ 3308 3309 #define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ 3310 #define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ 3311 3312 #define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ 3313 #define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ 3314 3315 #define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ 3316 #define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ 3317 3318 /* PMIC.INTPRI bit masks and bit positions */ 3319 #define PMIC_INTPRI_gm 0xFF /* Interrupt Priority group mask. */ 3320 #define PMIC_INTPRI_gp 0 /* Interrupt Priority group position. */ 3321 #define PMIC_INTPRI0_bm (1<<0) /* Interrupt Priority bit 0 mask. */ 3322 #define PMIC_INTPRI0_bp 0 /* Interrupt Priority bit 0 position. */ 3323 #define PMIC_INTPRI1_bm (1<<1) /* Interrupt Priority bit 1 mask. */ 3324 #define PMIC_INTPRI1_bp 1 /* Interrupt Priority bit 1 position. */ 3325 #define PMIC_INTPRI2_bm (1<<2) /* Interrupt Priority bit 2 mask. */ 3326 #define PMIC_INTPRI2_bp 2 /* Interrupt Priority bit 2 position. */ 3327 #define PMIC_INTPRI3_bm (1<<3) /* Interrupt Priority bit 3 mask. */ 3328 #define PMIC_INTPRI3_bp 3 /* Interrupt Priority bit 3 position. */ 3329 #define PMIC_INTPRI4_bm (1<<4) /* Interrupt Priority bit 4 mask. */ 3330 #define PMIC_INTPRI4_bp 4 /* Interrupt Priority bit 4 position. */ 3331 #define PMIC_INTPRI5_bm (1<<5) /* Interrupt Priority bit 5 mask. */ 3332 #define PMIC_INTPRI5_bp 5 /* Interrupt Priority bit 5 position. */ 3333 #define PMIC_INTPRI6_bm (1<<6) /* Interrupt Priority bit 6 mask. */ 3334 #define PMIC_INTPRI6_bp 6 /* Interrupt Priority bit 6 position. */ 3335 #define PMIC_INTPRI7_bm (1<<7) /* Interrupt Priority bit 7 mask. */ 3336 #define PMIC_INTPRI7_bp 7 /* Interrupt Priority bit 7 position. */ 3337 3338 /* PMIC.CTRL bit masks and bit positions */ 3339 #define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ 3340 #define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ 3341 3342 #define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ 3343 #define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ 3344 3345 #define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ 3346 #define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ 3347 3348 #define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ 3349 #define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ 3350 3351 #define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ 3352 #define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ 3353 3354 /* PORTCFG - Port Configuration */ 3355 /* PORTCFG.VPCTRLA bit masks and bit positions */ 3356 #define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ 3357 #define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ 3358 #define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ 3359 #define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ 3360 #define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ 3361 #define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ 3362 #define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ 3363 #define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ 3364 #define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ 3365 #define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ 3366 3367 #define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ 3368 #define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ 3369 #define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ 3370 #define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ 3371 #define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ 3372 #define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ 3373 #define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ 3374 #define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ 3375 #define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ 3376 #define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ 3377 3378 /* PORTCFG.VPCTRLB bit masks and bit positions */ 3379 #define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ 3380 #define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ 3381 #define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ 3382 #define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ 3383 #define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ 3384 #define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ 3385 #define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ 3386 #define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ 3387 #define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ 3388 #define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ 3389 3390 #define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ 3391 #define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ 3392 #define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ 3393 #define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ 3394 #define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ 3395 #define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ 3396 #define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ 3397 #define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ 3398 #define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ 3399 #define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ 3400 3401 /* PORTCFG.CLKEVOUT bit masks and bit positions */ 3402 #define PORTCFG_CLKOUT_gm 0x03 /* Peripheral Clock Output Port group mask. */ 3403 #define PORTCFG_CLKOUT_gp 0 /* Peripheral Clock Output Port group position. */ 3404 #define PORTCFG_CLKOUT0_bm (1<<0) /* Peripheral Clock Output Port bit 0 mask. */ 3405 #define PORTCFG_CLKOUT0_bp 0 /* Peripheral Clock Output Port bit 0 position. */ 3406 #define PORTCFG_CLKOUT1_bm (1<<1) /* Peripheral Clock Output Port bit 1 mask. */ 3407 #define PORTCFG_CLKOUT1_bp 1 /* Peripheral Clock Output Port bit 1 position. */ 3408 3409 #define PORTCFG_CLKOUTSEL_gm 0x0C /* Peripheral Clock Output Select group mask. */ 3410 #define PORTCFG_CLKOUTSEL_gp 2 /* Peripheral Clock Output Select group position. */ 3411 #define PORTCFG_CLKOUTSEL0_bm (1<<2) /* Peripheral Clock Output Select bit 0 mask. */ 3412 #define PORTCFG_CLKOUTSEL0_bp 2 /* Peripheral Clock Output Select bit 0 position. */ 3413 #define PORTCFG_CLKOUTSEL1_bm (1<<3) /* Peripheral Clock Output Select bit 1 mask. */ 3414 #define PORTCFG_CLKOUTSEL1_bp 3 /* Peripheral Clock Output Select bit 1 position. */ 3415 3416 #define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ 3417 #define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ 3418 #define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ 3419 #define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ 3420 #define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ 3421 #define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ 3422 3423 #define PORTCFG_RTCOUT_bm 0x40 /* RTC Clock Output bit mask. */ 3424 #define PORTCFG_RTCOUT_bp 6 /* RTC Clock Output bit position. */ 3425 3426 #define PORTCFG_CLKEVPIN_bm 0x80 /* Peripheral Clock and Event Output pin Select bit mask. */ 3427 #define PORTCFG_CLKEVPIN_bp 7 /* Peripheral Clock and Event Output pin Select bit position. */ 3428 3429 /* PORTCFG.EVOUTSEL bit masks and bit positions */ 3430 #define PORTCFG_EVOUTSEL_gm 0x07 /* Event Output Select group mask. */ 3431 #define PORTCFG_EVOUTSEL_gp 0 /* Event Output Select group position. */ 3432 #define PORTCFG_EVOUTSEL0_bm (1<<0) /* Event Output Select bit 0 mask. */ 3433 #define PORTCFG_EVOUTSEL0_bp 0 /* Event Output Select bit 0 position. */ 3434 #define PORTCFG_EVOUTSEL1_bm (1<<1) /* Event Output Select bit 1 mask. */ 3435 #define PORTCFG_EVOUTSEL1_bp 1 /* Event Output Select bit 1 position. */ 3436 #define PORTCFG_EVOUTSEL2_bm (1<<2) /* Event Output Select bit 2 mask. */ 3437 #define PORTCFG_EVOUTSEL2_bp 2 /* Event Output Select bit 2 position. */ 3438 3439 /* CRC - Cyclic Redundancy Checker */ 3440 /* CRC.CTRL bit masks and bit positions */ 3441 #define CRC_RESET_gm 0xC0 /* Reset group mask. */ 3442 #define CRC_RESET_gp 6 /* Reset group position. */ 3443 #define CRC_RESET0_bm (1<<6) /* Reset bit 0 mask. */ 3444 #define CRC_RESET0_bp 6 /* Reset bit 0 position. */ 3445 #define CRC_RESET1_bm (1<<7) /* Reset bit 1 mask. */ 3446 #define CRC_RESET1_bp 7 /* Reset bit 1 position. */ 3447 3448 #define CRC_CRC32_bm 0x20 /* CRC Mode bit mask. */ 3449 #define CRC_CRC32_bp 5 /* CRC Mode bit position. */ 3450 3451 #define CRC_SOURCE_gm 0x0F /* Input Source group mask. */ 3452 #define CRC_SOURCE_gp 0 /* Input Source group position. */ 3453 #define CRC_SOURCE0_bm (1<<0) /* Input Source bit 0 mask. */ 3454 #define CRC_SOURCE0_bp 0 /* Input Source bit 0 position. */ 3455 #define CRC_SOURCE1_bm (1<<1) /* Input Source bit 1 mask. */ 3456 #define CRC_SOURCE1_bp 1 /* Input Source bit 1 position. */ 3457 #define CRC_SOURCE2_bm (1<<2) /* Input Source bit 2 mask. */ 3458 #define CRC_SOURCE2_bp 2 /* Input Source bit 2 position. */ 3459 #define CRC_SOURCE3_bm (1<<3) /* Input Source bit 3 mask. */ 3460 #define CRC_SOURCE3_bp 3 /* Input Source bit 3 position. */ 3461 3462 /* CRC.STATUS bit masks and bit positions */ 3463 #define CRC_ZERO_bm 0x02 /* Zero detection bit mask. */ 3464 #define CRC_ZERO_bp 1 /* Zero detection bit position. */ 3465 3466 #define CRC_BUSY_bm 0x01 /* Busy bit mask. */ 3467 #define CRC_BUSY_bp 0 /* Busy bit position. */ 3468 3469 /* EVSYS - Event System */ 3470 /* EVSYS.CH0MUX bit masks and bit positions */ 3471 #define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ 3472 #define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ 3473 #define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ 3474 #define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ 3475 #define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ 3476 #define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ 3477 #define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ 3478 #define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ 3479 #define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ 3480 #define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ 3481 #define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ 3482 #define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ 3483 #define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ 3484 #define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ 3485 #define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ 3486 #define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ 3487 #define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ 3488 #define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ 3489 3490 /* EVSYS.CH1MUX bit masks and bit positions */ 3491 /* EVSYS_CHMUX Predefined. */ 3492 /* EVSYS_CHMUX Predefined. */ 3493 3494 /* EVSYS.CH2MUX bit masks and bit positions */ 3495 /* EVSYS_CHMUX Predefined. */ 3496 /* EVSYS_CHMUX Predefined. */ 3497 3498 /* EVSYS.CH3MUX bit masks and bit positions */ 3499 /* EVSYS_CHMUX Predefined. */ 3500 /* EVSYS_CHMUX Predefined. */ 3501 3502 /* EVSYS.CH0CTRL bit masks and bit positions */ 3503 #define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ 3504 #define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ 3505 #define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ 3506 #define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ 3507 #define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ 3508 #define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ 3509 3510 #define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ 3511 #define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ 3512 3513 #define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ 3514 #define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ 3515 3516 #define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ 3517 #define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ 3518 #define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ 3519 #define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ 3520 #define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ 3521 #define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ 3522 #define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ 3523 #define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ 3524 3525 /* EVSYS.CH1CTRL bit masks and bit positions */ 3526 /* EVSYS_DIGFILT Predefined. */ 3527 /* EVSYS_DIGFILT Predefined. */ 3528 3529 /* EVSYS.CH2CTRL bit masks and bit positions */ 3530 /* EVSYS_DIGFILT Predefined. */ 3531 /* EVSYS_DIGFILT Predefined. */ 3532 3533 /* EVSYS.CH3CTRL bit masks and bit positions */ 3534 /* EVSYS_DIGFILT Predefined. */ 3535 /* EVSYS_DIGFILT Predefined. */ 3536 3537 /* NVM - Non Volatile Memory Controller */ 3538 /* NVM.CMD bit masks and bit positions */ 3539 #define NVM_CMD_gm 0x7F /* Command group mask. */ 3540 #define NVM_CMD_gp 0 /* Command group position. */ 3541 #define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ 3542 #define NVM_CMD0_bp 0 /* Command bit 0 position. */ 3543 #define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ 3544 #define NVM_CMD1_bp 1 /* Command bit 1 position. */ 3545 #define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ 3546 #define NVM_CMD2_bp 2 /* Command bit 2 position. */ 3547 #define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ 3548 #define NVM_CMD3_bp 3 /* Command bit 3 position. */ 3549 #define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ 3550 #define NVM_CMD4_bp 4 /* Command bit 4 position. */ 3551 #define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ 3552 #define NVM_CMD5_bp 5 /* Command bit 5 position. */ 3553 #define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ 3554 #define NVM_CMD6_bp 6 /* Command bit 6 position. */ 3555 3556 /* NVM.CTRLA bit masks and bit positions */ 3557 #define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ 3558 #define NVM_CMDEX_bp 0 /* Command Execute bit position. */ 3559 3560 /* NVM.CTRLB bit masks and bit positions */ 3561 #define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ 3562 #define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ 3563 3564 #define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ 3565 #define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ 3566 3567 #define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ 3568 #define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ 3569 3570 #define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ 3571 #define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ 3572 3573 /* NVM.INTCTRL bit masks and bit positions */ 3574 #define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ 3575 #define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ 3576 #define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ 3577 #define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ 3578 #define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ 3579 #define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ 3580 3581 #define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ 3582 #define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ 3583 #define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ 3584 #define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ 3585 #define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ 3586 #define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ 3587 3588 /* NVM.STATUS bit masks and bit positions */ 3589 #define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ 3590 #define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ 3591 3592 #define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ 3593 #define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ 3594 3595 #define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ 3596 #define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ 3597 3598 #define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ 3599 #define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ 3600 3601 /* NVM.LOCKBITS bit masks and bit positions */ 3602 #define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ 3603 #define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ 3604 #define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ 3605 #define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ 3606 #define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ 3607 #define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ 3608 3609 #define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ 3610 #define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ 3611 #define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ 3612 #define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ 3613 #define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ 3614 #define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ 3615 3616 #define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ 3617 #define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ 3618 #define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ 3619 #define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ 3620 #define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ 3621 #define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ 3622 3623 #define NVM_LB_gm 0x03 /* Lock Bits group mask. */ 3624 #define NVM_LB_gp 0 /* Lock Bits group position. */ 3625 #define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ 3626 #define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ 3627 #define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ 3628 #define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ 3629 3630 /* ADC - Analog/Digital Converter */ 3631 /* ADC_CH.CTRL bit masks and bit positions */ 3632 #define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ 3633 #define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ 3634 3635 #define ADC_CH_GAIN_gm 0x1C /* Gain Factor group mask. */ 3636 #define ADC_CH_GAIN_gp 2 /* Gain Factor group position. */ 3637 #define ADC_CH_GAIN0_bm (1<<2) /* Gain Factor bit 0 mask. */ 3638 #define ADC_CH_GAIN0_bp 2 /* Gain Factor bit 0 position. */ 3639 #define ADC_CH_GAIN1_bm (1<<3) /* Gain Factor bit 1 mask. */ 3640 #define ADC_CH_GAIN1_bp 3 /* Gain Factor bit 1 position. */ 3641 #define ADC_CH_GAIN2_bm (1<<4) /* Gain Factor bit 2 mask. */ 3642 #define ADC_CH_GAIN2_bp 4 /* Gain Factor bit 2 position. */ 3643 3644 #define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ 3645 #define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ 3646 #define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ 3647 #define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ 3648 #define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ 3649 #define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ 3650 3651 /* ADC_CH.MUXCTRL bit masks and bit positions */ 3652 #define ADC_CH_MUXPOS_gm 0x78 /* MUX selection on Positive ADC input group mask. */ 3653 #define ADC_CH_MUXPOS_gp 3 /* MUX selection on Positive ADC input group position. */ 3654 #define ADC_CH_MUXPOS0_bm (1<<3) /* MUX selection on Positive ADC input bit 0 mask. */ 3655 #define ADC_CH_MUXPOS0_bp 3 /* MUX selection on Positive ADC input bit 0 position. */ 3656 #define ADC_CH_MUXPOS1_bm (1<<4) /* MUX selection on Positive ADC input bit 1 mask. */ 3657 #define ADC_CH_MUXPOS1_bp 4 /* MUX selection on Positive ADC input bit 1 position. */ 3658 #define ADC_CH_MUXPOS2_bm (1<<5) /* MUX selection on Positive ADC input bit 2 mask. */ 3659 #define ADC_CH_MUXPOS2_bp 5 /* MUX selection on Positive ADC input bit 2 position. */ 3660 #define ADC_CH_MUXPOS3_bm (1<<6) /* MUX selection on Positive ADC input bit 3 mask. */ 3661 #define ADC_CH_MUXPOS3_bp 6 /* MUX selection on Positive ADC input bit 3 position. */ 3662 3663 #define ADC_CH_MUXINT_gm 0x78 /* MUX selection on Internal ADC input group mask. */ 3664 #define ADC_CH_MUXINT_gp 3 /* MUX selection on Internal ADC input group position. */ 3665 #define ADC_CH_MUXINT0_bm (1<<3) /* MUX selection on Internal ADC input bit 0 mask. */ 3666 #define ADC_CH_MUXINT0_bp 3 /* MUX selection on Internal ADC input bit 0 position. */ 3667 #define ADC_CH_MUXINT1_bm (1<<4) /* MUX selection on Internal ADC input bit 1 mask. */ 3668 #define ADC_CH_MUXINT1_bp 4 /* MUX selection on Internal ADC input bit 1 position. */ 3669 #define ADC_CH_MUXINT2_bm (1<<5) /* MUX selection on Internal ADC input bit 2 mask. */ 3670 #define ADC_CH_MUXINT2_bp 5 /* MUX selection on Internal ADC input bit 2 position. */ 3671 #define ADC_CH_MUXINT3_bm (1<<6) /* MUX selection on Internal ADC input bit 3 mask. */ 3672 #define ADC_CH_MUXINT3_bp 6 /* MUX selection on Internal ADC input bit 3 position. */ 3673 3674 #define ADC_CH_MUXNEG_gm 0x03 /* MUX selection on Negative ADC input group mask. */ 3675 #define ADC_CH_MUXNEG_gp 0 /* MUX selection on Negative ADC input group position. */ 3676 #define ADC_CH_MUXNEG0_bm (1<<0) /* MUX selection on Negative ADC input bit 0 mask. */ 3677 #define ADC_CH_MUXNEG0_bp 0 /* MUX selection on Negative ADC input bit 0 position. */ 3678 #define ADC_CH_MUXNEG1_bm (1<<1) /* MUX selection on Negative ADC input bit 1 mask. */ 3679 #define ADC_CH_MUXNEG1_bp 1 /* MUX selection on Negative ADC input bit 1 position. */ 3680 3681 /* ADC_CH.INTCTRL bit masks and bit positions */ 3682 #define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ 3683 #define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ 3684 #define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ 3685 #define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ 3686 #define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ 3687 #define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ 3688 3689 #define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ 3690 #define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ 3691 #define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ 3692 #define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ 3693 #define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ 3694 #define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ 3695 3696 /* ADC_CH.INTFLAGS bit masks and bit positions */ 3697 #define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ 3698 #define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ 3699 3700 /* ADC_CH.SCAN bit masks and bit positions */ 3701 #define ADC_CH_OFFSET_gm 0xF0 /* Positive MUX setting offset group mask. */ 3702 #define ADC_CH_OFFSET_gp 4 /* Positive MUX setting offset group position. */ 3703 #define ADC_CH_OFFSET0_bm (1<<4) /* Positive MUX setting offset bit 0 mask. */ 3704 #define ADC_CH_OFFSET0_bp 4 /* Positive MUX setting offset bit 0 position. */ 3705 #define ADC_CH_OFFSET1_bm (1<<5) /* Positive MUX setting offset bit 1 mask. */ 3706 #define ADC_CH_OFFSET1_bp 5 /* Positive MUX setting offset bit 1 position. */ 3707 #define ADC_CH_OFFSET2_bm (1<<6) /* Positive MUX setting offset bit 2 mask. */ 3708 #define ADC_CH_OFFSET2_bp 6 /* Positive MUX setting offset bit 2 position. */ 3709 #define ADC_CH_OFFSET3_bm (1<<7) /* Positive MUX setting offset bit 3 mask. */ 3710 #define ADC_CH_OFFSET3_bp 7 /* Positive MUX setting offset bit 3 position. */ 3711 3712 #define ADC_CH_SCANNUM_gm 0x0F /* Number of Channels included in scan group mask. */ 3713 #define ADC_CH_SCANNUM_gp 0 /* Number of Channels included in scan group position. */ 3714 #define ADC_CH_SCANNUM0_bm (1<<0) /* Number of Channels included in scan bit 0 mask. */ 3715 #define ADC_CH_SCANNUM0_bp 0 /* Number of Channels included in scan bit 0 position. */ 3716 #define ADC_CH_SCANNUM1_bm (1<<1) /* Number of Channels included in scan bit 1 mask. */ 3717 #define ADC_CH_SCANNUM1_bp 1 /* Number of Channels included in scan bit 1 position. */ 3718 #define ADC_CH_SCANNUM2_bm (1<<2) /* Number of Channels included in scan bit 2 mask. */ 3719 #define ADC_CH_SCANNUM2_bp 2 /* Number of Channels included in scan bit 2 position. */ 3720 #define ADC_CH_SCANNUM3_bm (1<<3) /* Number of Channels included in scan bit 3 mask. */ 3721 #define ADC_CH_SCANNUM3_bp 3 /* Number of Channels included in scan bit 3 position. */ 3722 3723 /* ADC.CTRLA bit masks and bit positions */ 3724 #define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ 3725 #define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ 3726 3727 #define ADC_FLUSH_bm 0x02 /* ADC Flush bit mask. */ 3728 #define ADC_FLUSH_bp 1 /* ADC Flush bit position. */ 3729 3730 #define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ 3731 #define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ 3732 3733 /* ADC.CTRLB bit masks and bit positions */ 3734 #define ADC_CURRLIMIT_gm 0x60 /* Current Limitation group mask. */ 3735 #define ADC_CURRLIMIT_gp 5 /* Current Limitation group position. */ 3736 #define ADC_CURRLIMIT0_bm (1<<5) /* Current Limitation bit 0 mask. */ 3737 #define ADC_CURRLIMIT0_bp 5 /* Current Limitation bit 0 position. */ 3738 #define ADC_CURRLIMIT1_bm (1<<6) /* Current Limitation bit 1 mask. */ 3739 #define ADC_CURRLIMIT1_bp 6 /* Current Limitation bit 1 position. */ 3740 3741 #define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ 3742 #define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ 3743 3744 #define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ 3745 #define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ 3746 3747 #define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ 3748 #define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ 3749 #define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ 3750 #define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ 3751 #define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ 3752 #define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ 3753 3754 /* ADC.REFCTRL bit masks and bit positions */ 3755 #define ADC_REFSEL_gm 0x70 /* Reference Selection group mask. */ 3756 #define ADC_REFSEL_gp 4 /* Reference Selection group position. */ 3757 #define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ 3758 #define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ 3759 #define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ 3760 #define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ 3761 #define ADC_REFSEL2_bm (1<<6) /* Reference Selection bit 2 mask. */ 3762 #define ADC_REFSEL2_bp 6 /* Reference Selection bit 2 position. */ 3763 3764 #define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ 3765 #define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ 3766 3767 #define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ 3768 #define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ 3769 3770 /* ADC.EVCTRL bit masks and bit positions */ 3771 #define ADC_EVSEL_gm 0x18 /* Event Input Select group mask. */ 3772 #define ADC_EVSEL_gp 3 /* Event Input Select group position. */ 3773 #define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ 3774 #define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ 3775 #define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ 3776 #define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ 3777 3778 #define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ 3779 #define ADC_EVACT_gp 0 /* Event Action Select group position. */ 3780 #define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ 3781 #define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ 3782 #define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ 3783 #define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ 3784 #define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ 3785 #define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ 3786 3787 /* ADC.PRESCALER bit masks and bit positions */ 3788 #define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ 3789 #define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ 3790 #define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ 3791 #define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ 3792 #define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ 3793 #define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ 3794 #define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ 3795 #define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ 3796 3797 /* ADC.INTFLAGS bit masks and bit positions */ 3798 #define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ 3799 #define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ 3800 3801 /* AC - Analog Comparator */ 3802 /* AC.AC0CTRL bit masks and bit positions */ 3803 #define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ 3804 #define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ 3805 #define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ 3806 #define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ 3807 #define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ 3808 #define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ 3809 3810 #define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ 3811 #define AC_INTLVL_gp 4 /* Interrupt Level group position. */ 3812 #define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ 3813 #define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ 3814 #define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ 3815 #define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ 3816 3817 #define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ 3818 #define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ 3819 #define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ 3820 #define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ 3821 #define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ 3822 #define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ 3823 3824 #define AC_ENABLE_bm 0x01 /* Enable bit mask. */ 3825 #define AC_ENABLE_bp 0 /* Enable bit position. */ 3826 3827 /* AC.AC1CTRL bit masks and bit positions */ 3828 /* AC_INTMODE Predefined. */ 3829 /* AC_INTMODE Predefined. */ 3830 3831 /* AC_INTLVL Predefined. */ 3832 /* AC_INTLVL Predefined. */ 3833 3834 /* AC_HYSMODE Predefined. */ 3835 /* AC_HYSMODE Predefined. */ 3836 3837 /* AC_ENABLE Predefined. */ 3838 /* AC_ENABLE Predefined. */ 3839 3840 /* AC.AC0MUXCTRL bit masks and bit positions */ 3841 #define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ 3842 #define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ 3843 #define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ 3844 #define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ 3845 #define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ 3846 #define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ 3847 #define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ 3848 #define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ 3849 3850 #define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ 3851 #define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ 3852 #define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ 3853 #define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ 3854 #define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ 3855 #define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ 3856 #define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ 3857 #define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ 3858 3859 /* AC.AC1MUXCTRL bit masks and bit positions */ 3860 /* AC_MUXPOS Predefined. */ 3861 /* AC_MUXPOS Predefined. */ 3862 3863 /* AC_MUXNEG Predefined. */ 3864 /* AC_MUXNEG Predefined. */ 3865 3866 /* AC.CTRLA bit masks and bit positions */ 3867 #define AC_AC1OUT_bm 0x02 /* Analog Comparator 1 Output Enable bit mask. */ 3868 #define AC_AC1OUT_bp 1 /* Analog Comparator 1 Output Enable bit position. */ 3869 3870 #define AC_AC0OUT_bm 0x01 /* Analog Comparator 0 Output Enable bit mask. */ 3871 #define AC_AC0OUT_bp 0 /* Analog Comparator 0 Output Enable bit position. */ 3872 3873 /* AC.CTRLB bit masks and bit positions */ 3874 #define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ 3875 #define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ 3876 #define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ 3877 #define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ 3878 #define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ 3879 #define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ 3880 #define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ 3881 #define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ 3882 #define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ 3883 #define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ 3884 #define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ 3885 #define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ 3886 #define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ 3887 #define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ 3888 3889 /* AC.WINCTRL bit masks and bit positions */ 3890 #define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ 3891 #define AC_WEN_bp 4 /* Window Mode Enable bit position. */ 3892 3893 #define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ 3894 #define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ 3895 #define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ 3896 #define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ 3897 #define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ 3898 #define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ 3899 3900 #define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ 3901 #define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ 3902 #define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ 3903 #define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ 3904 #define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ 3905 #define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ 3906 3907 /* AC.STATUS bit masks and bit positions */ 3908 #define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ 3909 #define AC_WSTATE_gp 6 /* Window Mode State group position. */ 3910 #define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ 3911 #define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ 3912 #define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ 3913 #define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ 3914 3915 #define AC_AC1STATE_bm 0x20 /* Analog Comparator 1 State bit mask. */ 3916 #define AC_AC1STATE_bp 5 /* Analog Comparator 1 State bit position. */ 3917 3918 #define AC_AC0STATE_bm 0x10 /* Analog Comparator 0 State bit mask. */ 3919 #define AC_AC0STATE_bp 4 /* Analog Comparator 0 State bit position. */ 3920 3921 #define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ 3922 #define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ 3923 3924 #define AC_AC1IF_bm 0x02 /* Analog Comparator 1 Interrupt Flag bit mask. */ 3925 #define AC_AC1IF_bp 1 /* Analog Comparator 1 Interrupt Flag bit position. */ 3926 3927 #define AC_AC0IF_bm 0x01 /* Analog Comparator 0 Interrupt Flag bit mask. */ 3928 #define AC_AC0IF_bp 0 /* Analog Comparator 0 Interrupt Flag bit position. */ 3929 3930 /* RTC - Real-Time Counter */ 3931 /* RTC.CTRL bit masks and bit positions */ 3932 #define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ 3933 #define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ 3934 #define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ 3935 #define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ 3936 #define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ 3937 #define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ 3938 #define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ 3939 #define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ 3940 3941 /* RTC.STATUS bit masks and bit positions */ 3942 #define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ 3943 #define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ 3944 3945 /* RTC.INTCTRL bit masks and bit positions */ 3946 #define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ 3947 #define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ 3948 #define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ 3949 #define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ 3950 #define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ 3951 #define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ 3952 3953 #define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ 3954 #define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ 3955 #define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ 3956 #define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ 3957 #define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ 3958 #define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ 3959 3960 /* RTC.INTFLAGS bit masks and bit positions */ 3961 #define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ 3962 #define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ 3963 3964 #define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ 3965 #define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ 3966 3967 /* TWI - Two-Wire Interface */ 3968 /* TWI_MASTER.CTRLA bit masks and bit positions */ 3969 #define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ 3970 #define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ 3971 #define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ 3972 #define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ 3973 #define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ 3974 #define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ 3975 3976 #define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ 3977 #define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ 3978 3979 #define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ 3980 #define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ 3981 3982 #define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ 3983 #define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ 3984 3985 /* TWI_MASTER.CTRLB bit masks and bit positions */ 3986 #define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ 3987 #define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ 3988 #define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ 3989 #define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ 3990 #define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ 3991 #define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ 3992 3993 #define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ 3994 #define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ 3995 3996 #define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ 3997 #define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ 3998 3999 /* TWI_MASTER.CTRLC bit masks and bit positions */ 4000 #define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ 4001 #define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ 4002 4003 #define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ 4004 #define TWI_MASTER_CMD_gp 0 /* Command group position. */ 4005 #define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ 4006 #define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ 4007 #define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ 4008 #define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ 4009 4010 /* TWI_MASTER.STATUS bit masks and bit positions */ 4011 #define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ 4012 #define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ 4013 4014 #define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ 4015 #define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ 4016 4017 #define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ 4018 #define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ 4019 4020 #define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ 4021 #define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ 4022 4023 #define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ 4024 #define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ 4025 4026 #define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ 4027 #define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ 4028 4029 #define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ 4030 #define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ 4031 #define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ 4032 #define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ 4033 #define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ 4034 #define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ 4035 4036 /* TWI_SLAVE.CTRLA bit masks and bit positions */ 4037 #define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ 4038 #define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ 4039 #define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ 4040 #define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ 4041 #define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ 4042 #define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ 4043 4044 #define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ 4045 #define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ 4046 4047 #define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ 4048 #define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ 4049 4050 #define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ 4051 #define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ 4052 4053 #define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ 4054 #define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ 4055 4056 #define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ 4057 #define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ 4058 4059 #define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ 4060 #define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ 4061 4062 /* TWI_SLAVE.CTRLB bit masks and bit positions */ 4063 #define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ 4064 #define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ 4065 4066 #define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ 4067 #define TWI_SLAVE_CMD_gp 0 /* Command group position. */ 4068 #define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ 4069 #define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ 4070 #define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ 4071 #define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ 4072 4073 /* TWI_SLAVE.STATUS bit masks and bit positions */ 4074 #define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ 4075 #define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ 4076 4077 #define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ 4078 #define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ 4079 4080 #define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ 4081 #define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ 4082 4083 #define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ 4084 #define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ 4085 4086 #define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ 4087 #define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ 4088 4089 #define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ 4090 #define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ 4091 4092 #define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ 4093 #define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ 4094 4095 #define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ 4096 #define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ 4097 4098 /* TWI_SLAVE.ADDRMASK bit masks and bit positions */ 4099 #define TWI_SLAVE_ADDRMASK_gm 0xFE /* Address Mask group mask. */ 4100 #define TWI_SLAVE_ADDRMASK_gp 1 /* Address Mask group position. */ 4101 #define TWI_SLAVE_ADDRMASK0_bm (1<<1) /* Address Mask bit 0 mask. */ 4102 #define TWI_SLAVE_ADDRMASK0_bp 1 /* Address Mask bit 0 position. */ 4103 #define TWI_SLAVE_ADDRMASK1_bm (1<<2) /* Address Mask bit 1 mask. */ 4104 #define TWI_SLAVE_ADDRMASK1_bp 2 /* Address Mask bit 1 position. */ 4105 #define TWI_SLAVE_ADDRMASK2_bm (1<<3) /* Address Mask bit 2 mask. */ 4106 #define TWI_SLAVE_ADDRMASK2_bp 3 /* Address Mask bit 2 position. */ 4107 #define TWI_SLAVE_ADDRMASK3_bm (1<<4) /* Address Mask bit 3 mask. */ 4108 #define TWI_SLAVE_ADDRMASK3_bp 4 /* Address Mask bit 3 position. */ 4109 #define TWI_SLAVE_ADDRMASK4_bm (1<<5) /* Address Mask bit 4 mask. */ 4110 #define TWI_SLAVE_ADDRMASK4_bp 5 /* Address Mask bit 4 position. */ 4111 #define TWI_SLAVE_ADDRMASK5_bm (1<<6) /* Address Mask bit 5 mask. */ 4112 #define TWI_SLAVE_ADDRMASK5_bp 6 /* Address Mask bit 5 position. */ 4113 #define TWI_SLAVE_ADDRMASK6_bm (1<<7) /* Address Mask bit 6 mask. */ 4114 #define TWI_SLAVE_ADDRMASK6_bp 7 /* Address Mask bit 6 position. */ 4115 4116 #define TWI_SLAVE_ADDREN_bm 0x01 /* Address Enable bit mask. */ 4117 #define TWI_SLAVE_ADDREN_bp 0 /* Address Enable bit position. */ 4118 4119 /* TWI.CTRL bit masks and bit positions */ 4120 #define TWI_SDAHOLD_gm 0x06 /* SDA Hold Time Enable group mask. */ 4121 #define TWI_SDAHOLD_gp 1 /* SDA Hold Time Enable group position. */ 4122 #define TWI_SDAHOLD0_bm (1<<1) /* SDA Hold Time Enable bit 0 mask. */ 4123 #define TWI_SDAHOLD0_bp 1 /* SDA Hold Time Enable bit 0 position. */ 4124 #define TWI_SDAHOLD1_bm (1<<2) /* SDA Hold Time Enable bit 1 mask. */ 4125 #define TWI_SDAHOLD1_bp 2 /* SDA Hold Time Enable bit 1 position. */ 4126 4127 #define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ 4128 #define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ 4129 4130 /* PORT - I/O Port Configuration */ 4131 /* PORT.INTCTRL bit masks and bit positions */ 4132 #define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ 4133 #define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ 4134 #define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ 4135 #define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ 4136 #define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ 4137 #define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ 4138 4139 #define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ 4140 #define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ 4141 #define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ 4142 #define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ 4143 #define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ 4144 #define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ 4145 4146 /* PORT.INTFLAGS bit masks and bit positions */ 4147 #define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ 4148 #define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ 4149 4150 #define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ 4151 #define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ 4152 4153 /* PORT.REMAP bit masks and bit positions */ 4154 #define PORT_SPI_bm 0x20 /* SPI bit mask. */ 4155 #define PORT_SPI_bp 5 /* SPI bit position. */ 4156 4157 #define PORT_USART0_bm 0x10 /* USART0 bit mask. */ 4158 #define PORT_USART0_bp 4 /* USART0 bit position. */ 4159 4160 #define PORT_TC0D_bm 0x08 /* Timer/Counter 0 Output Compare D bit mask. */ 4161 #define PORT_TC0D_bp 3 /* Timer/Counter 0 Output Compare D bit position. */ 4162 4163 #define PORT_TC0C_bm 0x04 /* Timer/Counter 0 Output Compare C bit mask. */ 4164 #define PORT_TC0C_bp 2 /* Timer/Counter 0 Output Compare C bit position. */ 4165 4166 #define PORT_TC0B_bm 0x02 /* Timer/Counter 0 Output Compare B bit mask. */ 4167 #define PORT_TC0B_bp 1 /* Timer/Counter 0 Output Compare B bit position. */ 4168 4169 #define PORT_TC0A_bm 0x01 /* Timer/Counter 0 Output Compare A bit mask. */ 4170 #define PORT_TC0A_bp 0 /* Timer/Counter 0 Output Compare A bit position. */ 4171 4172 /* PORT.PIN0CTRL bit masks and bit positions */ 4173 #define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ 4174 #define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ 4175 4176 #define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ 4177 #define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ 4178 4179 #define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ 4180 #define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ 4181 #define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ 4182 #define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ 4183 #define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ 4184 #define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ 4185 #define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ 4186 #define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ 4187 4188 #define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ 4189 #define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ 4190 #define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ 4191 #define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ 4192 #define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ 4193 #define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ 4194 #define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ 4195 #define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ 4196 4197 /* PORT.PIN1CTRL bit masks and bit positions */ 4198 /* PORT_SRLEN Predefined. */ 4199 /* PORT_SRLEN Predefined. */ 4200 4201 /* PORT_INVEN Predefined. */ 4202 /* PORT_INVEN Predefined. */ 4203 4204 /* PORT_OPC Predefined. */ 4205 /* PORT_OPC Predefined. */ 4206 4207 /* PORT_ISC Predefined. */ 4208 /* PORT_ISC Predefined. */ 4209 4210 /* PORT.PIN2CTRL bit masks and bit positions */ 4211 /* PORT_SRLEN Predefined. */ 4212 /* PORT_SRLEN Predefined. */ 4213 4214 /* PORT_INVEN Predefined. */ 4215 /* PORT_INVEN Predefined. */ 4216 4217 /* PORT_OPC Predefined. */ 4218 /* PORT_OPC Predefined. */ 4219 4220 /* PORT_ISC Predefined. */ 4221 /* PORT_ISC Predefined. */ 4222 4223 /* PORT.PIN3CTRL bit masks and bit positions */ 4224 /* PORT_SRLEN Predefined. */ 4225 /* PORT_SRLEN Predefined. */ 4226 4227 /* PORT_INVEN Predefined. */ 4228 /* PORT_INVEN Predefined. */ 4229 4230 /* PORT_OPC Predefined. */ 4231 /* PORT_OPC Predefined. */ 4232 4233 /* PORT_ISC Predefined. */ 4234 /* PORT_ISC Predefined. */ 4235 4236 /* PORT.PIN4CTRL bit masks and bit positions */ 4237 /* PORT_SRLEN Predefined. */ 4238 /* PORT_SRLEN Predefined. */ 4239 4240 /* PORT_INVEN Predefined. */ 4241 /* PORT_INVEN Predefined. */ 4242 4243 /* PORT_OPC Predefined. */ 4244 /* PORT_OPC Predefined. */ 4245 4246 /* PORT_ISC Predefined. */ 4247 /* PORT_ISC Predefined. */ 4248 4249 /* PORT.PIN5CTRL bit masks and bit positions */ 4250 /* PORT_SRLEN Predefined. */ 4251 /* PORT_SRLEN Predefined. */ 4252 4253 /* PORT_INVEN Predefined. */ 4254 /* PORT_INVEN Predefined. */ 4255 4256 /* PORT_OPC Predefined. */ 4257 /* PORT_OPC Predefined. */ 4258 4259 /* PORT_ISC Predefined. */ 4260 /* PORT_ISC Predefined. */ 4261 4262 /* PORT.PIN6CTRL bit masks and bit positions */ 4263 /* PORT_SRLEN Predefined. */ 4264 /* PORT_SRLEN Predefined. */ 4265 4266 /* PORT_INVEN Predefined. */ 4267 /* PORT_INVEN Predefined. */ 4268 4269 /* PORT_OPC Predefined. */ 4270 /* PORT_OPC Predefined. */ 4271 4272 /* PORT_ISC Predefined. */ 4273 /* PORT_ISC Predefined. */ 4274 4275 /* PORT.PIN7CTRL bit masks and bit positions */ 4276 /* PORT_SRLEN Predefined. */ 4277 /* PORT_SRLEN Predefined. */ 4278 4279 /* PORT_INVEN Predefined. */ 4280 /* PORT_INVEN Predefined. */ 4281 4282 /* PORT_OPC Predefined. */ 4283 /* PORT_OPC Predefined. */ 4284 4285 /* PORT_ISC Predefined. */ 4286 /* PORT_ISC Predefined. */ 4287 4288 /* TC - 16-bit Timer/Counter With PWM */ 4289 /* TC0.CTRLA bit masks and bit positions */ 4290 #define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ 4291 #define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ 4292 #define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ 4293 #define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ 4294 #define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ 4295 #define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ 4296 #define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ 4297 #define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ 4298 #define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ 4299 #define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ 4300 4301 /* TC0.CTRLB bit masks and bit positions */ 4302 #define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ 4303 #define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ 4304 4305 #define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ 4306 #define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ 4307 4308 #define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ 4309 #define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ 4310 4311 #define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ 4312 #define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ 4313 4314 #define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ 4315 #define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ 4316 #define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ 4317 #define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ 4318 #define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ 4319 #define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ 4320 #define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ 4321 #define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ 4322 4323 /* TC0.CTRLC bit masks and bit positions */ 4324 #define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ 4325 #define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ 4326 4327 #define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ 4328 #define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ 4329 4330 #define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ 4331 #define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ 4332 4333 #define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ 4334 #define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ 4335 4336 /* TC0.CTRLD bit masks and bit positions */ 4337 #define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ 4338 #define TC0_EVACT_gp 5 /* Event Action group position. */ 4339 #define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ 4340 #define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ 4341 #define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ 4342 #define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ 4343 #define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ 4344 #define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ 4345 4346 #define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ 4347 #define TC0_EVDLY_bp 4 /* Event Delay bit position. */ 4348 4349 #define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ 4350 #define TC0_EVSEL_gp 0 /* Event Source Select group position. */ 4351 #define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ 4352 #define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ 4353 #define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ 4354 #define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ 4355 #define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ 4356 #define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ 4357 #define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ 4358 #define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ 4359 4360 /* TC0.CTRLE bit masks and bit positions */ 4361 #define TC0_BYTEM_gm 0x03 /* Byte Mode group mask. */ 4362 #define TC0_BYTEM_gp 0 /* Byte Mode group position. */ 4363 #define TC0_BYTEM0_bm (1<<0) /* Byte Mode bit 0 mask. */ 4364 #define TC0_BYTEM0_bp 0 /* Byte Mode bit 0 position. */ 4365 #define TC0_BYTEM1_bm (1<<1) /* Byte Mode bit 1 mask. */ 4366 #define TC0_BYTEM1_bp 1 /* Byte Mode bit 1 position. */ 4367 4368 /* TC0.INTCTRLA bit masks and bit positions */ 4369 #define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ 4370 #define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ 4371 #define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ 4372 #define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ 4373 #define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ 4374 #define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ 4375 4376 #define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ 4377 #define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ 4378 #define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ 4379 #define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ 4380 #define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ 4381 #define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ 4382 4383 /* TC0.INTCTRLB bit masks and bit positions */ 4384 #define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ 4385 #define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ 4386 #define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ 4387 #define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ 4388 #define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ 4389 #define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ 4390 4391 #define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ 4392 #define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ 4393 #define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ 4394 #define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ 4395 #define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ 4396 #define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ 4397 4398 #define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ 4399 #define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ 4400 #define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ 4401 #define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ 4402 #define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ 4403 #define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ 4404 4405 #define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ 4406 #define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ 4407 #define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ 4408 #define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ 4409 #define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ 4410 #define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ 4411 4412 /* TC0.CTRLFCLR bit masks and bit positions */ 4413 #define TC0_CMD_gm 0x0C /* Command group mask. */ 4414 #define TC0_CMD_gp 2 /* Command group position. */ 4415 #define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ 4416 #define TC0_CMD0_bp 2 /* Command bit 0 position. */ 4417 #define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ 4418 #define TC0_CMD1_bp 3 /* Command bit 1 position. */ 4419 4420 #define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ 4421 #define TC0_LUPD_bp 1 /* Lock Update bit position. */ 4422 4423 #define TC0_DIR_bm 0x01 /* Direction bit mask. */ 4424 #define TC0_DIR_bp 0 /* Direction bit position. */ 4425 4426 /* TC0.CTRLFSET bit masks and bit positions */ 4427 /* TC0_CMD Predefined. */ 4428 /* TC0_CMD Predefined. */ 4429 4430 /* TC0_LUPD Predefined. */ 4431 /* TC0_LUPD Predefined. */ 4432 4433 /* TC0_DIR Predefined. */ 4434 /* TC0_DIR Predefined. */ 4435 4436 /* TC0.CTRLGCLR bit masks and bit positions */ 4437 #define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ 4438 #define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ 4439 4440 #define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ 4441 #define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ 4442 4443 #define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ 4444 #define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ 4445 4446 #define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ 4447 #define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ 4448 4449 #define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ 4450 #define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ 4451 4452 /* TC0.CTRLGSET bit masks and bit positions */ 4453 /* TC0_CCDBV Predefined. */ 4454 /* TC0_CCDBV Predefined. */ 4455 4456 /* TC0_CCCBV Predefined. */ 4457 /* TC0_CCCBV Predefined. */ 4458 4459 /* TC0_CCBBV Predefined. */ 4460 /* TC0_CCBBV Predefined. */ 4461 4462 /* TC0_CCABV Predefined. */ 4463 /* TC0_CCABV Predefined. */ 4464 4465 /* TC0_PERBV Predefined. */ 4466 /* TC0_PERBV Predefined. */ 4467 4468 /* TC0.INTFLAGS bit masks and bit positions */ 4469 #define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ 4470 #define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ 4471 4472 #define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ 4473 #define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ 4474 4475 #define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ 4476 #define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ 4477 4478 #define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ 4479 #define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ 4480 4481 #define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ 4482 #define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ 4483 4484 #define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ 4485 #define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ 4486 4487 /* TC1.CTRLA bit masks and bit positions */ 4488 #define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ 4489 #define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ 4490 #define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ 4491 #define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ 4492 #define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ 4493 #define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ 4494 #define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ 4495 #define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ 4496 #define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ 4497 #define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ 4498 4499 /* TC1.CTRLB bit masks and bit positions */ 4500 #define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ 4501 #define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ 4502 4503 #define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ 4504 #define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ 4505 4506 #define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ 4507 #define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ 4508 #define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ 4509 #define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ 4510 #define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ 4511 #define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ 4512 #define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ 4513 #define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ 4514 4515 /* TC1.CTRLC bit masks and bit positions */ 4516 #define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ 4517 #define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ 4518 4519 #define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ 4520 #define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ 4521 4522 /* TC1.CTRLD bit masks and bit positions */ 4523 #define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ 4524 #define TC1_EVACT_gp 5 /* Event Action group position. */ 4525 #define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ 4526 #define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ 4527 #define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ 4528 #define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ 4529 #define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ 4530 #define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ 4531 4532 #define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ 4533 #define TC1_EVDLY_bp 4 /* Event Delay bit position. */ 4534 4535 #define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ 4536 #define TC1_EVSEL_gp 0 /* Event Source Select group position. */ 4537 #define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ 4538 #define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ 4539 #define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ 4540 #define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ 4541 #define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ 4542 #define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ 4543 #define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ 4544 #define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ 4545 4546 /* TC1.CTRLE bit masks and bit positions */ 4547 #define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ 4548 #define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ 4549 4550 /* TC1.INTCTRLA bit masks and bit positions */ 4551 #define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ 4552 #define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ 4553 #define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ 4554 #define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ 4555 #define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ 4556 #define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ 4557 4558 #define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ 4559 #define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ 4560 #define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ 4561 #define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ 4562 #define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ 4563 #define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ 4564 4565 /* TC1.INTCTRLB bit masks and bit positions */ 4566 #define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ 4567 #define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ 4568 #define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ 4569 #define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ 4570 #define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ 4571 #define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ 4572 4573 #define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ 4574 #define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ 4575 #define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ 4576 #define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ 4577 #define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ 4578 #define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ 4579 4580 /* TC1.CTRLFCLR bit masks and bit positions */ 4581 #define TC1_CMD_gm 0x0C /* Command group mask. */ 4582 #define TC1_CMD_gp 2 /* Command group position. */ 4583 #define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ 4584 #define TC1_CMD0_bp 2 /* Command bit 0 position. */ 4585 #define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ 4586 #define TC1_CMD1_bp 3 /* Command bit 1 position. */ 4587 4588 #define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ 4589 #define TC1_LUPD_bp 1 /* Lock Update bit position. */ 4590 4591 #define TC1_DIR_bm 0x01 /* Direction bit mask. */ 4592 #define TC1_DIR_bp 0 /* Direction bit position. */ 4593 4594 /* TC1.CTRLFSET bit masks and bit positions */ 4595 /* TC1_CMD Predefined. */ 4596 /* TC1_CMD Predefined. */ 4597 4598 /* TC1_LUPD Predefined. */ 4599 /* TC1_LUPD Predefined. */ 4600 4601 /* TC1_DIR Predefined. */ 4602 /* TC1_DIR Predefined. */ 4603 4604 /* TC1.CTRLGCLR bit masks and bit positions */ 4605 #define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ 4606 #define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ 4607 4608 #define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ 4609 #define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ 4610 4611 #define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ 4612 #define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ 4613 4614 /* TC1.CTRLGSET bit masks and bit positions */ 4615 /* TC1_CCBBV Predefined. */ 4616 /* TC1_CCBBV Predefined. */ 4617 4618 /* TC1_CCABV Predefined. */ 4619 /* TC1_CCABV Predefined. */ 4620 4621 /* TC1_PERBV Predefined. */ 4622 /* TC1_PERBV Predefined. */ 4623 4624 /* TC1.INTFLAGS bit masks and bit positions */ 4625 #define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ 4626 #define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ 4627 4628 #define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ 4629 #define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ 4630 4631 #define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ 4632 #define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ 4633 4634 #define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ 4635 #define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ 4636 4637 /* TC2 - 16-bit Timer/Counter type 2 */ 4638 /* TC2.CTRLA bit masks and bit positions */ 4639 #define TC2_CLKSEL_gm 0x0F /* Clock Selection group mask. */ 4640 #define TC2_CLKSEL_gp 0 /* Clock Selection group position. */ 4641 #define TC2_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ 4642 #define TC2_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ 4643 #define TC2_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ 4644 #define TC2_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ 4645 #define TC2_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ 4646 #define TC2_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ 4647 #define TC2_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ 4648 #define TC2_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ 4649 4650 /* TC2.CTRLB bit masks and bit positions */ 4651 #define TC2_HCMPDEN_bm 0x80 /* High Byte Compare D Enable bit mask. */ 4652 #define TC2_HCMPDEN_bp 7 /* High Byte Compare D Enable bit position. */ 4653 4654 #define TC2_HCMPCEN_bm 0x40 /* High Byte Compare C Enable bit mask. */ 4655 #define TC2_HCMPCEN_bp 6 /* High Byte Compare C Enable bit position. */ 4656 4657 #define TC2_HCMPBEN_bm 0x20 /* High Byte Compare B Enable bit mask. */ 4658 #define TC2_HCMPBEN_bp 5 /* High Byte Compare B Enable bit position. */ 4659 4660 #define TC2_HCMPAEN_bm 0x10 /* High Byte Compare A Enable bit mask. */ 4661 #define TC2_HCMPAEN_bp 4 /* High Byte Compare A Enable bit position. */ 4662 4663 #define TC2_LCMPDEN_bm 0x08 /* Low Byte Compare D Enable bit mask. */ 4664 #define TC2_LCMPDEN_bp 3 /* Low Byte Compare D Enable bit position. */ 4665 4666 #define TC2_LCMPCEN_bm 0x04 /* Low Byte Compare C Enable bit mask. */ 4667 #define TC2_LCMPCEN_bp 2 /* Low Byte Compare C Enable bit position. */ 4668 4669 #define TC2_LCMPBEN_bm 0x02 /* Low Byte Compare B Enable bit mask. */ 4670 #define TC2_LCMPBEN_bp 1 /* Low Byte Compare B Enable bit position. */ 4671 4672 #define TC2_LCMPAEN_bm 0x01 /* Low Byte Compare A Enable bit mask. */ 4673 #define TC2_LCMPAEN_bp 0 /* Low Byte Compare A Enable bit position. */ 4674 4675 /* TC2.CTRLC bit masks and bit positions */ 4676 #define TC2_HCMPD_bm 0x80 /* High Byte Compare D Output Value bit mask. */ 4677 #define TC2_HCMPD_bp 7 /* High Byte Compare D Output Value bit position. */ 4678 4679 #define TC2_HCMPC_bm 0x40 /* High Byte Compare C Output Value bit mask. */ 4680 #define TC2_HCMPC_bp 6 /* High Byte Compare C Output Value bit position. */ 4681 4682 #define TC2_HCMPB_bm 0x20 /* High Byte Compare B Output Value bit mask. */ 4683 #define TC2_HCMPB_bp 5 /* High Byte Compare B Output Value bit position. */ 4684 4685 #define TC2_HCMPA_bm 0x10 /* High Byte Compare A Output Value bit mask. */ 4686 #define TC2_HCMPA_bp 4 /* High Byte Compare A Output Value bit position. */ 4687 4688 #define TC2_LCMPD_bm 0x08 /* Low Byte Compare D Output Value bit mask. */ 4689 #define TC2_LCMPD_bp 3 /* Low Byte Compare D Output Value bit position. */ 4690 4691 #define TC2_LCMPC_bm 0x04 /* Low Byte Compare C Output Value bit mask. */ 4692 #define TC2_LCMPC_bp 2 /* Low Byte Compare C Output Value bit position. */ 4693 4694 #define TC2_LCMPB_bm 0x02 /* Low Byte Compare B Output Value bit mask. */ 4695 #define TC2_LCMPB_bp 1 /* Low Byte Compare B Output Value bit position. */ 4696 4697 #define TC2_LCMPA_bm 0x01 /* Low Byte Compare A Output Value bit mask. */ 4698 #define TC2_LCMPA_bp 0 /* Low Byte Compare A Output Value bit position. */ 4699 4700 /* TC2.CTRLE bit masks and bit positions */ 4701 #define TC2_BYTEM_gm 0x03 /* Byte Mode group mask. */ 4702 #define TC2_BYTEM_gp 0 /* Byte Mode group position. */ 4703 #define TC2_BYTEM0_bm (1<<0) /* Byte Mode bit 0 mask. */ 4704 #define TC2_BYTEM0_bp 0 /* Byte Mode bit 0 position. */ 4705 #define TC2_BYTEM1_bm (1<<1) /* Byte Mode bit 1 mask. */ 4706 #define TC2_BYTEM1_bp 1 /* Byte Mode bit 1 position. */ 4707 4708 /* TC2.INTCTRLA bit masks and bit positions */ 4709 #define TC2_HUNFINTLVL_gm 0x0C /* High Byte Underflow Interrupt Level group mask. */ 4710 #define TC2_HUNFINTLVL_gp 2 /* High Byte Underflow Interrupt Level group position. */ 4711 #define TC2_HUNFINTLVL0_bm (1<<2) /* High Byte Underflow Interrupt Level bit 0 mask. */ 4712 #define TC2_HUNFINTLVL0_bp 2 /* High Byte Underflow Interrupt Level bit 0 position. */ 4713 #define TC2_HUNFINTLVL1_bm (1<<3) /* High Byte Underflow Interrupt Level bit 1 mask. */ 4714 #define TC2_HUNFINTLVL1_bp 3 /* High Byte Underflow Interrupt Level bit 1 position. */ 4715 4716 #define TC2_LUNFINTLVL_gm 0x03 /* Low Byte Underflow interrupt level group mask. */ 4717 #define TC2_LUNFINTLVL_gp 0 /* Low Byte Underflow interrupt level group position. */ 4718 #define TC2_LUNFINTLVL0_bm (1<<0) /* Low Byte Underflow interrupt level bit 0 mask. */ 4719 #define TC2_LUNFINTLVL0_bp 0 /* Low Byte Underflow interrupt level bit 0 position. */ 4720 #define TC2_LUNFINTLVL1_bm (1<<1) /* Low Byte Underflow interrupt level bit 1 mask. */ 4721 #define TC2_LUNFINTLVL1_bp 1 /* Low Byte Underflow interrupt level bit 1 position. */ 4722 4723 /* TC2.INTCTRLB bit masks and bit positions */ 4724 #define TC2_LCMPDINTLVL_gm 0xC0 /* Low Byte Compare D Interrupt Level group mask. */ 4725 #define TC2_LCMPDINTLVL_gp 6 /* Low Byte Compare D Interrupt Level group position. */ 4726 #define TC2_LCMPDINTLVL0_bm (1<<6) /* Low Byte Compare D Interrupt Level bit 0 mask. */ 4727 #define TC2_LCMPDINTLVL0_bp 6 /* Low Byte Compare D Interrupt Level bit 0 position. */ 4728 #define TC2_LCMPDINTLVL1_bm (1<<7) /* Low Byte Compare D Interrupt Level bit 1 mask. */ 4729 #define TC2_LCMPDINTLVL1_bp 7 /* Low Byte Compare D Interrupt Level bit 1 position. */ 4730 4731 #define TC2_LCMPCINTLVL_gm 0x30 /* Low Byte Compare C Interrupt Level group mask. */ 4732 #define TC2_LCMPCINTLVL_gp 4 /* Low Byte Compare C Interrupt Level group position. */ 4733 #define TC2_LCMPCINTLVL0_bm (1<<4) /* Low Byte Compare C Interrupt Level bit 0 mask. */ 4734 #define TC2_LCMPCINTLVL0_bp 4 /* Low Byte Compare C Interrupt Level bit 0 position. */ 4735 #define TC2_LCMPCINTLVL1_bm (1<<5) /* Low Byte Compare C Interrupt Level bit 1 mask. */ 4736 #define TC2_LCMPCINTLVL1_bp 5 /* Low Byte Compare C Interrupt Level bit 1 position. */ 4737 4738 #define TC2_LCMPBINTLVL_gm 0x0C /* Low Byte Compare B Interrupt Level group mask. */ 4739 #define TC2_LCMPBINTLVL_gp 2 /* Low Byte Compare B Interrupt Level group position. */ 4740 #define TC2_LCMPBINTLVL0_bm (1<<2) /* Low Byte Compare B Interrupt Level bit 0 mask. */ 4741 #define TC2_LCMPBINTLVL0_bp 2 /* Low Byte Compare B Interrupt Level bit 0 position. */ 4742 #define TC2_LCMPBINTLVL1_bm (1<<3) /* Low Byte Compare B Interrupt Level bit 1 mask. */ 4743 #define TC2_LCMPBINTLVL1_bp 3 /* Low Byte Compare B Interrupt Level bit 1 position. */ 4744 4745 #define TC2_LCMPAINTLVL_gm 0x03 /* Low Byte Compare A Interrupt Level group mask. */ 4746 #define TC2_LCMPAINTLVL_gp 0 /* Low Byte Compare A Interrupt Level group position. */ 4747 #define TC2_LCMPAINTLVL0_bm (1<<0) /* Low Byte Compare A Interrupt Level bit 0 mask. */ 4748 #define TC2_LCMPAINTLVL0_bp 0 /* Low Byte Compare A Interrupt Level bit 0 position. */ 4749 #define TC2_LCMPAINTLVL1_bm (1<<1) /* Low Byte Compare A Interrupt Level bit 1 mask. */ 4750 #define TC2_LCMPAINTLVL1_bp 1 /* Low Byte Compare A Interrupt Level bit 1 position. */ 4751 4752 /* TC2.CTRLF bit masks and bit positions */ 4753 #define TC2_CMD_gm 0x0C /* Command group mask. */ 4754 #define TC2_CMD_gp 2 /* Command group position. */ 4755 #define TC2_CMD0_bm (1<<2) /* Command bit 0 mask. */ 4756 #define TC2_CMD0_bp 2 /* Command bit 0 position. */ 4757 #define TC2_CMD1_bm (1<<3) /* Command bit 1 mask. */ 4758 #define TC2_CMD1_bp 3 /* Command bit 1 position. */ 4759 4760 #define TC2_CMDEN_gm 0x03 /* Command Enable group mask. */ 4761 #define TC2_CMDEN_gp 0 /* Command Enable group position. */ 4762 #define TC2_CMDEN0_bm (1<<0) /* Command Enable bit 0 mask. */ 4763 #define TC2_CMDEN0_bp 0 /* Command Enable bit 0 position. */ 4764 #define TC2_CMDEN1_bm (1<<1) /* Command Enable bit 1 mask. */ 4765 #define TC2_CMDEN1_bp 1 /* Command Enable bit 1 position. */ 4766 4767 /* TC2.INTFLAGS bit masks and bit positions */ 4768 #define TC2_LCMPDIF_bm 0x80 /* Low Byte Compare D Interrupt Flag bit mask. */ 4769 #define TC2_LCMPDIF_bp 7 /* Low Byte Compare D Interrupt Flag bit position. */ 4770 4771 #define TC2_LCMPCIF_bm 0x40 /* Low Byte Compare C Interrupt Flag bit mask. */ 4772 #define TC2_LCMPCIF_bp 6 /* Low Byte Compare C Interrupt Flag bit position. */ 4773 4774 #define TC2_LCMPBIF_bm 0x20 /* Low Byte Compare B Interrupt Flag bit mask. */ 4775 #define TC2_LCMPBIF_bp 5 /* Low Byte Compare B Interrupt Flag bit position. */ 4776 4777 #define TC2_LCMPAIF_bm 0x10 /* Low Byte Compare A Interrupt Flag bit mask. */ 4778 #define TC2_LCMPAIF_bp 4 /* Low Byte Compare A Interrupt Flag bit position. */ 4779 4780 #define TC2_HUNFIF_bm 0x02 /* High Byte Underflow Interrupt Flag bit mask. */ 4781 #define TC2_HUNFIF_bp 1 /* High Byte Underflow Interrupt Flag bit position. */ 4782 4783 #define TC2_LUNFIF_bm 0x01 /* Low Byte Underflow Interrupt Flag bit mask. */ 4784 #define TC2_LUNFIF_bp 0 /* Low Byte Underflow Interrupt Flag bit position. */ 4785 4786 /* AWEX - Timer/Counter Advanced Waveform Extension */ 4787 /* AWEX.CTRL bit masks and bit positions */ 4788 #define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ 4789 #define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ 4790 4791 #define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ 4792 #define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ 4793 4794 #define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ 4795 #define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ 4796 4797 #define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ 4798 #define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ 4799 4800 #define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ 4801 #define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ 4802 4803 #define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ 4804 #define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ 4805 4806 /* AWEX.FDCTRL bit masks and bit positions */ 4807 #define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ 4808 #define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ 4809 4810 #define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ 4811 #define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ 4812 4813 #define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ 4814 #define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ 4815 #define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ 4816 #define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ 4817 #define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ 4818 #define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ 4819 4820 /* AWEX.STATUS bit masks and bit positions */ 4821 #define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ 4822 #define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ 4823 4824 #define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ 4825 #define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ 4826 4827 #define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ 4828 #define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ 4829 4830 /* AWEX.STATUSSET bit masks and bit positions */ 4831 /* AWEX_FDF Predefined. */ 4832 /* AWEX_FDF Predefined. */ 4833 4834 /* AWEX_DTHSBUFV Predefined. */ 4835 /* AWEX_DTHSBUFV Predefined. */ 4836 4837 /* AWEX_DTLSBUFV Predefined. */ 4838 /* AWEX_DTLSBUFV Predefined. */ 4839 4840 /* HIRES - Timer/Counter High-Resolution Extension */ 4841 /* HIRES.CTRLA bit masks and bit positions */ 4842 #define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ 4843 #define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ 4844 #define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ 4845 #define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ 4846 #define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ 4847 #define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ 4848 4849 /* USART - Universal Asynchronous Receiver-Transmitter */ 4850 /* USART.STATUS bit masks and bit positions */ 4851 #define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ 4852 #define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ 4853 4854 #define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ 4855 #define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ 4856 4857 #define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ 4858 #define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ 4859 4860 #define USART_FERR_bm 0x10 /* Frame Error bit mask. */ 4861 #define USART_FERR_bp 4 /* Frame Error bit position. */ 4862 4863 #define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ 4864 #define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ 4865 4866 #define USART_PERR_bm 0x04 /* Parity Error bit mask. */ 4867 #define USART_PERR_bp 2 /* Parity Error bit position. */ 4868 4869 #define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ 4870 #define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ 4871 4872 /* USART.CTRLA bit masks and bit positions */ 4873 #define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ 4874 #define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ 4875 #define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ 4876 #define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ 4877 #define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ 4878 #define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ 4879 4880 #define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ 4881 #define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ 4882 #define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ 4883 #define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ 4884 #define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ 4885 #define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ 4886 4887 #define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ 4888 #define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ 4889 #define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ 4890 #define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ 4891 #define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ 4892 #define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ 4893 4894 /* USART.CTRLB bit masks and bit positions */ 4895 #define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ 4896 #define USART_RXEN_bp 4 /* Receiver Enable bit position. */ 4897 4898 #define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ 4899 #define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ 4900 4901 #define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ 4902 #define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ 4903 4904 #define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ 4905 #define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ 4906 4907 #define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ 4908 #define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ 4909 4910 /* USART.CTRLC bit masks and bit positions */ 4911 #define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ 4912 #define USART_CMODE_gp 6 /* Communication Mode group position. */ 4913 #define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ 4914 #define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ 4915 #define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ 4916 #define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ 4917 4918 #define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ 4919 #define USART_PMODE_gp 4 /* Parity Mode group position. */ 4920 #define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ 4921 #define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ 4922 #define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ 4923 #define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ 4924 4925 #define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ 4926 #define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ 4927 4928 #define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ 4929 #define USART_CHSIZE_gp 0 /* Character Size group position. */ 4930 #define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ 4931 #define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ 4932 #define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ 4933 #define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ 4934 #define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ 4935 #define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ 4936 4937 /* USART.BAUDCTRLA bit masks and bit positions */ 4938 #define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ 4939 #define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ 4940 #define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ 4941 #define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ 4942 #define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ 4943 #define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ 4944 #define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ 4945 #define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ 4946 #define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ 4947 #define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ 4948 #define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ 4949 #define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ 4950 #define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ 4951 #define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ 4952 #define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ 4953 #define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ 4954 #define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ 4955 #define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ 4956 4957 /* USART.BAUDCTRLB bit masks and bit positions */ 4958 #define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ 4959 #define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ 4960 #define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ 4961 #define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ 4962 #define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ 4963 #define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ 4964 #define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ 4965 #define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ 4966 #define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ 4967 #define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ 4968 4969 /* USART_BSEL Predefined. */ 4970 /* USART_BSEL Predefined. */ 4971 4972 /* SPI - Serial Peripheral Interface */ 4973 /* SPI.CTRL bit masks and bit positions */ 4974 #define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ 4975 #define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ 4976 4977 #define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ 4978 #define SPI_ENABLE_bp 6 /* Enable Module bit position. */ 4979 4980 #define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ 4981 #define SPI_DORD_bp 5 /* Data Order Setting bit position. */ 4982 4983 #define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ 4984 #define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ 4985 4986 #define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ 4987 #define SPI_MODE_gp 2 /* SPI Mode group position. */ 4988 #define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ 4989 #define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ 4990 #define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ 4991 #define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ 4992 4993 #define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ 4994 #define SPI_PRESCALER_gp 0 /* Prescaler group position. */ 4995 #define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ 4996 #define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ 4997 #define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ 4998 #define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ 4999 5000 /* SPI.INTCTRL bit masks and bit positions */ 5001 #define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ 5002 #define SPI_INTLVL_gp 0 /* Interrupt level group position. */ 5003 #define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ 5004 #define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ 5005 #define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ 5006 #define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ 5007 5008 /* SPI.STATUS bit masks and bit positions */ 5009 #define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ 5010 #define SPI_IF_bp 7 /* Interrupt Flag bit position. */ 5011 5012 #define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ 5013 #define SPI_WRCOL_bp 6 /* Write Collision bit position. */ 5014 5015 /* IRCOM - IR Communication Module */ 5016 /* IRCOM.CTRL bit masks and bit positions */ 5017 #define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ 5018 #define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ 5019 #define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ 5020 #define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ 5021 #define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ 5022 #define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ 5023 #define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ 5024 #define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ 5025 #define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ 5026 #define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ 5027 5028 /* FUSE - Fuses and Lockbits */ 5029 /* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ 5030 #define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ 5031 #define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ 5032 #define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ 5033 #define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ 5034 #define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ 5035 #define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ 5036 #define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ 5037 #define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ 5038 #define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ 5039 #define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ 5040 5041 #define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ 5042 #define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ 5043 #define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ 5044 #define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ 5045 #define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ 5046 #define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ 5047 #define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ 5048 #define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ 5049 #define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ 5050 #define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ 5051 5052 /* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ 5053 #define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ 5054 #define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ 5055 5056 #define NVM_FUSES_TOSCSEL_bm 0x20 /* Timer Oscillator pin location bit mask. */ 5057 #define NVM_FUSES_TOSCSEL_bp 5 /* Timer Oscillator pin location bit position. */ 5058 5059 #define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ 5060 #define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ 5061 #define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ 5062 #define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ 5063 #define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ 5064 #define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ 5065 5066 /* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ 5067 #define NVM_FUSES_RSTDISBL_bm 0x10 /* External Reset Disable bit mask. */ 5068 #define NVM_FUSES_RSTDISBL_bp 4 /* External Reset Disable bit position. */ 5069 5070 #define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ 5071 #define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ 5072 #define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ 5073 #define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ 5074 #define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ 5075 #define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ 5076 5077 #define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ 5078 #define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ 5079 5080 /* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ 5081 #define NVM_FUSES_BODACT_gm 0x30 /* BOD Operation in Active Mode group mask. */ 5082 #define NVM_FUSES_BODACT_gp 4 /* BOD Operation in Active Mode group position. */ 5083 #define NVM_FUSES_BODACT0_bm (1<<4) /* BOD Operation in Active Mode bit 0 mask. */ 5084 #define NVM_FUSES_BODACT0_bp 4 /* BOD Operation in Active Mode bit 0 position. */ 5085 #define NVM_FUSES_BODACT1_bm (1<<5) /* BOD Operation in Active Mode bit 1 mask. */ 5086 #define NVM_FUSES_BODACT1_bp 5 /* BOD Operation in Active Mode bit 1 position. */ 5087 5088 #define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ 5089 #define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ 5090 5091 #define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ 5092 #define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ 5093 #define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ 5094 #define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ 5095 #define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ 5096 #define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ 5097 #define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ 5098 #define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ 5099 5100 /* LOCKBIT - Fuses and Lockbits */ 5101 /* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ 5102 #define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ 5103 #define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ 5104 #define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ 5105 #define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ 5106 #define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ 5107 #define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ 5108 5109 #define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ 5110 #define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ 5111 #define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ 5112 #define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ 5113 #define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ 5114 #define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ 5115 5116 #define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ 5117 #define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ 5118 #define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ 5119 #define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ 5120 #define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ 5121 #define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ 5122 5123 #define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ 5124 #define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ 5125 #define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ 5126 #define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ 5127 #define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ 5128 #define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ 5129 5130 5131 5132 // Generic Port Pins 5133 5134 #define PIN0_bm 0x01 5135 #define PIN0_bp 0 5136 #define PIN1_bm 0x02 5137 #define PIN1_bp 1 5138 #define PIN2_bm 0x04 5139 #define PIN2_bp 2 5140 #define PIN3_bm 0x08 5141 #define PIN3_bp 3 5142 #define PIN4_bm 0x10 5143 #define PIN4_bp 4 5144 #define PIN5_bm 0x20 5145 #define PIN5_bp 5 5146 #define PIN6_bm 0x40 5147 #define PIN6_bp 6 5148 #define PIN7_bm 0x80 5149 #define PIN7_bp 7 5150 5151 /* ========== Interrupt Vector Definitions ========== */ 5152 /* Vector 0 is the reset vector */ 5153 5154 /* OSC interrupt vectors */ 5155 #define OSC_OSCF_vect_num 1 5156 #define OSC_OSCF_vect _VECTOR(1) /* Oscillator Failure Interrupt (NMI) */ 5157 5158 /* PORTC interrupt vectors */ 5159 #define PORTC_INT0_vect_num 2 5160 #define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ 5161 #define PORTC_INT1_vect_num 3 5162 #define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ 5163 5164 /* PORTR interrupt vectors */ 5165 #define PORTR_INT0_vect_num 4 5166 #define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ 5167 #define PORTR_INT1_vect_num 5 5168 #define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ 5169 5170 /* RTC interrupt vectors */ 5171 #define RTC_OVF_vect_num 10 5172 #define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ 5173 #define RTC_COMP_vect_num 11 5174 #define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ 5175 5176 /* TWIC interrupt vectors */ 5177 #define TWIC_TWIS_vect_num 12 5178 #define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ 5179 #define TWIC_TWIM_vect_num 13 5180 #define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ 5181 5182 /* TCC0 interrupt vectors */ 5183 #define TCC0_OVF_vect_num 14 5184 #define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ 5185 5186 /* TCC2 interrupt vectors */ 5187 #define TCC2_LUNF_vect_num 14 5188 #define TCC2_LUNF_vect _VECTOR(14) /* Low Byte Underflow Interrupt */ 5189 5190 /* TCC0 interrupt vectors */ 5191 #define TCC0_ERR_vect_num 15 5192 #define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ 5193 5194 /* TCC2 interrupt vectors */ 5195 #define TCC2_HUNF_vect_num 15 5196 #define TCC2_HUNF_vect _VECTOR(15) /* High Byte Underflow Interrupt */ 5197 5198 /* TCC0 interrupt vectors */ 5199 #define TCC0_CCA_vect_num 16 5200 #define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ 5201 5202 /* TCC2 interrupt vectors */ 5203 #define TCC2_LCMPA_vect_num 16 5204 #define TCC2_LCMPA_vect _VECTOR(16) /* Low Byte Compare A Interrupt */ 5205 5206 /* TCC0 interrupt vectors */ 5207 #define TCC0_CCB_vect_num 17 5208 #define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ 5209 5210 /* TCC2 interrupt vectors */ 5211 #define TCC2_LCMPB_vect_num 17 5212 #define TCC2_LCMPB_vect _VECTOR(17) /* Low Byte Compare B Interrupt */ 5213 5214 /* TCC0 interrupt vectors */ 5215 #define TCC0_CCC_vect_num 18 5216 #define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ 5217 5218 /* TCC2 interrupt vectors */ 5219 #define TCC2_LCMPC_vect_num 18 5220 #define TCC2_LCMPC_vect _VECTOR(18) /* Low Byte Compare C Interrupt */ 5221 5222 /* TCC0 interrupt vectors */ 5223 #define TCC0_CCD_vect_num 19 5224 #define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ 5225 5226 /* TCC2 interrupt vectors */ 5227 #define TCC2_LCMPD_vect_num 19 5228 #define TCC2_LCMPD_vect _VECTOR(19) /* Low Byte Compare D Interrupt */ 5229 5230 /* TCC1 interrupt vectors */ 5231 #define TCC1_OVF_vect_num 20 5232 #define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ 5233 #define TCC1_ERR_vect_num 21 5234 #define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ 5235 #define TCC1_CCA_vect_num 22 5236 #define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ 5237 #define TCC1_CCB_vect_num 23 5238 #define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ 5239 5240 /* SPIC interrupt vectors */ 5241 #define SPIC_INT_vect_num 24 5242 #define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ 5243 5244 /* USARTC0 interrupt vectors */ 5245 #define USARTC0_RXC_vect_num 25 5246 #define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ 5247 #define USARTC0_DRE_vect_num 26 5248 #define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ 5249 #define USARTC0_TXC_vect_num 27 5250 #define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ 5251 5252 /* NVM interrupt vectors */ 5253 #define NVM_EE_vect_num 32 5254 #define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ 5255 #define NVM_SPM_vect_num 33 5256 #define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ 5257 5258 /* PORTB interrupt vectors */ 5259 #define PORTB_INT0_vect_num 34 5260 #define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ 5261 #define PORTB_INT1_vect_num 35 5262 #define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ 5263 5264 /* PORTE interrupt vectors */ 5265 #define PORTE_INT0_vect_num 43 5266 #define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ 5267 #define PORTE_INT1_vect_num 44 5268 #define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ 5269 5270 /* TWIE interrupt vectors */ 5271 #define TWIE_TWIS_vect_num 45 5272 #define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ 5273 #define TWIE_TWIM_vect_num 46 5274 #define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ 5275 5276 /* TCE0 interrupt vectors */ 5277 #define TCE0_OVF_vect_num 47 5278 #define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ 5279 #define TCE0_ERR_vect_num 48 5280 #define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ 5281 #define TCE0_CCA_vect_num 49 5282 #define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ 5283 #define TCE0_CCB_vect_num 50 5284 #define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ 5285 #define TCE0_CCC_vect_num 51 5286 #define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ 5287 #define TCE0_CCD_vect_num 52 5288 #define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ 5289 5290 /* USARTE0 interrupt vectors */ 5291 #define USARTE0_RXC_vect_num 58 5292 #define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ 5293 #define USARTE0_DRE_vect_num 59 5294 #define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ 5295 #define USARTE0_TXC_vect_num 60 5296 #define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ 5297 5298 /* PORTD interrupt vectors */ 5299 #define PORTD_INT0_vect_num 64 5300 #define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ 5301 #define PORTD_INT1_vect_num 65 5302 #define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ 5303 5304 /* PORTA interrupt vectors */ 5305 #define PORTA_INT0_vect_num 66 5306 #define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ 5307 #define PORTA_INT1_vect_num 67 5308 #define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ 5309 5310 /* ACA interrupt vectors */ 5311 #define ACA_AC0_vect_num 68 5312 #define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ 5313 #define ACA_AC1_vect_num 69 5314 #define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ 5315 #define ACA_ACW_vect_num 70 5316 #define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ 5317 5318 /* ADCA interrupt vectors */ 5319 #define ADCA_CH0_vect_num 71 5320 #define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ 5321 5322 /* TCD0 interrupt vectors */ 5323 #define TCD0_OVF_vect_num 77 5324 #define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ 5325 5326 /* TCD2 interrupt vectors */ 5327 #define TCD2_LUNF_vect_num 77 5328 #define TCD2_LUNF_vect _VECTOR(77) /* Low Byte Underflow Interrupt */ 5329 5330 /* TCD0 interrupt vectors */ 5331 #define TCD0_ERR_vect_num 78 5332 #define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ 5333 5334 /* TCD2 interrupt vectors */ 5335 #define TCD2_HUNF_vect_num 78 5336 #define TCD2_HUNF_vect _VECTOR(78) /* High Byte Underflow Interrupt */ 5337 5338 /* TCD0 interrupt vectors */ 5339 #define TCD0_CCA_vect_num 79 5340 #define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ 5341 5342 /* TCD2 interrupt vectors */ 5343 #define TCD2_LCMPA_vect_num 79 5344 #define TCD2_LCMPA_vect _VECTOR(79) /* Low Byte Compare A Interrupt */ 5345 5346 /* TCD0 interrupt vectors */ 5347 #define TCD0_CCB_vect_num 80 5348 #define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ 5349 5350 /* TCD2 interrupt vectors */ 5351 #define TCD2_LCMPB_vect_num 80 5352 #define TCD2_LCMPB_vect _VECTOR(80) /* Low Byte Compare B Interrupt */ 5353 5354 /* TCD0 interrupt vectors */ 5355 #define TCD0_CCC_vect_num 81 5356 #define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ 5357 5358 /* TCD2 interrupt vectors */ 5359 #define TCD2_LCMPC_vect_num 81 5360 #define TCD2_LCMPC_vect _VECTOR(81) /* Low Byte Compare C Interrupt */ 5361 5362 /* TCD0 interrupt vectors */ 5363 #define TCD0_CCD_vect_num 82 5364 #define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ 5365 5366 /* TCD2 interrupt vectors */ 5367 #define TCD2_LCMPD_vect_num 82 5368 #define TCD2_LCMPD_vect _VECTOR(82) /* Low Byte Compare D Interrupt */ 5369 5370 /* SPID interrupt vectors */ 5371 #define SPID_INT_vect_num 87 5372 #define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ 5373 5374 /* USARTD0 interrupt vectors */ 5375 #define USARTD0_RXC_vect_num 88 5376 #define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ 5377 #define USARTD0_DRE_vect_num 89 5378 #define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ 5379 #define USARTD0_TXC_vect_num 90 5380 #define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ 5381 5382 #define _VECTOR_SIZE 4 /* Size of individual vector. */ 5383 #define _VECTORS_SIZE (91 * _VECTOR_SIZE) 5384 5385 5386 /* ========== Constants ========== */ 5387 5388 #define PROGMEM_START (0x0000) 5389 #define PROGMEM_SIZE (69632) 5390 #define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) 5391 5392 #define APP_SECTION_START (0x0000) 5393 #define APP_SECTION_SIZE (65536) 5394 #define APP_SECTION_PAGE_SIZE (256) 5395 #define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) 5396 5397 #define APPTABLE_SECTION_START (0xF000) 5398 #define APPTABLE_SECTION_SIZE (4096) 5399 #define APPTABLE_SECTION_PAGE_SIZE (256) 5400 #define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) 5401 5402 #define BOOT_SECTION_START (0x10000) 5403 #define BOOT_SECTION_SIZE (4096) 5404 #define BOOT_SECTION_PAGE_SIZE (256) 5405 #define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) 5406 5407 #define DATAMEM_START (0x0000) 5408 #define DATAMEM_SIZE (12288) 5409 #define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) 5410 5411 #define IO_START (0x0000) 5412 #define IO_SIZE (4096) 5413 #define IO_PAGE_SIZE (0) 5414 #define IO_END (IO_START + IO_SIZE - 1) 5415 5416 #define MAPPED_EEPROM_START (0x1000) 5417 #define MAPPED_EEPROM_SIZE (2048) 5418 #define MAPPED_EEPROM_PAGE_SIZE (0) 5419 #define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) 5420 5421 #define INTERNAL_SRAM_START (0x2000) 5422 #define INTERNAL_SRAM_SIZE (4096) 5423 #define INTERNAL_SRAM_PAGE_SIZE (0) 5424 #define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) 5425 5426 #define EEPROM_START (0x0000) 5427 #define EEPROM_SIZE (2048) 5428 #define EEPROM_PAGE_SIZE (32) 5429 #define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) 5430 5431 #define SIGNATURES_START (0x0000) 5432 #define SIGNATURES_SIZE (3) 5433 #define SIGNATURES_PAGE_SIZE (0) 5434 #define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) 5435 5436 #define FUSES_START (0x0000) 5437 #define FUSES_SIZE (6) 5438 #define FUSES_PAGE_SIZE (0) 5439 #define FUSES_END (FUSES_START + FUSES_SIZE - 1) 5440 5441 #define LOCKBITS_START (0x0000) 5442 #define LOCKBITS_SIZE (1) 5443 #define LOCKBITS_PAGE_SIZE (0) 5444 #define LOCKBITS_END (LOCKBITS_START + LOCKBITS_SIZE - 1) 5445 5446 #define USER_SIGNATURES_START (0x0000) 5447 #define USER_SIGNATURES_SIZE (256) 5448 #define USER_SIGNATURES_PAGE_SIZE (256) 5449 #define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) 5450 5451 #define PROD_SIGNATURES_START (0x0000) 5452 #define PROD_SIGNATURES_SIZE (64) 5453 #define PROD_SIGNATURES_PAGE_SIZE (256) 5454 #define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) 5455 5456 #define FLASHSTART PROGMEM_START 5457 #define FLASHEND PROGMEM_END 5458 #define SPM_PAGESIZE 256 5459 #define RAMSTART INTERNAL_SRAM_START 5460 #define RAMSIZE INTERNAL_SRAM_SIZE 5461 #define RAMEND INTERNAL_SRAM_END 5462 #define E2END EEPROM_END 5463 #define E2PAGESIZE EEPROM_PAGE_SIZE 5464 5465 5466 /* ========== Fuses ========== */ 5467 #define FUSE_MEMORY_SIZE 6 5468 5469 /* Fuse Byte 0 Reserved */ 5470 5471 /* Fuse Byte 1 */ 5472 #define FUSE_WDP0 (unsigned char)~_BV(0) /* Watchdog Timeout Period Bit 0 */ 5473 #define FUSE_WDP1 (unsigned char)~_BV(1) /* Watchdog Timeout Period Bit 1 */ 5474 #define FUSE_WDP2 (unsigned char)~_BV(2) /* Watchdog Timeout Period Bit 2 */ 5475 #define FUSE_WDP3 (unsigned char)~_BV(3) /* Watchdog Timeout Period Bit 3 */ 5476 #define FUSE_WDWP0 (unsigned char)~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ 5477 #define FUSE_WDWP1 (unsigned char)~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ 5478 #define FUSE_WDWP2 (unsigned char)~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ 5479 #define FUSE_WDWP3 (unsigned char)~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ 5480 #define FUSE1_DEFAULT (0xFF) 5481 5482 /* Fuse Byte 2 */ 5483 #define FUSE_BODPD0 (unsigned char)~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ 5484 #define FUSE_BODPD1 (unsigned char)~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ 5485 #define FUSE_TOSCSEL (unsigned char)~_BV(5) /* Timer Oscillator pin location */ 5486 #define FUSE_BOOTRST (unsigned char)~_BV(6) /* Boot Loader Section Reset Vector */ 5487 #define FUSE2_DEFAULT (0xFF) 5488 5489 /* Fuse Byte 3 Reserved */ 5490 5491 /* Fuse Byte 4 */ 5492 #define FUSE_WDLOCK (unsigned char)~_BV(1) /* Watchdog Timer Lock */ 5493 #define FUSE_SUT0 (unsigned char)~_BV(2) /* Start-up Time Bit 0 */ 5494 #define FUSE_SUT1 (unsigned char)~_BV(3) /* Start-up Time Bit 1 */ 5495 #define FUSE_RSTDISBL (unsigned char)~_BV(4) /* External Reset Disable */ 5496 #define FUSE4_DEFAULT (0xFF) 5497 5498 /* Fuse Byte 5 */ 5499 #define FUSE_BODLVL0 (unsigned char)~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ 5500 #define FUSE_BODLVL1 (unsigned char)~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ 5501 #define FUSE_BODLVL2 (unsigned char)~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ 5502 #define FUSE_EESAVE (unsigned char)~_BV(3) /* Preserve EEPROM Through Chip Erase */ 5503 #define FUSE_BODACT0 (unsigned char)~_BV(4) /* BOD Operation in Active Mode Bit 0 */ 5504 #define FUSE_BODACT1 (unsigned char)~_BV(5) /* BOD Operation in Active Mode Bit 1 */ 5505 #define FUSE5_DEFAULT (0xFF) 5506 5507 /* ========== Lock Bits ========== */ 5508 #define __LOCK_BITS_EXIST 5509 #define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST 5510 #define __BOOT_LOCK_APPLICATION_BITS_EXIST 5511 #define __BOOT_LOCK_BOOT_BITS_EXIST 5512 5513 /* ========== Signature ========== */ 5514 #define SIGNATURE_0 0x1E 5515 #define SIGNATURE_1 0x96 5516 #define SIGNATURE_2 0x47 5517 5518 /* ========== Power Reduction Condition Definitions ========== */ 5519 5520 /* PR.PRGEN */ 5521 #define __AVR_HAVE_PRGEN (PR_RTC_bm|PR_EVSYS_bm) 5522 #define __AVR_HAVE_PRGEN_RTC 5523 #define __AVR_HAVE_PRGEN_EVSYS 5524 5525 /* PR.PRPA */ 5526 #define __AVR_HAVE_PRPA (PR_ADC_bm|PR_AC_bm) 5527 #define __AVR_HAVE_PRPA_ADC 5528 #define __AVR_HAVE_PRPA_AC 5529 5530 /* PR.PRPC */ 5531 #define __AVR_HAVE_PRPC (PR_TWI_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm) 5532 #define __AVR_HAVE_PRPC_TWI 5533 #define __AVR_HAVE_PRPC_USART0 5534 #define __AVR_HAVE_PRPC_SPI 5535 #define __AVR_HAVE_PRPC_HIRES 5536 #define __AVR_HAVE_PRPC_TC1 5537 #define __AVR_HAVE_PRPC_TC0 5538 5539 /* PR.PRPD */ 5540 #define __AVR_HAVE_PRPD (PR_USART0_bm|PR_SPI_bm|PR_TC0_bm) 5541 #define __AVR_HAVE_PRPD_USART0 5542 #define __AVR_HAVE_PRPD_SPI 5543 #define __AVR_HAVE_PRPD_TC0 5544 5545 /* PR.PRPE */ 5546 #define __AVR_HAVE_PRPE (PR_TWI_bm|PR_USART0_bm|PR_TC0_bm) 5547 #define __AVR_HAVE_PRPE_TWI 5548 #define __AVR_HAVE_PRPE_USART0 5549 #define __AVR_HAVE_PRPE_TC0 5550 5551 /* PR.PRPF */ 5552 #define __AVR_HAVE_PRPF (PR_USART0_bm|PR_TC0_bm) 5553 #define __AVR_HAVE_PRPF_USART0 5554 #define __AVR_HAVE_PRPF_TC0 5555 5556 5557 #endif /* #ifdef _AVR_ATXMEGA64D4_H_INCLUDED */ 5558 5559