added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Fri Jan 15 07:45:16 2016 +0000
Revision:
50:a417edff4437
Synchronized with git revision 6010f32619bfcbb01cc73747d4ff9040863482d9

Full URL: https://github.com/mbedmicro/mbed/commit/6010f32619bfcbb01cc73747d4ff9040863482d9/

Remove doubling of buffer size in realiseEndpoint()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 50:a417edff4437 1 /***************************************************************************//**
mbed_official 50:a417edff4437 2 * @file
mbed_official 50:a417edff4437 3 * @brief Real Time Counter with Calendar (RTCC) Peripheral API
mbed_official 50:a417edff4437 4 * @version 4.2.1
mbed_official 50:a417edff4437 5 *******************************************************************************
mbed_official 50:a417edff4437 6 * @section License
mbed_official 50:a417edff4437 7 * <b>(C) Copyright 2015 Silicon Labs, http://www.silabs.com</b>
mbed_official 50:a417edff4437 8 *******************************************************************************
mbed_official 50:a417edff4437 9 *
mbed_official 50:a417edff4437 10 * Permission is granted to anyone to use this software for any purpose,
mbed_official 50:a417edff4437 11 * including commercial applications, and to alter it and redistribute it
mbed_official 50:a417edff4437 12 * freely, subject to the following restrictions:
mbed_official 50:a417edff4437 13 *
mbed_official 50:a417edff4437 14 * 1. The origin of this software must not be misrepresented; you must not
mbed_official 50:a417edff4437 15 * claim that you wrote the original software.
mbed_official 50:a417edff4437 16 * 2. Altered source versions must be plainly marked as such, and must not be
mbed_official 50:a417edff4437 17 * misrepresented as being the original software.
mbed_official 50:a417edff4437 18 * 3. This notice may not be removed or altered from any source distribution.
mbed_official 50:a417edff4437 19 *
mbed_official 50:a417edff4437 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
mbed_official 50:a417edff4437 21 * obligation to support this Software. Silicon Labs is providing the
mbed_official 50:a417edff4437 22 * Software "AS IS", with no express or implied warranties of any kind,
mbed_official 50:a417edff4437 23 * including, but not limited to, any implied warranties of merchantability
mbed_official 50:a417edff4437 24 * or fitness for any particular purpose or warranties against infringement
mbed_official 50:a417edff4437 25 * of any proprietary rights of a third party.
mbed_official 50:a417edff4437 26 *
mbed_official 50:a417edff4437 27 * Silicon Labs will not be liable for any consequential, incidental, or
mbed_official 50:a417edff4437 28 * special damages, or any other relief, or for any claim by any third party,
mbed_official 50:a417edff4437 29 * arising from your use of this Software.
mbed_official 50:a417edff4437 30 *
mbed_official 50:a417edff4437 31 ******************************************************************************/
mbed_official 50:a417edff4437 32
mbed_official 50:a417edff4437 33 #include "em_rtcc.h"
mbed_official 50:a417edff4437 34 #if defined( RTCC_COUNT ) && ( RTCC_COUNT == 1 )
mbed_official 50:a417edff4437 35 #include "em_bus.h"
mbed_official 50:a417edff4437 36
mbed_official 50:a417edff4437 37 /***************************************************************************//**
mbed_official 50:a417edff4437 38 * @addtogroup EM_Library
mbed_official 50:a417edff4437 39 * @{
mbed_official 50:a417edff4437 40 ******************************************************************************/
mbed_official 50:a417edff4437 41
mbed_official 50:a417edff4437 42 /***************************************************************************//**
mbed_official 50:a417edff4437 43 * @addtogroup RTCC
mbed_official 50:a417edff4437 44 * @brief Real Time Counter (RTCC) Peripheral API
mbed_official 50:a417edff4437 45 * @{
mbed_official 50:a417edff4437 46 ******************************************************************************/
mbed_official 50:a417edff4437 47
mbed_official 50:a417edff4437 48 /*******************************************************************************
mbed_official 50:a417edff4437 49 ******************************* DEFINES ***********************************
mbed_official 50:a417edff4437 50 ******************************************************************************/
mbed_official 50:a417edff4437 51
mbed_official 50:a417edff4437 52 /*******************************************************************************
mbed_official 50:a417edff4437 53 ************************** LOCAL FUNCTIONS ********************************
mbed_official 50:a417edff4437 54 ******************************************************************************/
mbed_official 50:a417edff4437 55
mbed_official 50:a417edff4437 56 /*******************************************************************************
mbed_official 50:a417edff4437 57 ************************** GLOBAL FUNCTIONS *******************************
mbed_official 50:a417edff4437 58 ******************************************************************************/
mbed_official 50:a417edff4437 59
mbed_official 50:a417edff4437 60 /***************************************************************************//**
mbed_official 50:a417edff4437 61 * @brief
mbed_official 50:a417edff4437 62 * Configure the selected capture/compare channel of the RTCC.
mbed_official 50:a417edff4437 63 *
mbed_official 50:a417edff4437 64 * @details
mbed_official 50:a417edff4437 65 * Use this function to configure a RTCC channel.
mbed_official 50:a417edff4437 66 * Select capture/compare mode, match output action, overflow output action
mbed_official 50:a417edff4437 67 * and PRS input configuration.
mbed_official 50:a417edff4437 68 * Refer to the configuration structure @ref RTCC_CCChConf_TypeDef for more
mbed_official 50:a417edff4437 69 * details.
mbed_official 50:a417edff4437 70 *
mbed_official 50:a417edff4437 71 * @param[in] ch
mbed_official 50:a417edff4437 72 * Channel selector.
mbed_official 50:a417edff4437 73 *
mbed_official 50:a417edff4437 74 * @param[in] confPtr
mbed_official 50:a417edff4437 75 * Pointer to configuration structure.
mbed_official 50:a417edff4437 76 ******************************************************************************/
mbed_official 50:a417edff4437 77 void RTCC_ChannelInit( int ch, RTCC_CCChConf_TypeDef const *confPtr )
mbed_official 50:a417edff4437 78 {
mbed_official 50:a417edff4437 79 EFM_ASSERT( RTCC_CH_VALID( ch ) );
mbed_official 50:a417edff4437 80 EFM_ASSERT( (uint32_t)confPtr->compMask
mbed_official 50:a417edff4437 81 < ( _RTCC_CC_CTRL_COMPMASK_MASK >> _RTCC_CC_CTRL_COMPMASK_SHIFT )
mbed_official 50:a417edff4437 82 + 1 );
mbed_official 50:a417edff4437 83
mbed_official 50:a417edff4437 84 /** Configure the selected capture/compare channel. */
mbed_official 50:a417edff4437 85 RTCC->CC[ch].CTRL = ( (uint32_t)confPtr->chMode << _RTCC_CC_CTRL_MODE_SHIFT )
mbed_official 50:a417edff4437 86 | ( (uint32_t)confPtr->compMatchOutAction << _RTCC_CC_CTRL_CMOA_SHIFT )
mbed_official 50:a417edff4437 87 | ( (uint32_t)confPtr->prsSel << _RTCC_CC_CTRL_PRSSEL_SHIFT )
mbed_official 50:a417edff4437 88 | ( (uint32_t)confPtr->inputEdgeSel << _RTCC_CC_CTRL_ICEDGE_SHIFT )
mbed_official 50:a417edff4437 89 | ( (uint32_t)confPtr->compBase << _RTCC_CC_CTRL_COMPBASE_SHIFT )
mbed_official 50:a417edff4437 90 | ( (uint32_t)confPtr->compMask << _RTCC_CC_CTRL_COMPMASK_SHIFT )
mbed_official 50:a417edff4437 91 | ( (uint32_t)confPtr->dayCompMode << _RTCC_CC_CTRL_DAYCC_SHIFT );
mbed_official 50:a417edff4437 92 }
mbed_official 50:a417edff4437 93
mbed_official 50:a417edff4437 94 /***************************************************************************//**
mbed_official 50:a417edff4437 95 * @brief
mbed_official 50:a417edff4437 96 * Enable/disable RTCC.
mbed_official 50:a417edff4437 97 *
mbed_official 50:a417edff4437 98 * @param[in] enable
mbed_official 50:a417edff4437 99 * True to enable RTCC, false to disable.
mbed_official 50:a417edff4437 100 ******************************************************************************/
mbed_official 50:a417edff4437 101 void RTCC_Enable( bool enable )
mbed_official 50:a417edff4437 102 {
mbed_official 50:a417edff4437 103 /* Bitbanding the enable bit in the CTRL register (atomic). */
mbed_official 50:a417edff4437 104 BUS_RegBitWrite((&RTCC->CTRL), _RTCC_CTRL_ENABLE_SHIFT, enable);
mbed_official 50:a417edff4437 105 }
mbed_official 50:a417edff4437 106
mbed_official 50:a417edff4437 107 /***************************************************************************//**
mbed_official 50:a417edff4437 108 * @brief
mbed_official 50:a417edff4437 109 * Initialize RTCC.
mbed_official 50:a417edff4437 110 *
mbed_official 50:a417edff4437 111 * @details
mbed_official 50:a417edff4437 112 * Note that the compare values must be set separately with RTCC_CompareSet().
mbed_official 50:a417edff4437 113 * That should probably be done prior to the use of this function if
mbed_official 50:a417edff4437 114 * configuring the RTCC to start when initialization is completed.
mbed_official 50:a417edff4437 115 *
mbed_official 50:a417edff4437 116 * @param[in] init
mbed_official 50:a417edff4437 117 * Pointer to RTCC initialization structure.
mbed_official 50:a417edff4437 118 ******************************************************************************/
mbed_official 50:a417edff4437 119 void RTCC_Init( const RTCC_Init_TypeDef *init )
mbed_official 50:a417edff4437 120 {
mbed_official 50:a417edff4437 121 RTCC->CTRL = ( (uint32_t)init->enable << _RTCC_CTRL_ENABLE_SHIFT )
mbed_official 50:a417edff4437 122 | ( (uint32_t)init->debugRun << _RTCC_CTRL_DEBUGRUN_SHIFT )
mbed_official 50:a417edff4437 123 | ( (uint32_t)init->precntWrapOnCCV0 << _RTCC_CTRL_PRECCV0TOP_SHIFT )
mbed_official 50:a417edff4437 124 | ( (uint32_t)init->cntWrapOnCCV1 << _RTCC_CTRL_CCV1TOP_SHIFT )
mbed_official 50:a417edff4437 125 | ( (uint32_t)init->presc << _RTCC_CTRL_CNTPRESC_SHIFT )
mbed_official 50:a417edff4437 126 | ( (uint32_t)init->prescMode << _RTCC_CTRL_CNTTICK_SHIFT )
mbed_official 50:a417edff4437 127 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
mbed_official 50:a417edff4437 128 | ( (uint32_t)init->enaBackupModeSet << _RTCC_CTRL_BUMODETSEN_SHIFT )
mbed_official 50:a417edff4437 129 #endif
mbed_official 50:a417edff4437 130 | ( (uint32_t)init->enaOSCFailDetect << _RTCC_CTRL_OSCFDETEN_SHIFT )
mbed_official 50:a417edff4437 131 | ( (uint32_t)init->cntMode << _RTCC_CTRL_CNTMODE_SHIFT )
mbed_official 50:a417edff4437 132 | ( (uint32_t)init->disLeapYearCorr << _RTCC_CTRL_LYEARCORRDIS_SHIFT );
mbed_official 50:a417edff4437 133 }
mbed_official 50:a417edff4437 134
mbed_official 50:a417edff4437 135 /***************************************************************************//**
mbed_official 50:a417edff4437 136 * @brief
mbed_official 50:a417edff4437 137 * Restore RTCC to its reset state.
mbed_official 50:a417edff4437 138 ******************************************************************************/
mbed_official 50:a417edff4437 139 void RTCC_Reset( void )
mbed_official 50:a417edff4437 140 {
mbed_official 50:a417edff4437 141 int i;
mbed_official 50:a417edff4437 142
mbed_official 50:a417edff4437 143 /* Restore all RTCC registers to their default values. */
mbed_official 50:a417edff4437 144 RTCC_Unlock();
mbed_official 50:a417edff4437 145 RTCC->CTRL = _RTCC_CTRL_RESETVALUE;
mbed_official 50:a417edff4437 146 RTCC->PRECNT = _RTCC_PRECNT_RESETVALUE;
mbed_official 50:a417edff4437 147 RTCC->CNT = _RTCC_CNT_RESETVALUE;
mbed_official 50:a417edff4437 148 RTCC->TIME = _RTCC_TIME_RESETVALUE;
mbed_official 50:a417edff4437 149 RTCC->DATE = _RTCC_DATE_RESETVALUE;
mbed_official 50:a417edff4437 150 RTCC->IEN = _RTCC_IEN_RESETVALUE;
mbed_official 50:a417edff4437 151 RTCC->IFC = _RTCC_IFC_MASK;
mbed_official 50:a417edff4437 152 RTCC_StatusClear();
mbed_official 50:a417edff4437 153 RTCC->EM4WUEN = _RTCC_EM4WUEN_RESETVALUE;
mbed_official 50:a417edff4437 154
mbed_official 50:a417edff4437 155 for (i = 0; i < 3; i++)
mbed_official 50:a417edff4437 156 {
mbed_official 50:a417edff4437 157 RTCC->CC[i].CTRL = _RTCC_CC_CTRL_RESETVALUE;
mbed_official 50:a417edff4437 158 RTCC->CC[i].CCV = _RTCC_CC_CCV_RESETVALUE;
mbed_official 50:a417edff4437 159 RTCC->CC[i].TIME = _RTCC_CC_TIME_RESETVALUE;
mbed_official 50:a417edff4437 160 RTCC->CC[i].DATE = _RTCC_CC_DATE_RESETVALUE;
mbed_official 50:a417edff4437 161 }
mbed_official 50:a417edff4437 162 }
mbed_official 50:a417edff4437 163
mbed_official 50:a417edff4437 164 /***************************************************************************//**
mbed_official 50:a417edff4437 165 * @brief
mbed_official 50:a417edff4437 166 * Clear STATUS register.
mbed_official 50:a417edff4437 167 ******************************************************************************/
mbed_official 50:a417edff4437 168 void RTCC_StatusClear( void )
mbed_official 50:a417edff4437 169 {
mbed_official 50:a417edff4437 170 while ( RTCC->SYNCBUSY & RTCC_SYNCBUSY_CMD )
mbed_official 50:a417edff4437 171 {
mbed_official 50:a417edff4437 172 // Wait for syncronization.
mbed_official 50:a417edff4437 173 }
mbed_official 50:a417edff4437 174 RTCC->CMD = RTCC_CMD_CLRSTATUS;
mbed_official 50:a417edff4437 175 }
mbed_official 50:a417edff4437 176
mbed_official 50:a417edff4437 177 /** @} (end addtogroup RTCC) */
mbed_official 50:a417edff4437 178 /** @} (end addtogroup EM_Library) */
mbed_official 50:a417edff4437 179
mbed_official 50:a417edff4437 180 #endif /* defined( RTCC_COUNT ) && ( RTCC_COUNT == 1 ) */