summaryrefslogtreecommitdiff
path: root/include/arch/rm46l8lp/halcogen/ecap.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/arch/rm46l8lp/halcogen/ecap.h')
-rw-r--r--include/arch/rm46l8lp/halcogen/ecap.h260
1 files changed, 260 insertions, 0 deletions
diff --git a/include/arch/rm46l8lp/halcogen/ecap.h b/include/arch/rm46l8lp/halcogen/ecap.h
new file mode 100644
index 0000000..dd76b8c
--- /dev/null
+++ b/include/arch/rm46l8lp/halcogen/ecap.h
@@ -0,0 +1,260 @@
+/** @file ecap.h
+* @brief ECAP Driver Header File
+* @date 11-Dec-2018
+* @version 04.07.01
+*
+* This file contains:
+* - Definitions
+* - Types
+* - Interface Prototypes
+* .
+* which are relevant for the ECAP driver.
+*/
+
+/*
+* Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com
+*
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of Texas Instruments Incorporated nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+
+
+#ifndef __ECAP_H__
+#define __ECAP_H__
+
+#include "reg_ecap.h"
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* USER CODE BEGIN (0) */
+/* USER CODE END */
+/** @brief Enumeration to define the capture (CAP) interrupts
+*/
+typedef enum
+{
+ ecapInt_CTR_CMP = 0x0080U, /*< Denotes CTR = CMP interrupt */
+ ecapInt_CTR_PRD = 0x0040U, /*< Denotes CTR = PRD interrupt */
+ ecapInt_CTR_OVF = 0x0020U, /*< Denotes CTROVF interrupt */
+ ecapInt_CEVT4 = 0x0010U, /*< Denotes CEVT4 interrupt */
+ ecapInt_CEVT3 = 0x0008U, /*< Denotes CEVT3 interrupt */
+ ecapInt_CEVT2 = 0x0004U, /*< Denotes CEVT2 interrupt */
+ ecapInt_CEVT1 = 0x0002U, /*< Denotes CEVT1 interrupt */
+ ecapInt_Global = 0x0001U, /*< Denotes Capture global interrupt */
+ ecapInt_All = 0x00FFU /*< Denotes All interrupts */
+} ecapInterrupt_t;
+
+/** @brief Enumeration to define the capture (CAP) prescaler values
+*/
+typedef enum
+{
+ ecapPrescale_By_1 = ((uint16)0U << 9U), /*< Divide by 1 */
+ ecapPrescale_By_2 = ((uint16)1U << 9U), /*< Divide by 2 */
+ ecapPrescale_By_4 = ((uint16)2U << 9U), /*< Divide by 4 */
+ ecapPrescale_By_6 = ((uint16)3U << 9U), /*< Divide by 6 */
+ ecapPrescale_By_8 = ((uint16)4U << 9U), /*< Divide by 8 */
+ ecapPrescale_By_10 = ((uint16)5U << 9U), /*< Divide by 10 */
+ ecapPrescale_By_12 = ((uint16)6U << 9U), /*< Divide by 12 */
+ ecapPrescale_By_14 = ((uint16)7U << 9U), /*< Divide by 14 */
+ ecapPrescale_By_16 = ((uint16)8U << 9U), /*< Divide by 16 */
+ ecapPrescale_By_18 = ((uint16)9U << 9U), /*< Divide by 18 */
+ ecapPrescale_By_20 = ((uint16)10U << 9U), /*< Divide by 20 */
+ ecapPrescale_By_22 = ((uint16)11U << 9U), /*< Divide by 22 */
+ ecapPrescale_By_24 = ((uint16)12U << 9U), /*< Divide by 24 */
+ ecapPrescale_By_26 = ((uint16)13U << 9U), /*< Divide by 26 */
+ ecapPrescale_By_28 = ((uint16)14U << 9U), /*< Divide by 28 */
+ ecapPrescale_By_30 = ((uint16)15U << 9U), /*< Divide by 30 */
+ ecapPrescale_By_32 = ((uint16)16U << 9U), /*< Divide by 32 */
+ ecapPrescale_By_34 = ((uint16)17U << 9U), /*< Divide by 34 */
+ ecapPrescale_By_36 = ((uint16)18U << 9U), /*< Divide by 36 */
+ ecapPrescale_By_38 = ((uint16)19U << 9U), /*< Divide by 38 */
+ ecapPrescale_By_40 = ((uint16)20U << 9U), /*< Divide by 40 */
+ ecapPrescale_By_42 = ((uint16)21U << 9U), /*< Divide by 42 */
+ ecapPrescale_By_44 = ((uint16)22U << 9U), /*< Divide by 44 */
+ ecapPrescale_By_46 = ((uint16)23U << 9U), /*< Divide by 46 */
+ ecapPrescale_By_48 = ((uint16)24U << 9U), /*< Divide by 48 */
+ ecapPrescale_By_50 = ((uint16)25U << 9U), /*< Divide by 50 */
+ ecapPrescale_By_52 = ((uint16)26U << 9U), /*< Divide by 52 */
+ ecapPrescale_By_54 = ((uint16)27U << 9U), /*< Divide by 54 */
+ ecapPrescale_By_56 = ((uint16)28U << 9U), /*< Divide by 56 */
+ ecapPrescale_By_58 = ((uint16)29U << 9U), /*< Divide by 58 */
+ ecapPrescale_By_60 = ((uint16)30U << 9U), /*< Divide by 60 */
+ ecapPrescale_By_62 = ((uint16)31U << 9U) /*< Divide by 62 */
+} ecapPrescale_t;
+
+/** @brief Enumeration to define the Sync Out options
+*/
+typedef enum
+{
+ SyncOut_SyncIn = ((uint16)0U << 6U), /*< Sync In used for Sync Out */
+ SyncOut_CTRPRD = ((uint16)1U << 6U), /*< CTR = PRD used for Sync Out */
+ SyncOut_None = ((uint16)2U << 6U) /*< Disables Sync Out */
+} ecapSyncOut_t;
+
+/** @brief Enumeration to define the Polarity
+*/
+typedef enum
+{
+ RISING_EDGE = 0U,
+ FALLING_EDGE = 1U
+}ecapEdgePolarity_t;
+
+typedef enum
+{
+ ACTIVE_HIGH = 0U,
+ ACTIVE_LOW = 1U
+}ecapAPWMPolarity_t;
+
+/** @brief Enumeration to define the Mode of operation
+*/
+typedef enum
+{
+ CONTINUOUS = 0U,
+ ONE_SHOT = 1U
+}ecapMode_t;
+
+/** @brief Enumeration to define the capture events
+*/
+typedef enum
+{
+ CAPTURE_EVENT1 = 0U,
+ CAPTURE_EVENT2 = 1U,
+ CAPTURE_EVENT3 = 2U,
+ CAPTURE_EVENT4 = 3U
+}ecapEvent_t ;
+
+typedef enum
+{
+ RESET_ENABLE = 1U,
+ RESET_DISABLE = 0U
+}ecapReset_t ;
+
+typedef struct ecap_config_reg
+ {
+ uint32 CONFIG_CTRPHS;
+ uint16 CONFIG_ECCTL1;
+ uint16 CONFIG_ECCTL2;
+ uint16 CONFIG_ECEINT;
+}ecap_config_reg_t;
+
+#define ECAP1_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP1_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP1_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP1_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+#define ECAP2_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP2_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP2_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP2_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+#define ECAP3_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP3_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP3_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP3_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+#define ECAP4_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP4_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP4_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP4_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+#define ECAP5_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP5_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP5_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP5_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+#define ECAP6_CTRPHS_CONFIGVALUE 0x00000000U
+#define ECAP6_ECCTL1_CONFIGVALUE ((uint16)((uint16)RISING_EDGE << 0U) | (uint16)((uint16)RESET_DISABLE << 1U) | (uint16)((uint16)RISING_EDGE << 2U) | (uint16)((uint16)RESET_DISABLE << 3U) | (uint16)((uint16)RISING_EDGE << 4U)| (uint16)((uint16)RESET_DISABLE << 5U) | (uint16)((uint16)RISING_EDGE << 6U) | (uint16)((uint16)RESET_DISABLE << 7U) | (uint16)((uint16)0U << 8U) | (uint16)((uint16)0U << 9U))
+#define ECAP6_ECCTL2_CONFIGVALUE ((uint16)((uint16)ONE_SHOT << 0U) | (uint16)((uint16)CAPTURE_EVENT1 << 1U) | (uint16)((uint16)0U << 9U) | (uint16)0x00000010U)
+#define ECAP6_ECEINT_CONFIGVALUE (0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U | 0x0000U)
+
+/**
+ * @defgroup eCAP eCAP
+ * @brief Enhanced Capture Module.
+ *
+ * The enhanced Capture (eCAP) module is essential in systems where accurate timing of external events is
+ * important. This microcontroller implements 6 instances of the eCAP module.
+ *
+ * Related Files
+ * - reg_ecap.h
+ * - ecap.h
+ * - ecap.c
+ * @addtogroup eCAP
+ * @{
+ */
+void ecapInit(void);
+void ecapSetCounter(ecapBASE_t *ecap, uint32 value);
+void ecapEnableCounterLoadOnSync(ecapBASE_t *ecap, uint32 phase);
+void ecapDisableCounterLoadOnSync(ecapBASE_t *ecap);
+void ecapSetEventPrescaler(ecapBASE_t *ecap, ecapPrescale_t prescale);
+void ecapSetCaptureEvent1(ecapBASE_t *ecap, ecapEdgePolarity_t edgePolarity, ecapReset_t resetenable);
+void ecapSetCaptureEvent2(ecapBASE_t *ecap, ecapEdgePolarity_t edgePolarity, ecapReset_t resetenable);
+void ecapSetCaptureEvent3(ecapBASE_t *ecap, ecapEdgePolarity_t edgePolarity, ecapReset_t resetenable);
+void ecapSetCaptureEvent4(ecapBASE_t *ecap, ecapEdgePolarity_t edgePolarity, ecapReset_t resetenable);
+void ecapSetCaptureMode(ecapBASE_t *ecap, ecapMode_t capMode, ecapEvent_t event);
+void ecapEnableCapture(ecapBASE_t *ecap);
+void ecapDisableCapture(ecapBASE_t *ecap);
+void ecapStartCounter(ecapBASE_t *ecap);
+void ecapStopCounter(ecapBASE_t *ecap);
+void ecapSetSyncOut(ecapBASE_t *ecap, ecapSyncOut_t syncOutSrc);
+void ecapEnableAPWMmode(ecapBASE_t *ecap, ecapAPWMPolarity_t pwmPolarity, uint32 period, uint32 duty);
+void ecapDisableAPWMMode(ecapBASE_t *ecap);
+void ecapEnableInterrupt(ecapBASE_t *ecap, ecapInterrupt_t interrupts);
+void ecapDisableInterrupt(ecapBASE_t *ecap, ecapInterrupt_t interrupts);
+uint16 ecapGetEventStatus(ecapBASE_t *ecap, ecapInterrupt_t events);
+void ecapClearFlag(ecapBASE_t *ecap, ecapInterrupt_t events);
+uint32 ecapGetCAP1(ecapBASE_t *ecap);
+uint32 ecapGetCAP2(ecapBASE_t *ecap);
+uint32 ecapGetCAP3(ecapBASE_t *ecap);
+uint32 ecapGetCAP4(ecapBASE_t *ecap);
+void ecap1GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+void ecap2GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+void ecap3GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+void ecap4GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+void ecap5GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+void ecap6GetConfigValue(ecap_config_reg_t *config_reg, config_value_type_t type);
+
+/** @brief Interrupt callback
+* @param[in] ecap Handle to CAP object
+* @param[in] flags Copy of interrupt flags
+*/
+void ecapNotification(ecapBASE_t *ecap,uint16 flags);
+
+/**@}*/
+
+#ifdef __cplusplus
+}
+#endif /*extern "C" */
+
+/* USER CODE BEGIN (1) */
+/* USER CODE END */
+#endif /*end of _CAP_H_ definition */