| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- /******************************************************************************
- *
- * @brief providing APIs for configuring ACMP.
- *
- *******************************************************************************
- *
- * provide APIs for configuring ACMP
- ******************************************************************************/
- #include "common.h"
- #include "acmp.h"
- /******************************************************************************
- * Global variables
- ******************************************************************************/
- /******************************************************************************
- * Constants and macros
- ******************************************************************************/
- /******************************************************************************
- * Local types
- ******************************************************************************/
- /******************************************************************************
- * Local function prototypes
- ******************************************************************************/
- /******************************************************************************
- * Local variables
- ******************************************************************************/
- ACMP_CallbackPtr ACMP_Callback[2] = {(ACMP_CallbackPtr)NULL};
- /******************************************************************************
- * Local functions
- ******************************************************************************/
- /******************************************************************************
- * Global functions
- ******************************************************************************/
- void ACMP0_Isr(void);
- void ACMP1_Isr(void);
- /******************************************************************************
- * ACMP api list.
- *
- *//*! @addtogroup acmp_api_list
- * @{
- *******************************************************************************/
- /*****************************************************************************//*!
- *
- * @brief initialize ACMP as per control field.
- *
- * @param pACMPx pointer to an ACMP register base.
- * @param pConfig control parameters.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- * @see ACMP_DeInit.
- *
- *****************************************************************************/
- void ACMP_Init(ACMP_Type *pACMPx, ACMP_ConfigType *pConfig)
- {
- if(ACMP0 == pACMPx)
- {
- /* enable clock to ACMP */
- SIM->SCGC |= SIM_SCGC_ACMP0_MASK;
-
- /* enable ACMP interrupt */
- if(pConfig->sCtrlStatus.bits.bIntEn)
- NVIC_EnableIRQ(ACMP0_IRQn);
- }
- else
- {
- SIM->SCGC |= SIM_SCGC_ACMP1_MASK;
- if(pConfig->sCtrlStatus.bits.bIntEn)
- NVIC_EnableIRQ(ACMP1_IRQn);
- }
- /* neg and pos pin are not equal */
- pACMPx->C0 = pConfig->sPinSelect.byte;
- ACMP_ConfigDAC(pACMPx, &pConfig->sDacSet );
- //pACMPx->C1 = pConfig->sDacSet.byte;
- pACMPx->C2 = pConfig->sPinEnable.byte;
- pACMPx->CS = pConfig->sCtrlStatus.byte;
- }
- /*****************************************************************************//*!
- *
- * @brief write ACMP register bits.
- *
- * @param pACMPx pointer to an ACMP register base.
- * @param pDACConfig pointer to an ACMP DAC control structure.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- *****************************************************************************/
- void ACMP_ConfigDAC(ACMP_Type *pACMPx, ACMP_DACType *pDACConfig)
- {
- pACMPx->C1 = pDACConfig->byte;
- }
- /*****************************************************************************//*!
- *
- * @brief deinit ACMP module.
- *
- * @param pACMPx pointer to an ACMP register base.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- * @see ACMP_Init.
- *
- *****************************************************************************/
- void ACMP_DeInit(ACMP_Type *pACMPx)
- {
- if(ACMP0 == pACMPx)
- {
- if(pACMPx->CS & ACMP_CS_ACIE_MASK)
- NVIC_DisableIRQ(ACMP0_IRQn);
- }
- else
- {
- if(pACMPx->CS & ACMP_CS_ACIE_MASK)
- NVIC_DisableIRQ(ACMP1_IRQn);
- }
-
- pACMPx->CS = 0;
- pACMPx->C0 = 0;
- pACMPx->C1 = 0;
- pACMPx->C2 = 0;
-
- if(ACMP0 == pACMPx)
- {
- SIM->SCGC &= ~SIM_SCGC_ACMP0_MASK;
- }
- else
- {
- SIM->SCGC &= ~SIM_SCGC_ACMP1_MASK;
- }
- }
- /*****************************************************************************//*!
- *
- * @brief set up ACMP callback routines to be called by interrupt service routine.
- *
- * @param pACMPx pointer to an ACMP register base.
- * @param pfnCallback callback routine.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- *****************************************************************************/
- void ACMP_SetCallback(ACMP_Type *pACMPx, ACMP_CallbackPtr pfnCallback)
- {
- if(ACMP0 == pACMPx)
- {
- ACMP_Callback[0] = pfnCallback;
- }
- else
- {
- ACMP_Callback[1] = pfnCallback;
- }
- }
- /*! @} End of acmp_api_list */
- /*****************************************************************************//*!
- *
- * @brief ACMP0 interrupt service routine.
- *
- * @param none.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- *****************************************************************************/
- void ACMP0_Isr(void)
- {
- if(ACMP_Callback[0])
- {
- ACMP_Callback[0](); /* call callback routine */
- }
- }
- /*****************************************************************************//*!
- *
- * @brief ACMP1 interrupt service routine.
- *
- * @param none.
- *
- * @return none.
- *
- * @ Pass/ Fail criteria: none.
- *
- *****************************************************************************/
- void ACMP1_Isr(void)
- {
- if(ACMP_Callback[1])
- {
- ACMP_Callback[1](); /* call callback routine */
- }
- }
|