/** ****************************************************************************** * @file stm8l10x_comp.c * @brief This file contains all the functions for the COMP peripheral. * @author STMicroelectronics - MCD Application Team * @version V1.1.0 * @date 09/14/2009 ****************************************************************************** * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2009 STMicroelectronics

* @image html logo.bmp ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "stm8l10x_comp.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /** * @addtogroup COMP_Public_Functions * @{ */ /** * @brief Deinitializes the COMP peripheral registers to their default reset values. * @par Parameters: * None * @retval None */ void COMP_DeInit(void) { COMP->CR = COMP_CR_RESET_VALUE; COMP->CSR = COMP_CSR_RESET_VALUE; COMP->CCS = COMP_CCS_RESET_VALUE; } /** * @brief Initializes the COMP according to the specified parameters * @param[in] COMP_Selection : The state of the COMP peripheral. * This parameter can be any of the @Ref COMP_Selection_TypeDef enumeration. * @param[in] COMP_Reference : The reference of the comparison * This parameter can be any of the @Ref COMP_Reference_TypeDef enumeration. * @param[in] COMP_Polarity : The desired comparator polarity * This parameter can be any of the @Ref COMP_Polarity_TypeDef enumeration. * @retval None * @par Required preconditions: * The function @ref COMP_Cmd() should be called to set the BIASEN bit in COMP_CR register, first. */ void COMP_Init(COMP_Selection_TypeDef COMP_Selection, COMP_Reference_TypeDef COMP_Reference, COMP_Polarity_TypeDef COMP_Polarity) { /* Check the parameters */ assert_param(IS_COMP_POLARITY(COMP_Polarity)); assert_param(IS_COMP_REFERENCE(COMP_Reference)); assert_param(IS_COMP_SELECTION(COMP_Selection)); COMP->CR &= (uint8_t)(~((uint8_t)COMP_Polarity|(uint8_t)COMP_Reference|(uint8_t)COMP_Selection)); /* Set the Configuration */ COMP->CR |= (uint8_t)((uint8_t)COMP_Polarity|(uint8_t)COMP_Reference|(uint8_t)COMP_Selection); } /** * @brief Enables or disables the COMP. * @param[in] NewState : The New state of the COMP peripheral. * This parameter can be any of the @ref FunctionalState enumeration. * @retval None * @par Required conditions: * this function must be used 4 µs before the function @ref COMP_SelectionConfig. */ void COMP_Cmd(FunctionalState NewState) { /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(NewState)); if (NewState != DISABLE) { /* set BIAS_EN */ COMP->CR |= COMP_CR_BIASEN; } else /* NewState == DISABLE */ { COMP->CR &= (uint8_t)(~COMP_CR_BIASEN); } } /** * @brief Enables or disables the desired COMP peripheral. * @param[in] COMP_Selection : The State of the COMP peripheral. * This parameter can be any of the @Ref COMP_Selection_TypeDef enumeration. * @param[in] NewState : The new state of the COMP peripheral. * This parameter can be any of the @ref FunctionalState enumeration. * @retval None * @par Required preconditions: * BIAS bit should be set 4µs before enabling the comparators. */ void COMP_SelectionConfig(COMP_Selection_TypeDef COMP_Selection, FunctionalState NewState) { /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(NewState)); assert_param(IS_COMP_SELECTION(COMP_Selection)); if (NewState != DISABLE) { COMP->CR |= (uint8_t)COMP_Selection; } else /* NewState == DISABLE */ { COMP->CR &= (uint8_t)(~(uint8_t)COMP_Selection); } } /** * @brief Enables or disables the specified COMP interrupts. * @param[in] COMP_IT : Specifies the COMP interrupts source. * This parameter can be any of the @Ref COMP_IT_TypeDef enumeration. * @param[in] NewState : The new state of the COMP peripheral. * This parameter can be any of the @ref FunctionalState enumeration. * @retval None */ void COMP_ITConfig(COMP_IT_TypeDef COMP_IT, FunctionalState NewState) { /* Check the parameters */ assert_param(IS_COMP_IT(COMP_IT)); assert_param(IS_FUNCTIONAL_STATE(NewState)); if (NewState != DISABLE) { /* Enable the Interrupt sources */ COMP->CSR |= (uint8_t)COMP_IT; } else { /* Disable the Interrupt sources */ COMP->CSR &= (uint8_t)(~(uint8_t)COMP_IT); } } /** * @brief Selection between Timer1 input capture1 or Timer1 break for first comparator output. * @param[in] COMP_TIM2Config : The TIM configartionfor first comparator output. * This parameter can be any of the @Ref COMP_TIM2Config_TypeDef enumeration. * @retval None */ void COMP_TIM2Config(COMP_TIM2Config_TypeDef COMP_TIM2Config) { /* Check the parameters */ assert_param(IS_COMP_TIM2CONFIG(COMP_TIM2Config)); /* Clear the IC1_BK bit*/ COMP->CR &= (uint8_t)(~(uint8_t)COMP_CR_IC1BK); /* Configure the IC1_BK bit */ COMP->CR |= (uint8_t)COMP_TIM2Config; } /** * @brief Enables or disables the specified Switch. * @param[in] NewState : The new state of the COMP peripheral. * This parameter can be any of the @ref FunctionalState enumeration. * @param[in] COMP_Switch : Specifies the COMP SWITCH to be enabled or disabled. * This parameter can be any of the @Ref COMP_Switch_TypeDef enumeration. * @retval None */ void COMP_SwitchConfig(COMP_Switch_TypeDef COMP_Switch, FunctionalState NewState) { /* Check the parameters */ assert_param(IS_COMP_SWITCH(COMP_Switch)); assert_param(IS_FUNCTIONAL_STATE(NewState)); if (NewState != DISABLE) { /* Enable the switch */ COMP->CCS |= (uint8_t)COMP_Switch; } else { /* Disable the Switch */ COMP->CCS &= (uint8_t)(~(uint8_t)COMP_Switch); } } /** * @brief Selects the COMP peripheral Output Connection with Timers peripheral inputs. * @param[in] COMP_TIMConnection : The TIM connection configuration. * This parameter can be any of the @Ref COMP_TimersConnection_TypeDef enumeration. * @retval None */ void COMP_TIMConnect(COMP_TimersConnection_TypeDef COMP_TIMConnection) { /* Check the parameters */ assert_param(IS_COMP_TIMCONNECTION(COMP_TIMConnection)); /* Clear the TIM connection configuration bits */ COMP->CR &= (uint8_t)(~(uint8_t)COMP_CR_CNFTIM); /* Configure the TIM connection */ COMP->CR |= (uint8_t)COMP_TIMConnection; } /** * @brief Selects the polarity of both comparators. * @param[in] COMP_Polarity : The desired comparator polarity * This parameter can be any of the @Ref COMP_Polarity_TypeDef enumeration. * @retval None */ void COMP_SelectPolarity(COMP_Polarity_TypeDef COMP_Polarity) { /* Check the parameters */ assert_param(IS_COMP_POLARITY(COMP_Polarity)); /* Clear Polarity bit */ COMP->CR &= (uint8_t)(~(uint8_t)COMP_CR_POL); /* Write the polarity */ COMP->CR |= (uint8_t)COMP_Polarity; } /** * @brief Selects the internal or external reference of both comparators. * @param[in] COMP_Reference : The desired comparator reference. * This parameter can be any of the @Ref COMP_Reference_TypeDef enumeration. * @retval None */ void COMP_SetReference(COMP_Reference_TypeDef COMP_Reference) { /* Check the parameters */ assert_param(IS_COMP_REFERENCE(COMP_Reference)); /* Clear Polarity bit */ COMP->CR &= (uint8_t)(~(uint8_t)COMP_CR_COMPREF); /* Write the polarity */ COMP->CR |= (uint8_t)COMP_Reference; } /** * @brief Checks whether the specified COMP output is set or not. * @param[in] COMP_Output : specifies the output to check. * This parameter can be any of the @Ref COMP_Output_TypeDef enumeration. * @retval FlagStatus : The new state of Output. * This parameter can be any of the @ref FlagStatus enumeration. */ FlagStatus COMP_GetOutputStatus(COMP_Output_TypeDef COMP_Output) { FlagStatus status = RESET; /* Check the parameters */ assert_param(IS_COMP_OUTPUT(COMP_Output)); if ((COMP->CSR & (uint8_t)COMP_Output) != 0) { status = SET; } else { status = RESET; } return status; } /** * @brief Checks whether the specified COMP flag is set or not. * @param[in] COMP_Flag : Specifies the flag to check. * This parameter can be any of the @Ref COMP_FLAG_TypeDef enumeration. * @retval FlagStatus : The new state of Flag. * This parameter can be any of the @ref FlagStatus enumeration. */ FlagStatus COMP_GetFlagStatus(COMP_FLAG_TypeDef COMP_Flag) { FlagStatus status = RESET; /* Check the parameters */ assert_param(IS_COMP_FLAG(COMP_Flag)); if ((COMP->CSR & (uint8_t)COMP_Flag) != 0) { status = SET; } else { status = RESET; } return status; } /** * @brief Clears the specified COMP’s flag. * @param[in] COMP_Flag : Specifies the flag to clear. * This parameter can be any of the @Ref COMP_FLAG_TypeDef enumeration. * @retval None */ void COMP_ClearFlag(COMP_FLAG_TypeDef COMP_Flag) { /* Check the parameters */ assert_param(IS_COMP_FLAG(COMP_Flag)); /* Clear the flags (rc_w0) clear this bit by writing 1. Writing ‘0’ has no effect*/ COMP->CSR |= (uint8_t)COMP_Flag; } /** * @brief Checks whether the COMP interrupt has occurred or not. * @param[in] COMP_ITPendingBit : Specifies the COMP interrupt source to check. * This parameter can be any of the @Ref COMP_ITPendingBit_TypeDef enumeration. * @retval ITStatus : The new state of the COMP_IT. * This parameter can be any of the @ref ITStatus enumeration. */ ITStatus COMP_GetITStatus(COMP_IT_TypeDef COMP_ITPendingBit) { ITStatus status = RESET; /* Check the parameters */ assert_param(IS_COMP_ITPENDINGBIT(COMP_ITPendingBit)); if (COMP->CSR & (uint8_t)COMP_ITPendingBit) { status = SET; } else { status = RESET; } return status; } /** * @brief Clears the COMP’s pending bits. * @param[in] ITPendingBit : Specifies the peding bit to clear. * This parameter can be any of the @Ref COMP_ITPendingBit_TypeDef enumeration. * @retval None */ void COMP_ClearITPendingBit(COMP_IT_TypeDef COMP_ITPendingBit) { /* Check the parameters */ assert_param(IS_COMP_ITPENDINGBIT(COMP_ITPendingBit)); /* Clear the flags (rc_w0) clear this bit by writing 1. Writing ‘0’ has no effect*/ COMP->CSR |= (uint8_t)COMP_ITPendingBit; } /** * @} */ /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/