/* -------------------------------------------------------------------------- WEX - Waveform Extension -------------------------------------------------------------------------- */ /* Waveform Extension */ typedef struct WEX_struct { register8_t CTRLA; /* Control A */ register8_t CTRLB; /* Control B */ register8_t CTRLC; /* Control C */ register8_t reserved_1[1]; register8_t EVCTRLA; /* Event Control A */ register8_t EVCTRLB; /* Event Control B */ register8_t EVCTRLC; /* Event Control C */ register8_t BUFCTRL; /* Buffer Valid Control */ register8_t BLANKCTRL; /* Blanking Control */ register8_t BLANKTIME; /* Blanking Time */ register8_t FAULTCTRL; /* Fault Control */ register8_t FAULTDRV; /* Fault Drive */ register8_t FAULTOUT; /* Fault Output */ register8_t INTCTRL; /* Interrupt Control */ register8_t INTFLAGS; /* Interrupt Flags */ register8_t STATUS; /* Status */ register8_t DTLS; /* Dead-time Low Side */ register8_t DTHS; /* Dead-time High Side */ register8_t DTBOTH; /* Dead-time Both Sides */ register8_t SWAP; /* DTI Swap */ register8_t PGMOVR; /* Pattern Generation Override */ register8_t PGMOUT; /* Pattern Generation Output */ register8_t reserved_2[1]; register8_t OUTOVEN; /* Output Override Enable */ register8_t DTLSBUF; /* Dead-time Low Side Buffer */ register8_t DTHSBUF; /* Dead-time High Side Buffer */ register8_t DTBOTHBUF; /* Dead-time Both Sides Buffer */ register8_t SWAPBUF; /* DTI Swap Buffer */ register8_t PGMOVRBUF; /* Pattern Generation Override Buffer */ register8_t PGMOUTBUF; /* Pattern Generation Output Buffer */ register8_t reserved_3[2]; } WEX_t; /* Blanking Prescaler select */ typedef enum WEX_BLANKPRESC_enum { WEX_BLANKPRESC_DIV1_gc = (0x00<<5), /* No prescaling */ WEX_BLANKPRESC_DIV4_gc = (0x01<<5), /* Divide CLK_PER by 4 */ WEX_BLANKPRESC_DIV16_gc = (0x02<<5), /* Divide CLK_PER by 16 */ WEX_BLANKPRESC_DIV64_gc = (0x03<<5) /* Divide CLK_PER by 64 */ } WEX_BLANKPRESC_t; /* Blanking Trigger Source select */ typedef enum WEX_BLANKSRC_enum { WEX_BLANKSRC_TCPWM0_gc = (0x00<<0) /* TCPWM0 */ } WEX_BLANKSRC_t; /* Blanking State select */ typedef enum WEX_BLANKSTATE_enum { WEX_BLANKSTATE_OFF_gc = (0x00<<7), /* Blanking off */ WEX_BLANKSTATE_ON_gc = (0x01<<7) /* Blanking active */ } WEX_BLANKSTATE_t; /* Blanking Trigger select */ typedef enum WEX_BLANKTRIG_enum { WEX_BLANKTRIG_NONE_gc = (0x00<<2), /* No HW blanking trigger. SW blanking only */ WEX_BLANKTRIG_UPDATE_gc = (0x01<<2), /* T/C Update Condition */ WEX_BLANKTRIG_CMP0_gc = (0x02<<2), /* Compare Match 0 */ WEX_BLANKTRIG_CMP1_gc = (0x03<<2), /* Compare Match 1 */ WEX_BLANKTRIG_CMP2_gc = (0x04<<2), /* Compare Match 2 */ WEX_BLANKTRIG_CMP3_gc = (0x05<<2) /* Compare Match 3 */ } WEX_BLANKTRIG_t; /* Command select */ typedef enum WEX_CMD_enum { WEX_CMD_NONE_gc = (0x00<<0), /* No Command */ WEX_CMD_UPDATE_gc = (0x01<<0), /* Force update of Dead-time, SWAP and PGM buffer registers. */ WEX_CMD_FAULTSET_gc = (0x02<<0), /* Set Fault Detection */ WEX_CMD_FAULTCLR_gc = (0x03<<0), /* Clear Fault Detection. */ WEX_CMD_BLANKSET_gc = (0x04<<0), /* Set SW Blanking */ WEX_CMD_BLANKCLR_gc = (0x05<<0) /* Clear SW Blanking */ } WEX_CMD_t; /* Fault Detection Action select */ typedef enum WEX_FDACT_enum { WEX_FDACT_NONE_gc = (0x00<<0), /* None. Fault Protection Disabled */ WEX_FDACT_LOW_gc = (0x01<<0), /* Drive all pins low */ WEX_FDACT_CUSTOM_gc = (0x03<<0) /* Drive all pins to setting defined by FAULTDRV and FAULTVAL */ } WEX_FDACT_t; /* Fault Detection on Debug Break Detection select */ typedef enum WEX_FDDBD_enum { WEX_FDDBD_FAULT_gc = (0x00<<7), /* OCD Break request is treated as a fault if fault protection is enabled */ WEX_FDDBD_IGNORE_gc = (0x01<<7) /* OCD Breask request will not trigger a fault */ } WEX_FDDBD_t; /* Fault Detection Restart Mode select */ typedef enum WEX_FDMODE_enum { WEX_FDMODE_LATCHED_gc = (0x00<<2), /* Latched Mode. Output will remain in fault state until fault condition is no longer active and FDF is cleared by SW. */ WEX_FDMODE_CBC_gc = (0x01<<2) /* Cycle-by-cycle mode. Waveform output will remain in fault state until fault condition is no longer active. */ } WEX_FDMODE_t; /* Fault Detection State select */ typedef enum WEX_FDSTATE_enum { WEX_FDSTATE_NORMAL_gc = (0x00<<0), /* Normal state */ WEX_FDSTATE_FAULT_gc = (0x01<<0) /* Fault state */ } WEX_FDSTATE_t; /* Fault Event Filter Enable select */ typedef enum WEX_FILTER_enum { WEX_FILTER_ZERO_gc = (0x00<<2), /* No digital filter */ WEX_FILTER_SAMPLE1_gc = (0x01<<2), /* One Sample */ WEX_FILTER_SAMPLE2_gc = (0x02<<2), /* Two Samples */ WEX_FILTER_SAMPLE3_gc = (0x03<<2), /* Three Samples */ WEX_FILTER_SAMPLE4_gc = (0x04<<2), /* Four Samples */ WEX_FILTER_SAMPLE5_gc = (0x05<<2), /* Five Samples */ WEX_FILTER_SAMPLE6_gc = (0x06<<2), /* Six Samples */ WEX_FILTER_SAMPLE7_gc = (0x07<<2) /* Seven Samples */ } WEX_FILTER_t; /* Input Matrix select */ typedef enum WEX_INMX_enum { WEX_INMX_DIRECT_gc = (0x00<<4), /* Direct from TCE0 */ WEX_INMX_CWCMA_gc = (0x02<<4), /* Common Waveform Channel Mode A. Single WO */ WEX_INMX_CWCMB_gc = (0x03<<4) /* Common Waveform Channel Mode B. WO from two PWM channels */ } WEX_INMX_t; /* Update Source select */ typedef enum WEX_UPDSRC_enum { WEX_UPDSRC_TCPWM0_gc = (0x00<<0), /* Timer/Counter for PWM 0 update condition */ WEX_UPDSRC_NONE_gc = (0x03<<0) /* No hardware update condition */ } WEX_UPDSRC_t;