1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_PWM_V1_H 7 #define _MEC5_PWM_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief Pulse width modulator (MEC_PWM0) 15 */ 16 17 typedef struct mec_pwm_regs { /*!< (@ 0x40005800) MEC_PWM0 Structure */ 18 __IOM uint32_t CNT_ON; /*!< (@ 0x00000000) PWM counter on */ 19 __IOM uint32_t CNT_OFF; /*!< (@ 0x00000004) PWM counter off */ 20 __IOM uint32_t CONFIG; /*!< (@ 0x00000008) PWM configuration */ 21 } MEC_PWM_Type; /*!< Size = 12 (0xc) */ 22 23 /** @} */ /* End of group Device_Peripheral_peripherals */ 24 25 /** @addtogroup PosMask_peripherals 26 * @{ 27 */ 28 /* ======================================================== CONFIG ========================================================= */ 29 #define MEC_PWM_CONFIG_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ 30 #define MEC_PWM_CONFIG_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ 31 #define MEC_PWM_CONFIG_CLK_SRC_SLOW_Pos (1UL) /*!< CLK_SRC_SLOW (Bit 1) */ 32 #define MEC_PWM_CONFIG_CLK_SRC_SLOW_Msk (0x2UL) /*!< CLK_SRC_SLOW (Bitfield-Mask: 0x01) */ 33 #define MEC_PWM_CONFIG_INVERT_Pos (2UL) /*!< INVERT (Bit 2) */ 34 #define MEC_PWM_CONFIG_INVERT_Msk (0x4UL) /*!< INVERT (Bitfield-Mask: 0x01) */ 35 #define MEC_PWM_CONFIG_CLKDIV_Pos (3UL) /*!< CLKDIV (Bit 3) */ 36 #define MEC_PWM_CONFIG_CLKDIV_Msk (0x78UL) /*!< CLKDIV (Bitfield-Mask: 0x0f) */ 37 38 /** @} */ /* End of group PosMask_peripherals */ 39 40 /** @addtogroup EnumValue_peripherals 41 * @{ 42 */ 43 /* ======================================================== CONFIG ========================================================= */ 44 /* ============================================= MEC_PWM CONFIG ENABLE [0..0] ============================================= */ 45 typedef enum { /*!< MEC_PWM_CONFIG_ENABLE */ 46 MEC_PWM_CONFIG_ENABLE_ON = 1, /*!< ON : Enable */ 47 } MEC_PWM_CONFIG_ENABLE_Enum; 48 49 /* ========================================== MEC_PWM CONFIG CLK_SRC_SLOW [1..1] ========================================== */ 50 typedef enum { /*!< MEC_PWM_CONFIG_CLK_SRC_SLOW */ 51 MEC_PWM_CONFIG_CLK_SRC_SLOW_ENABLE = 1, /*!< ENABLE : Use PCR slow clock as PWM source instead of 48MHz AHB 52 clock */ 53 } MEC_PWM_CONFIG_CLK_SRC_SLOW_Enum; 54 55 /* ============================================= MEC_PWM CONFIG INVERT [2..2] ============================================= */ 56 typedef enum { /*!< MEC_PWM_CONFIG_INVERT */ 57 MEC_PWM_CONFIG_INVERT_EN = 1, /*!< EN : Invert output */ 58 } MEC_PWM_CONFIG_INVERT_Enum; 59 60 /* ============================================= MEC_PWM CONFIG CLKDIV [3..6] ============================================= */ 61 typedef enum { /*!< MEC_PWM_CONFIG_CLKDIV */ 62 MEC_PWM_CONFIG_CLKDIV_PR1 = 0, /*!< PR1 : Pre-divider = 1 */ 63 MEC_PWM_CONFIG_CLKDIV_PR2 = 1, /*!< PR2 : Pre-divider = 2 */ 64 MEC_PWM_CONFIG_CLKDIV_PR3 = 2, /*!< PR3 : Pre-divider = 3 */ 65 MEC_PWM_CONFIG_CLKDIV_PR4 = 3, /*!< PR4 : Pre-divider = 4 */ 66 MEC_PWM_CONFIG_CLKDIV_PR5 = 4, /*!< PR5 : Pre-divider = 5 */ 67 MEC_PWM_CONFIG_CLKDIV_PR6 = 5, /*!< PR6 : Pre-divider = 6 */ 68 MEC_PWM_CONFIG_CLKDIV_PR7 = 6, /*!< PR7 : Pre-divider = 7 */ 69 MEC_PWM_CONFIG_CLKDIV_PR8 = 7, /*!< PR8 : Pre-divider = 8 */ 70 MEC_PWM_CONFIG_CLKDIV_PR9 = 8, /*!< PR9 : Pre-divider = 9 */ 71 MEC_PWM_CONFIG_CLKDIV_PR10 = 9, /*!< PR10 : Pre-divider = 10 */ 72 MEC_PWM_CONFIG_CLKDIV_PR11 = 10, /*!< PR11 : Pre-divider = 11 */ 73 MEC_PWM_CONFIG_CLKDIV_PR12 = 11, /*!< PR12 : Pre-divider = 12 */ 74 MEC_PWM_CONFIG_CLKDIV_PR13 = 12, /*!< PR13 : Pre-divider = 13 */ 75 MEC_PWM_CONFIG_CLKDIV_PR14 = 13, /*!< PR14 : Pre-divider = 14 */ 76 MEC_PWM_CONFIG_CLKDIV_PR15 = 14, /*!< PR15 : Pre-divider = 15 */ 77 MEC_PWM_CONFIG_CLKDIV_PR16 = 15, /*!< PR16 : Pre-divider = 16 */ 78 } MEC_PWM_CONFIG_CLKDIV_Enum; 79 80 /** @} */ /* End of group EnumValue_peripherals */ 81 82 #endif /* _MEC5_PWM_V1_H */ 83