1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_CTMR_V1_H 7 #define _MEC5_CTMR_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief 16-bit Event Counter/Timer (MEC_CTMR0) 15 */ 16 17 typedef struct mec_ctmr_regs { /*!< (@ 0x40000D00) MEC_CTMR0 Structure */ 18 __IOM uint32_t CTRL; /*!< (@ 0x00000000) 16-bit Event Counter/Timer Control */ 19 __IOM uint32_t CEV_CTRL; /*!< (@ 0x00000004) 16-bit Event Counter/Timer clock and event control */ 20 __IOM uint16_t RELOAD; /*!< (@ 0x00000008) 16-bit Event Counter/Timer reload */ 21 __IM uint16_t RESERVED; 22 __IOM uint16_t COUNT; /*!< (@ 0x0000000C) 16-bit Event Counter/Timer counter(RO) */ 23 __IM uint16_t RESERVED1; 24 } MEC_CTMR_Type; /*!< Size = 16 (0x10) */ 25 26 /** @} */ /* End of group Device_Peripheral_peripherals */ 27 28 /** @addtogroup PosMask_peripherals 29 * @{ 30 */ 31 /* ========================================================= CTRL ========================================================== */ 32 #define MEC_CTMR_CTRL_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ 33 #define MEC_CTMR_CTRL_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ 34 #define MEC_CTMR_CTRL_RESET_Pos (1UL) /*!< RESET (Bit 1) */ 35 #define MEC_CTMR_CTRL_RESET_Msk (0x2UL) /*!< RESET (Bitfield-Mask: 0x01) */ 36 #define MEC_CTMR_CTRL_MODE_Pos (2UL) /*!< MODE (Bit 2) */ 37 #define MEC_CTMR_CTRL_MODE_Msk (0xcUL) /*!< MODE (Bitfield-Mask: 0x03) */ 38 #define MEC_CTMR_CTRL_INPOL_Pos (4UL) /*!< INPOL (Bit 4) */ 39 #define MEC_CTMR_CTRL_INPOL_Msk (0x10UL) /*!< INPOL (Bitfield-Mask: 0x01) */ 40 #define MEC_CTMR_CTRL_CNT_DIR_Pos (5UL) /*!< CNT_DIR (Bit 5) */ 41 #define MEC_CTMR_CTRL_CNT_DIR_Msk (0x20UL) /*!< CNT_DIR (Bitfield-Mask: 0x01) */ 42 #define MEC_CTMR_CTRL_TOUT_EN_Pos (6UL) /*!< TOUT_EN (Bit 6) */ 43 #define MEC_CTMR_CTRL_TOUT_EN_Msk (0x40UL) /*!< TOUT_EN (Bitfield-Mask: 0x01) */ 44 #define MEC_CTMR_CTRL_RLOAD_Pos (7UL) /*!< RLOAD (Bit 7) */ 45 #define MEC_CTMR_CTRL_RLOAD_Msk (0x80UL) /*!< RLOAD (Bitfield-Mask: 0x01) */ 46 #define MEC_CTMR_CTRL_FILT_BYP_Pos (8UL) /*!< FILT_BYP (Bit 8) */ 47 #define MEC_CTMR_CTRL_FILT_BYP_Msk (0x100UL) /*!< FILT_BYP (Bitfield-Mask: 0x01) */ 48 #define MEC_CTMR_CTRL_PD_Pos (9UL) /*!< PD (Bit 9) */ 49 #define MEC_CTMR_CTRL_PD_Msk (0x200UL) /*!< PD (Bitfield-Mask: 0x01) */ 50 #define MEC_CTMR_CTRL_TOUT_POL_Pos (10UL) /*!< TOUT_POL (Bit 10) */ 51 #define MEC_CTMR_CTRL_TOUT_POL_Msk (0x400UL) /*!< TOUT_POL (Bitfield-Mask: 0x01) */ 52 #define MEC_CTMR_CTRL_SLP_EN_Pos (11UL) /*!< SLP_EN (Bit 11) */ 53 #define MEC_CTMR_CTRL_SLP_EN_Msk (0x800UL) /*!< SLP_EN (Bitfield-Mask: 0x01) */ 54 #define MEC_CTMR_CTRL_CLK_REQ_Pos (12UL) /*!< CLK_REQ (Bit 12) */ 55 #define MEC_CTMR_CTRL_CLK_REQ_Msk (0x1000UL) /*!< CLK_REQ (Bitfield-Mask: 0x01) */ 56 /* ======================================================= CEV_CTRL ======================================================== */ 57 #define MEC_CTMR_CEV_CTRL_TCLK_FREQ_Pos (0UL) /*!< TCLK_FREQ (Bit 0) */ 58 #define MEC_CTMR_CEV_CTRL_TCLK_FREQ_Msk (0xfUL) /*!< TCLK_FREQ (Bitfield-Mask: 0x0f) */ 59 #define MEC_CTMR_CEV_CTRL_EDGE_Pos (5UL) /*!< EDGE (Bit 5) */ 60 #define MEC_CTMR_CEV_CTRL_EDGE_Msk (0x60UL) /*!< EDGE (Bitfield-Mask: 0x03) */ 61 #define MEC_CTMR_CEV_CTRL_EVENT_SRC_Pos (7UL) /*!< EVENT_SRC (Bit 7) */ 62 #define MEC_CTMR_CEV_CTRL_EVENT_SRC_Msk (0x80UL) /*!< EVENT_SRC (Bitfield-Mask: 0x01) */ 63 #define MEC_CTMR_CEV_CTRL_FCLK_FREQ_Pos (8UL) /*!< FCLK_FREQ (Bit 8) */ 64 #define MEC_CTMR_CEV_CTRL_FCLK_FREQ_Msk (0xf00UL) /*!< FCLK_FREQ (Bitfield-Mask: 0x0f) */ 65 /** @} */ /* End of group PosMask_peripherals */ 66 67 /** @addtogroup EnumValue_peripherals 68 * @{ 69 */ 70 /* ========================================================= CTRL ========================================================== */ 71 /* ============================================= MEC_CTMR CTRL ENABLE [0..0] ============================================== */ 72 typedef enum { /*!< MEC_CTMR_CTRL_ENABLE */ 73 MEC_CTMR_CTRL_ENABLE_OFF = 0, /*!< OFF : Timer block is off and clocks are gated */ 74 MEC_CTMR_CTRL_ENABLE_ON = 1, /*!< ON : Timer block is off and clocks are ungated */ 75 } MEC_CTMR_CTRL_ENABLE_Enum; 76 77 /* ============================================== MEC_CTMR CTRL RESET [1..1] ============================================== */ 78 typedef enum { /*!< MEC_CTMR_CTRL_RESET */ 79 MEC_CTMR_CTRL_RESET_OFF = 0, /*!< OFF : Self-reset not active */ 80 MEC_CTMR_CTRL_RESET_ON = 1, /*!< ON : Enable timer self-reset */ 81 } MEC_CTMR_CTRL_RESET_Enum; 82 83 /* ============================================== MEC_CTMR CTRL MODE [2..3] =============================================== */ 84 typedef enum { /*!< MEC_CTMR_CTRL_MODE */ 85 MEC_CTMR_CTRL_MODE_TIMER = 0, /*!< TIMER : Timer mode selected */ 86 MEC_CTMR_CTRL_MODE_EVENT = 1, /*!< EVENT : Event mode selected */ 87 MEC_CTMR_CTRL_MODE_ONE_SHOT = 2, /*!< ONE_SHOT : One shot mode selected */ 88 MEC_CTMR_CTRL_MODE_MEAS = 3, /*!< MEAS : Measurement mode selected */ 89 } MEC_CTMR_CTRL_MODE_Enum; 90 91 /* ============================================== MEC_CTMR CTRL INPOL [4..4] ============================================== */ 92 typedef enum { /*!< MEC_CTMR_CTRL_INPOL */ 93 MEC_CTMR_CTRL_INPOL_INVERTED = 1, /*!< INVERTED : TIN input signa polarity is inverted */ 94 } MEC_CTMR_CTRL_INPOL_Enum; 95 96 /* ============================================= MEC_CTMR CTRL CNT_DIR [5..5] ============================================= */ 97 typedef enum { /*!< MEC_CTMR_CTRL_CNT_DIR */ 98 MEC_CTMR_CTRL_CNT_DIR_UP = 1, /*!< UP : Event mode(Count up). Timer mode(pause when TIN de-asserted) */ 99 } MEC_CTMR_CTRL_CNT_DIR_Enum; 100 101 /* ============================================= MEC_CTMR CTRL TOUT_EN [6..6] ============================================= */ 102 typedef enum { /*!< MEC_CTMR_CTRL_TOUT_EN */ 103 MEC_CTMR_CTRL_TOUT_EN_ON = 1, /*!< ON : TOU pin function enabled */ 104 } MEC_CTMR_CTRL_TOUT_EN_Enum; 105 106 /* ============================================== MEC_CTMR CTRL RLOAD [7..7] ============================================== */ 107 typedef enum { /*!< MEC_CTMR_CTRL_RLOAD */ 108 MEC_CTMR_CTRL_RLOAD_EN = 1, /*!< EN : Reload timer from preload register on over/under flow */ 109 } MEC_CTMR_CTRL_RLOAD_Enum; 110 111 /* ============================================ MEC_CTMR CTRL FILT_BYP [8..8] ============================================= */ 112 typedef enum { /*!< MEC_CTMR_CTRL_FILT_BYP */ 113 MEC_CTMR_CTRL_FILT_BYP_EN = 1, /*!< EN : Bypass TIN input filter */ 114 } MEC_CTMR_CTRL_FILT_BYP_Enum; 115 116 /* =============================================== MEC_CTMR CTRL PD [9..9] ================================================ */ 117 typedef enum { /*!< MEC_CTMR_CTRL_PD */ 118 MEC_CTMR_CTRL_PD_EN = 1, /*!< EN : Power down (clock gate) timer */ 119 } MEC_CTMR_CTRL_PD_Enum; 120 121 /* =========================================== MEC_CTMR CTRL TOUT_POL [10..10] ============================================ */ 122 typedef enum { /*!< MEC_CTMR_CTRL_TOUT_POL */ 123 MEC_CTMR_CTRL_TOUT_POL_INVERT = 1, /*!< INVERT : Invert TOUT signal(active low) */ 124 } MEC_CTMR_CTRL_TOUT_POL_Enum; 125 126 /* ============================================ MEC_CTMR CTRL SLP_EN [11..11] ============================================= */ 127 typedef enum { /*!< MEC_CTMR_CTRL_SLP_EN */ 128 MEC_CTMR_CTRL_SLP_EN_ACTIVE = 1, /*!< ACTIVE : Read-only state of Timer's PCR Sleep Enable bit */ 129 } MEC_CTMR_CTRL_SLP_EN_Enum; 130 131 /* ============================================ MEC_CTMR CTRL CLK_REQ [12..12] ============================================ */ 132 typedef enum { /*!< MEC_CTMR_CTRL_CLK_REQ */ 133 MEC_CTMR_CTRL_CLK_REQ_ACTIVE = 1, /*!< ACTIVE : Read-only state of Timer's PCR Clock Required bit */ 134 } MEC_CTMR_CTRL_CLK_REQ_Enum; 135 136 /* ======================================================= CEV_CTRL ======================================================== */ 137 /* ========================================== MEC_CTMR CEV_CTRL TCLK_FREQ [0..3] ========================================== */ 138 typedef enum { /*!< MEC_CTMR_CEV_CTRL_TCLK_FREQ */ 139 MEC_CTMR_CEV_CTRL_TCLK_FREQ_48M = 0, /*!< 48M : Select 48MHz timer clock */ 140 MEC_CTMR_CEV_CTRL_TCLK_FREQ_24M = 1, /*!< 24M : Select 24MHz timer clock */ 141 MEC_CTMR_CEV_CTRL_TCLK_FREQ_12M = 2, /*!< 12M : Select 12MHz timer clock */ 142 MEC_CTMR_CEV_CTRL_TCLK_FREQ_6M = 3, /*!< 6M : Select 6MHz timer clock */ 143 MEC_CTMR_CEV_CTRL_TCLK_FREQ_3M = 4, /*!< 3M : Select 3MHz timer clock */ 144 MEC_CTMR_CEV_CTRL_TCLK_FREQ_1500K = 5, /*!< 1500K : Select 1500KHz timer clock */ 145 MEC_CTMR_CEV_CTRL_TCLK_FREQ_750K = 6, /*!< 750K : Select 750KHz timer clock */ 146 MEC_CTMR_CEV_CTRL_TCLK_FREQ_375K = 7, /*!< 375K : Select 375KHz timer clock */ 147 } MEC_CTMR_CEV_CTRL_TCLK_FREQ_Enum; 148 149 /* ============================================ MEC_CTMR CEV_CTRL EDGE [5..6] ============================================= */ 150 typedef enum { /*!< MEC_CTMR_CEV_CTRL_EDGE */ 151 MEC_CTMR_CEV_CTRL_EDGE_FALLING = 0, /*!< FALLING : Falling edge trigger */ 152 MEC_CTMR_CEV_CTRL_EDGE_RISING = 1, /*!< RISING : Rising edge trigger */ 153 MEC_CTMR_CEV_CTRL_EDGE_BOTH = 2, /*!< BOTH : Trigger on both edges */ 154 MEC_CTMR_CEV_CTRL_EDGE_ONE_SHOT_EN = 3, /*!< ONE_SHOT_EN : Only for One shot mode: trigger when timer enable 155 set */ 156 } MEC_CTMR_CEV_CTRL_EDGE_Enum; 157 158 /* ========================================== MEC_CTMR CEV_CTRL EVENT_SRC [7..7] ========================================== */ 159 typedef enum { /*!< MEC_CTMR_CEV_CTRL_EVENT_SRC */ 160 MEC_CTMR_CEV_CTRL_EVENT_SRC_OVERFLOW = 0, /*!< OVERFLOW : Event mode count source is overflow */ 161 MEC_CTMR_CEV_CTRL_EVENT_SRC_TIN = 1, /*!< TIN : Event mode count source in TIN pin */ 162 } MEC_CTMR_CEV_CTRL_EVENT_SRC_Enum; 163 164 /* ========================================= MEC_CTMR CEV_CTRL FCLK_FREQ [8..11] ========================================== */ 165 typedef enum { /*!< MEC_CTMR_CEV_CTRL_FCLK_FREQ */ 166 MEC_CTMR_CEV_CTRL_FCLK_FREQ_48M = 0, /*!< 48M : Select 48MHz timer clock */ 167 MEC_CTMR_CEV_CTRL_FCLK_FREQ_24M = 1, /*!< 24M : Select 24MHz timer clock */ 168 MEC_CTMR_CEV_CTRL_FCLK_FREQ_12M = 2, /*!< 12M : Select 12MHz timer clock */ 169 MEC_CTMR_CEV_CTRL_FCLK_FREQ_6M = 3, /*!< 6M : Select 6MHz timer clock */ 170 MEC_CTMR_CEV_CTRL_FCLK_FREQ_3M = 4, /*!< 3M : Select 3MHz timer clock */ 171 MEC_CTMR_CEV_CTRL_FCLK_FREQ_1500K = 5, /*!< 1500K : Select 1500KHz timer clock */ 172 MEC_CTMR_CEV_CTRL_FCLK_FREQ_750K = 6, /*!< 750K : Select 750KHz timer clock */ 173 MEC_CTMR_CEV_CTRL_FCLK_FREQ_375K = 7, /*!< 375K : Select 375KHz timer clock */ 174 } MEC_CTMR_CEV_CTRL_FCLK_FREQ_Enum; 175 176 /** @} */ /* End of group EnumValue_peripherals */ 177 178 #endif /* _MEC5_CTMR_V1_H */ 179