| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- /**
- * \file ecap.h
- *
- * \brief This file contains the function prototypes for the device
- * abstraction layer for ECAP. It also contains some
- * related macro definitions and some files to be included.
- */
- /*
- * Copyright (C) 2010 Texas Instruments Incorporated - http://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 "hw_ecap.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPOperatingModeSelect API as modeSelect
- ** to select type operating mode.
- */
- #define ECAP_CAPTURE_MODE 1
- #define ECAP_APWM_MODE 0
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPTimeStampRead API as capEvtFlag
- ** to determine for which capture event time-stamp has to be returned
- */
- #define ECAP_CAPTURE_EVENT_1 0x08
- #define ECAP_CAPTURE_EVENT_2 0x0c
- #define ECAP_CAPTURE_EVENT_3 0x10
- #define ECAP_CAPTURE_EVENT_4 0x14
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPOneShotModeConfig API as stopVal
- ** which determines number of captures allowed to occur before
- ** Capture register(1-4) frozen.\n
- */
- #define ECAP_CAPTURE_EVENT1_STOP (0x00 << ECAP_ECCTL2_STOP_WRAP_SHIFT)
- #define ECAP_CAPTURE_EVENT2_STOP (0x01 << ECAP_ECCTL2_STOP_WRAP_SHIFT)
- #define ECAP_CAPTURE_EVENT3_STOP (0x02 << ECAP_ECCTL2_STOP_WRAP_SHIFT)
- #define ECAP_CAPTURE_EVENT4_STOP (0x03 << ECAP_ECCTL2_STOP_WRAP_SHIFT)
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPAPWMPolarityConfig API as flag
- ** which determines the output polarity for APWM output
- */
- #define ECAP_APWM_ACTIVE_HIGH 0
- #define ECAP_APWM_ACTIVE_LOW 1
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPCounterControl API as flag
- ** which determines whether counter to be configured to stop
- ** or free running
- */
- #define ECAP_COUNTER_STOP 0
- #define ECAP_COUNTER_FREE_RUNNING 1
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPSyncInOutSelect API as syncIn
- ** to disable syncIn or to enable counter to be loaded from
- ** CNTPHS register upon a SYNCI signal
- */
- #define ECAP_SYNC_IN_DISABLE (0 << ECAP_ECCTL2_SYNCI_EN_SHIFT)
- #define ECAP_ENABLE_Counter (1 << ECAP_ECCTL2_SYNCI_EN_SHIFT)
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPSyncInOutSelect API as syncOut
- ** to select syncIn event to be the Sync-Out signal or select
- ** PRD_eq event to be Sync-Out signal or to disaqble syncOut
- ** signal
- */
- #define ECAP_SYNC_IN (00 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)
- #define ECAP_PRD_EQ (01 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)
- #define ECAP_SYNC_OUT_DISABLE (10 << ECAP_ECCTL2_SYNCO_SEL_SHIFT)
-
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPIntEnable/Disable API
- ** to enable or disable interrupt or it can be passed
- ** ECAPIntStatus to get the interrupt or it can be passed
- ** to ECAPIntStatusClear to clear the interrupt status
- */
- #define ECAP_CEVT1_INT ECAP_ECEINT_CEVT1
- #define ECAP_CEVT2_INT ECAP_ECEINT_CEVT2
- #define ECAP_CEVT3_INT ECAP_ECEINT_CEVT3
- #define ECAP_CEVT4_INT ECAP_ECEINT_CEVT4
- #define ECAP_CNTOVF_INT ECAP_ECEINT_CTROVF
- #define ECAP_PRDEQ_INT ECAP_ECEINT_CTR_PRD
- #define ECAP_CMPEQ_INT ECAP_ECEINT_CTR_CMP
- /* It can be passed to ECAPIntStatusClear to clear global interrupt flag */
- #define ECAP_GLOBAL_INT ECAP_ECFLG_INT
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPStandByModeConfig API
- ** to configure ECAP module in different stand by mode.
- **
- */
- #define ECAP_SMART_STAND_BY_WAKE_UP 3
- #define ECAP_FORCE_STAND_BY 0
- #define ECAP_SMART_STAND_BY 2
- #define ECAP_NO_STAND_BY 1
- /****************************************************************************/
- /*
- ** Values that can be passed to ECAPIdleModeConfig API
- ** to configure ECAP module in different Idle mode.
- **
- */
- #define ECAP_SMART_IDLE_WAKE_UP 3
- #define ECAP_SMART_IDLE_MODE 2
- #define ECAP_FORCE_IDLE_MODE 0
- #define ECAP_NO_IDLE_MODE 1
- /*
- ** Structure to save the ECAP context
- */
- typedef struct ecapContext {
- unsigned short ecctl2;
- unsigned short ecclr;
- unsigned short eceint;
- unsigned int pwm0ssclkconfig;
- unsigned int tsctr;
- unsigned int cap1;
- unsigned int cap2;
- }ECAPCONTEXT;
- void ECAPClockStop(unsigned int baseAdd);
- void ECAPClockEnable(unsigned int baseAdd);
- void ECAPOneShotREARM(unsigned int baseAdd);
- void ECAPGlobalIntEnable(unsigned int baseAdd);
- void ECAPContinousModeConfig(unsigned int baseAdd);
- void ECAPCaptureLoadingEnable(unsigned int baseAdd);
- void ECAPCaptureLoadingDisable(unsigned int baseAdd);
- unsigned int ECAPPeripheralIdGet(unsigned int baseAdd);
- unsigned int ECAPClockStopStatusGet(unsigned int baseAdd);
- unsigned int ECAPClockEnableStatusGet(unsigned int baseAdd);
- void ECAPIntEnable(unsigned int baseAdd, unsigned int flag);
- void ECAPIntDisable(unsigned int baseAdd, unsigned int flag);
- void ECAPIntStatusClear(unsigned int baseAdd, unsigned int flag);
- void ECAPCounterControl(unsigned int baseAdd, unsigned int flag);
- void ECAPCounterConfig(unsigned int baseAdd, unsigned int countVal);
- unsigned int ECAPIntStatus(unsigned int baseAdd, unsigned int flag);
- void ECAPAPWMPolarityConfig(unsigned int baseAdd, unsigned int flag);
- void ECAPSyncInOutSelect(unsigned int baseAdd, unsigned int syncIn,
- unsigned int syncOut);
- void ECAPPrescaleConfig(unsigned int baseAdd, unsigned int prescale);
- void ECAPOneShotModeConfig(unsigned int baseAdd, unsigned int stopVal);
- void ECAPAPWMCaptureConfig(unsigned int baseAdd, unsigned int compareVal,
- unsigned int periodVal);
- void ECAPAPWMShadowCaptureConfig(unsigned int baseAdd, unsigned int compareVal,
- unsigned int periodVal);
- void ECAPOperatingModeSelect(unsigned int baseAdd, unsigned int modeSelect);
- unsigned int ECAPTimeStampRead(unsigned int baseAdd, unsigned int capEvtFlag);
- void ECAPCounterPhaseValConfig(unsigned int baseAdd, unsigned int cntPhaseVal);
- void ECAPCapeEvtPolarityConfig(unsigned int baseAdd, unsigned int capEvt1pol,
- unsigned int capEvt2pol, unsigned int capEvt3pol,
- unsigned int capEvt4pol);
- void ECAPCaptureEvtCntrRstConfig(unsigned int baseAdd, unsigned int CounterRst1,
- unsigned int CounterRst2,unsigned int CounterRst3,
- unsigned int CounterRst4);
- void ECAPClockEnable(unsigned int baseAdd);
- void ECAPClockDisable(unsigned int baseAdd);
- unsigned int ECAPClockEnableStatusGet(unsigned int baseAdd);
- unsigned int ECAPClockDisableStatusGet(unsigned int baseAdd);
- extern void EcapContextSave(unsigned int ecapBase, unsigned int pwmssBase,
- ECAPCONTEXT *contextPtr);
- extern void EcapContextRestore(unsigned int ecapBase, unsigned int pwmssBase,
- ECAPCONTEXT *contextPtr);
- #endif
|