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