| /********************************************************************** | |
| * $Id$ lpc18xx_atimer.c 2011-06-02 | |
| *//** | |
| * @file lpc18xx_atimer.c | |
| * @brief Contains all functions support for Alarm Timer firmware | |
| * library on LPC18xx | |
| * @version 1.0 | |
| * @date 02. June. 2011 | |
| * @author NXP MCU SW Application Team | |
| * | |
| * Copyright(C) 2011, NXP Semiconductor | |
| * All rights reserved. | |
| * | |
| *********************************************************************** | |
| * Software that is described herein is for illustrative purposes only | |
| * which provides customers with programming information regarding the | |
| * products. This software is supplied "AS IS" without any warranties. | |
| * NXP Semiconductors assumes no responsibility or liability for the | |
| * use of the software, conveys no license or title under any patent, | |
| * copyright, or mask work right to the product. NXP Semiconductors | |
| * reserves the right to make changes in the software without | |
| * notification. NXP Semiconductors also make no representation or | |
| * warranty that such application will be suitable for the specified | |
| * use without further testing or modification. | |
| **********************************************************************/ | |
| /* Peripheral group ----------------------------------------------------------- */ | |
| /** @addtogroup ATIMER | |
| * @{ | |
| */ | |
| /* Includes ------------------------------------------------------------------- */ | |
| #include "lpc18xx_atimer.h" | |
| #include "lpc18xx_cgu.h" | |
| /* If this source file built with example, the LPC18xx FW library configuration | |
| * file in each example directory ("lpc18xx_libcfg.h") must be included, | |
| * otherwise the default FW library configuration file must be included instead | |
| */ | |
| #ifdef __BUILD_WITH_EXAMPLE__ | |
| #include "lpc18xx_libcfg.h" | |
| #else | |
| #include "lpc18xx_libcfg_default.h" | |
| #endif /* __BUILD_WITH_EXAMPLE__ */ | |
| #ifdef _ATIMER | |
| /* Private Functions ---------------------------------------------------------- */ | |
| /*********************************************************************//** | |
| * @brief Initial Alarm Timer device | |
| * @param[in] ATIMERx Timer selection, should be: LPC_ATIMER | |
| * @param[in] PresetValue Count of 1/1024s for Alarm | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_Init(LPC_ATIMER_Type *ATIMERx, uint32_t PresetValue) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| //set power | |
| if (ATIMERx== LPC_ATIMER) | |
| { | |
| /*Set Clock Here */ | |
| CGU_EnableEntity(CGU_CLKSRC_32KHZ_OSC, ENABLE); | |
| } | |
| ATIMER_UpdatePresetValue(ATIMERx, PresetValue); | |
| // Clear interrupt pending | |
| ATIMER_ClearIntStatus(ATIMERx); | |
| } | |
| /*********************************************************************//** | |
| * @brief Close ATIMER device | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_DeInit (LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| // Disable atimer | |
| ATIMER_ClearIntStatus(ATIMERx); | |
| ATIMER_IntDisable(ATIMERx); | |
| // Disable power | |
| // if (ATIMERx== LPC_ATIMER0) | |
| // CGU_ConfigPPWR (CGU_PCONP_PCATIMER0, DISABLE); | |
| } | |
| /*********************************************************************//** | |
| * @brief Clear ATIMER Interrupt Status | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_ClearIntStatus(LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| ATIMERx->CLR_STAT = 1; | |
| while((ATIMERx->STATUS & 1) == 1); | |
| } | |
| /*********************************************************************//** | |
| * @brief Set ATIMER Interrupt Status | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_SetIntStatus(LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| ATIMERx->SET_STAT = 1; | |
| while((ATIMERx->STATUS & 1) == 0); | |
| } | |
| /*********************************************************************//** | |
| * @brief Enable ATIMER Interrupt | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_IntEnable(LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| ATIMERx->SET_EN = 1; | |
| while((ATIMERx->ENABLE & 1) == 0); | |
| } | |
| /*********************************************************************//** | |
| * @brief Disable ATIMER Interrupt | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_IntDisable(LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| ATIMERx->CLR_EN = 1; | |
| while((ATIMERx->ENABLE & 1) == 1); | |
| } | |
| /*********************************************************************//** | |
| * @brief Update Preset value | |
| * @param[in] ATIMERx Pointer to timer device, should be: LPC_ATIMER | |
| * @param[in] PresetValue updated preset value | |
| * @return None | |
| **********************************************************************/ | |
| void ATIMER_UpdatePresetValue(LPC_ATIMER_Type *ATIMERx,uint32_t PresetValue) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| ATIMERx->PRESET = PresetValue; | |
| } | |
| /*********************************************************************//** | |
| * @brief Read value of preset register | |
| * @param[in] ATIMERx Pointer to timer/counter device, should be: LPC_ATIMER | |
| * @return Value of capture register | |
| **********************************************************************/ | |
| uint32_t ATIMER_GetPresetValue(LPC_ATIMER_Type *ATIMERx) | |
| { | |
| CHECK_PARAM(PARAM_ATIMERx(ATIMERx)); | |
| return ATIMERx->PRESET; | |
| } | |
| /** | |
| * @} | |
| */ | |
| #endif /* _ATIMER */ | |
| /** | |
| * @} | |
| */ | |
| /* --------------------------------- End Of File ------------------------------ */ |