mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Mon Jul 27 09:45:08 2015 +0100
Parent:
596:abfb2833c9f5
Child:
598:2d5fc5624619
Commit message:
Synchronized with git revision 9b9bab51e568581a2a896967a707d3b5aeda3f17

Full URL: https://github.com/mbedmicro/mbed/commit/9b9bab51e568581a2a896967a707d3b5aeda3f17/

Change us_ticker - one dual timer + one pwm timer

Changed in this revision

targets/cmsis/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/W7500x.h Show annotated file Show diff for this revision Revisions of this file
targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_conf.h Show annotated file Show diff for this revision Revisions of this file
targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_dualtimer.c Show annotated file Show diff for this revision Revisions of this file
targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_dualtimer.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_WIZNET/TARGET_W7500x/us_ticker.c Show annotated file Show diff for this revision Revisions of this file
--- a/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/W7500x.h	Mon Jul 27 09:30:09 2015 +0100
+++ b/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/W7500x.h	Mon Jul 27 09:45:08 2015 +0100
@@ -1010,19 +1010,30 @@
 /******************************************************************************/
 
 /*********************** Bit definition for dualtimer   ***********************/
-#define DUALTIMER_TimerControl_TimerDIsable (0x0ul << 7)
-#define DUALTIMER_TimerControl_TimerEnable  (0x1ul << 7)
-#define DUALTIMER_TimerControl_FreeRunning  (0x0ul << 6)
-#define DUALTIMER_TimerControl_Periodic     (0x1ul << 6)
-#define DUALTIMER_TimerControl_IntDisable   (0x0ul << 5)
-#define DUALTIMER_TimerControl_IntEnable    (0x1ul << 5)
-#define DUALTIMER_TimerControl_Pre_1        (0x0ul << 2)
-#define DUALTIMER_TimerControl_Pre_16       (0x1ul << 2)
-#define DUALTIMER_TimerControl_Pre_256      (0x2ul << 2)
-#define DUALTIMER_TimerControl_Size_16      (0x0ul << 1)
-#define DUALTIMER_TimerControl_Size_32      (0x1ul << 1)
-#define DUALTIMER_TimerControl_Wrapping     (0x0ul << 0)
-#define DUALTIMER_TimerControl_OneShot      (0x1ul << 0)
+#define DUALTIMER_TimerControl_TimerDIsable     0x0ul
+#define DUALTIMER_TimerControl_TimerEnable      0x1ul
+#define DUALTIMER_TimerControl_TimerEnable_Pos  7
+
+#define DUALTIMER_TimerControl_FreeRunning      0x0ul
+#define DUALTIMER_TimerControl_Periodic         0x1ul
+#define DUALTIMER_TimerControl_TimerMode_Pos    6
+
+#define DUALTIMER_TimerControl_IntDisable       0x0ul
+#define DUALTIMER_TimerControl_IntEnable        0x1ul
+#define DUALTIMER_TimerControl_IntEnable_Pos    5
+
+#define DUALTIMER_TimerControl_Pre_1            0x0ul
+#define DUALTIMER_TimerControl_Pre_16           0x1ul
+#define DUALTIMER_TimerControl_Pre_256          0x2ul
+#define DUALTIMER_TimerControl_Pre_Pos          2
+
+#define DUALTIMER_TimerControl_Size_16          0x0ul
+#define DUALTIMER_TimerControl_Size_32          0x1ul
+#define DUALTIMER_TimerControl_Size_Pos         1
+
+#define DUALTIMER_TimerControl_Wrapping         0x0ul
+#define DUALTIMER_TimerControl_OneShot          0x1ul
+#define DUALTIMER_TimerControl_OneShot_Pos      0
 
 /******************************************************************************/
 /*                                                                            */
--- a/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_conf.h	Mon Jul 27 09:30:09 2015 +0100
+++ b/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_conf.h	Mon Jul 27 09:45:08 2015 +0100
@@ -4,6 +4,7 @@
 #include "W7500x_uart.h"
 #include "W7500x_i2c.h"
 #include "W7500x_adc.h"
+#include "W7500x_dualtimer.h"
 #include "system_W7500x.h"
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_dualtimer.c	Mon Jul 27 09:45:08 2015 +0100
@@ -0,0 +1,205 @@
+/**
+  ******************************************************************************
+  * @file    W7500x_stdPeriph_Driver/src/W7500x_dualtimer.c    
+  * @author  IOP Team
+  * @version v1.0.0
+  * @date    01-May-2015
+  * @brief   This file contains all the functions prototypes for the dualtimer 
+  *          firmware library.
+  ******************************************************************************
+  *
+  ******************************************************************************
+  */
+
+/* Includes -------------------------------------------*/
+#include "W7500x.h"
+
+void DUALTIMER_ClockEnable(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    if(DUALTIMERn == DUALTIMER0_0)
+        TIMCLKEN0_0 = DUALTIMER_Clock_Enable;
+    else if(DUALTIMERn == DUALTIMER0_1)
+        TIMCLKEN0_1 = DUALTIMER_Clock_Enable;
+    else if(DUALTIMERn == DUALTIMER1_0)
+        TIMCLKEN1_0 = DUALTIMER_Clock_Enable;
+    else if(DUALTIMERn == DUALTIMER1_1)
+        TIMCLKEN1_1 = DUALTIMER_Clock_Enable;
+}
+
+void DUALTIMER_ClockDisable(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    if(DUALTIMERn == DUALTIMER0_0)
+        TIMCLKEN0_0 = DUALTIMER_Clock_Disable;
+    else if(DUALTIMERn == DUALTIMER0_1)
+        TIMCLKEN0_1 = DUALTIMER_Clock_Disable;
+    else if(DUALTIMERn == DUALTIMER1_0)
+        TIMCLKEN1_0 = DUALTIMER_Clock_Disable;
+    else if(DUALTIMERn == DUALTIMER1_1)
+        TIMCLKEN1_1 = DUALTIMER_Clock_Disable;
+}
+
+void DUALTIMER_DeInit(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMER_Stop(DUALTIMERn);
+
+    DUALTIMERn->TimerLoad = 0x0;
+    DUALTIMERn->TimerControl = 0x20;
+    DUALTIMERn->TimerBGLoad = 0x0;
+}
+
+void DUALTIMER_Init(DUALTIMER_TypeDef* DUALTIMERn, DUALTIMER_InitTypDef* DUALTIMER_InitStruct)
+{
+    uint32_t tmp = 0;
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+    assert_param(IS_DUALTIMER_TimerMode(DUALTIMER_InitStruct->TimerControl_Mode));
+    assert_param(IS_DUALTIMER_TimerPre(DUALTIMER_InitStruct->TimerControl_Pre));
+    assert_param(IS_DUALTIMER_TimerSize(DUALTIMER_InitStruct->TimerControl_Size));
+    assert_param(IS_DUALTIMER_OneShot(DUALTIMER_InitStruct->TimerControl_OneShot));
+    
+    DUALTIMER_Stop(DUALTIMERn);
+
+    DUALTIMERn->TimerLoad = DUALTIMER_InitStruct->TimerLoad;
+
+    tmp = DUALTIMERn->TimerControl;
+    tmp |= (DUALTIMER_InitStruct->TimerControl_Mode << DUALTIMER_TimerControl_TimerMode_Pos);
+    tmp |= (DUALTIMER_InitStruct->TimerControl_Pre << DUALTIMER_TimerControl_Pre_Pos); 
+    tmp |= (DUALTIMER_InitStruct->TimerControl_Size << DUALTIMER_TimerControl_Size_Pos);
+    tmp |= (DUALTIMER_InitStruct->TimerControl_OneShot << DUALTIMER_TimerControl_OneShot_Pos);
+    //Reset values not used
+    tmp &= 0xEF;
+
+    DUALTIMERn->TimerControl = tmp;
+}
+
+void DUALTIMER_IntConfig(DUALTIMER_TypeDef* DUALTIMERn, FunctionalState state)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    if(state == ENABLE)
+        DUALTIMERn->TimerControl |= (DUALTIMER_TimerControl_IntEnable << DUALTIMER_TimerControl_IntEnable_Pos);
+    else 
+        DUALTIMERn->TimerControl &= ~(DUALTIMER_TimerControl_IntEnable << DUALTIMER_TimerControl_IntEnable_Pos);
+}
+
+void DUALTIMER_IntClear(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerIntClr = DUALTIMER_Int_Clear;
+}
+
+ITStatus DUALTIMER_GetIntStatus(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return (ITStatus)DUALTIMERn->TimerMIS;
+}
+
+FlagStatus DUALTIMER_GetIntEnableStatus(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return (FlagStatus)((DUALTIMERn->TimerControl >> DUALTIMER_TimerControl_IntEnable_Pos) & 0x1);
+}
+
+void DUALTIMER_Start(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerControl |= (DUALTIMER_TimerControl_TimerEnable << DUALTIMER_TimerControl_TimerEnable_Pos);
+}
+
+void DUALTIMER_Stop(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerControl &= ~(DUALTIMER_TimerControl_TimerEnable << DUALTIMER_TimerControl_TimerEnable_Pos);
+}
+
+uint32_t DUALTIMER_GetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerLoad;
+}
+
+void DUALTIMER_SetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerLoad)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerLoad = TimerLoad;
+}
+
+uint32_t DUALTIMER_GetTimerValue(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerValue;
+}
+
+uint32_t DUALTIMER_GetTimerControl(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerControl;
+}
+
+void DUALTIMER_SetTimerControl(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerControl)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerControl = TimerControl;
+}
+
+uint32_t DUALTIMER_GetTimerRIS(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerRIS;
+}
+
+uint32_t DUALTIMER_GetTimerMIS(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerMIS;
+}
+
+uint32_t DUALTIMER_GetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    return DUALTIMERn->TimerBGLoad;
+}
+
+void DUALTIMER_SetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerBGLoad)
+{
+    /* Check the parameters */
+    assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
+
+    DUALTIMERn->TimerBGLoad = TimerBGLoad;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_dualtimer.h	Mon Jul 27 09:45:08 2015 +0100
@@ -0,0 +1,96 @@
+/**
+  ******************************************************************************
+  * @file    W7500x_stdPeriph_Driver/inc/W7500x_dualtimer.h
+  * @author  IOP Team
+  * @version V1.0.0
+  * @date    01-May-2015
+  * @brief   This file contains all the functions prototypes for the dualtimer 
+  *          firmware library.
+  ******************************************************************************
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __W7500X_DUALTIMER_H
+#define __W7500X_DUALTIMER_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "W7500x.h"
+
+/**********************************************************************************************/
+/**********************************************************************************************/
+//                This structure and define must be in W7500x.h
+/**********************************************************************************************/
+/**********************************************************************************************/
+
+typedef struct
+{
+    uint32_t TimerLoad;
+    uint32_t TimerControl_Mode;
+    uint32_t TimerControl_Pre;
+    uint32_t TimerControl_Size;
+    uint32_t TimerControl_OneShot;    
+}DUALTIMER_InitTypDef;
+
+
+#define IS_DUALTIMER_TimerMode(MODE)        (MODE <= 1) 
+#define IS_DUALTIMER_TimerPre(PREE)         (PRE <= 2) 
+#define IS_DUALTIMER_TimerSize(SIZE)        (SIZE <= 1) 
+#define IS_DUALTIMER_OneShot(ONESHOT)       (ONESHOT <= 1)
+
+
+
+
+
+
+#define DUALTIMER_Int_Clear                 0x1ul
+
+#define DUALTIMER_Clock_Enable              0x1ul
+#define DUALTIMER_Clock_Disable             ~DUALTIMER_Clock_Enable
+
+
+#define IS_DUALTIMER_ALL_CH(CH)            ((CH == DUALTIMER0_0) || \
+                                            (CH == DUALTIMER0_1) || \
+                                            (CH == DUALTIMER1_0) || \
+                                            (CH == DUALTIMER1_1)) 
+
+
+
+void DUALTIMER_ClockEnable(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_ClockDisable(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_DeInit(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_Init(DUALTIMER_TypeDef* DUALTIMERn, DUALTIMER_InitTypDef* DUALTIMER_InitStruct);
+void DUALTIMER_IntConfig(DUALTIMER_TypeDef* DUALTIMERn, FunctionalState state);
+void DUALTIMER_IntClear(DUALTIMER_TypeDef* DUALTIMERn);
+ITStatus DUALTIMER_GetIntStatus(DUALTIMER_TypeDef* DUALTIMERn);
+FlagStatus DUALTIMER_GetIntEnableStatus(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_Start(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_Stop(DUALTIMER_TypeDef* DUALTIMERn);
+uint32_t DUALTIMER_GetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_SetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerLoad);
+uint32_t DUALTIMER_GetTimerValue(DUALTIMER_TypeDef* DUALTIMERn);
+uint32_t DUALTIMER_GetTimerControl(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_SetTimerControl(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerControl);
+uint32_t DUALTIMER_GetTimerRIS(DUALTIMER_TypeDef* DUALTIMERn);
+uint32_t DUALTIMER_GetTimerMIS(DUALTIMER_TypeDef* DUALTIMERn);
+uint32_t DUALTIMER_GetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn);
+void DUALTIMER_SetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerBGLoad);
+
+
+
+//======================= Interrupt handler ==============================
+//void DUALTIMER0_Handler();
+//void DUALTIMER1_Handler();
+
+
+#ifdef __cplusplus
+ }
+#endif
+
+
+#endif //__W7500X_DUALTIMER_H
--- a/targets/hal/TARGET_WIZNET/TARGET_W7500x/us_ticker.c	Mon Jul 27 09:30:09 2015 +0100
+++ b/targets/hal/TARGET_WIZNET/TARGET_W7500x/us_ticker.c	Mon Jul 27 09:45:08 2015 +0100
@@ -33,9 +33,12 @@
 #include "PeripheralNames.h"
 #include "system_W7500x.h"
 
+#define TIMER_0         DUALTIMER0_0
+#define TIMER_1         PWM_CH1
+#define TIMER_IRQn      DUALTIMER0_IRQn
 
-static PWM_TimerModeInitTypeDef TimMasterHandle_CH3;
-static PWM_TimerModeInitTypeDef TimMasterHandle_CH2;
+static PWM_TimerModeInitTypeDef TimerInitType;
+static DUALTIMER_InitTypDef TimerHandler;
 
 static int us_ticker_inited = 0;
 
@@ -43,17 +46,12 @@
 #ifdef __cplusplus
 extern "C"{
 #endif
-void PWM2_Handler(void)
+
+void DUALTIMER0_Handler(void)
 {
-    uint32_t IntFlag = 0;
-
-    IntFlag = PWM_CHn_GetIntFlagStatus(PWM_CH2);
-
-    /* If overflow interrupt is occurred */
-    if( (IntFlag & PWM_CHn_IER_OI_Msk) != 0 )
+   if(DUALTIMER_GetIntStatus(DUALTIMER0_0))
     {
-        /* Clear overflow interrupt */
-        PWM_CH2_ClearOverflowInt();
+        DUALTIMER_IntClear(DUALTIMER0_0);
         us_ticker_irq_handler();
     }
 }
@@ -68,66 +66,69 @@
     us_ticker_inited = 1;
 
     SystemCoreClockUpdate();
-    TimMasterHandle_CH3.PWM_CHn_PR = (GetSystemClock() / 1000000) -1;
-    TimMasterHandle_CH3.PWM_CHn_LR = 0xFFFFFFFF;
-    TimMasterHandle_CH3.PWM_CHn_PDMR = 1;
+    TimerInitType.PWM_CHn_PR = (GetSystemClock() / 1000000) -1;
+    TimerInitType.PWM_CHn_LR = 0xFFFFFFFF;
+    TimerInitType.PWM_CHn_PDMR = 1;
 
-    PWM_TimerModeInit(PWM_CH3, &TimMasterHandle_CH3);
-    PWM_CHn_Start(PWM_CH3);
+    PWM_TimerModeInit(TIMER_1, &TimerInitType);
+    PWM_CHn_Start(TIMER_1);
 }
 
 
 uint32_t us_ticker_read()
 {
     if (!us_ticker_inited) us_ticker_init();
-
-    return (PWM_CH3->TCR);
+    return (TIMER_1->TCR);
 }
 
 
 void us_ticker_set_interrupt(timestamp_t timestamp)
 {
     int32_t dev = 0;
+    
     if (!us_ticker_inited)
     {
         us_ticker_init();
     }
     
-    dev = (int32_t)(timestamp - (us_ticker_read() + 150));
+    dev = (int32_t)(timestamp - us_ticker_read());
+    dev = dev * ((GetSystemClock() / 1000000) / 16);     
 
     if(dev <= 0)
     {
         us_ticker_irq_handler();
-    	return;
+        return;
     }
-
-    PWM_CHn_Stop(PWM_CH2);
-
-    SystemCoreClockUpdate();
-    TimMasterHandle_CH2.PWM_CHn_PR = (GetSystemClock() / 1000000) -1;
-    TimMasterHandle_CH2.PWM_CHn_LR = dev;
+    
+    DUALTIMER_ClockEnable(TIMER_0);
+    DUALTIMER_Stop(TIMER_0);
+    
+    TimerHandler.TimerControl_Mode       = DUALTIMER_TimerControl_Periodic;
+    TimerHandler.TimerControl_OneShot    = DUALTIMER_TimerControl_OneShot;
+    TimerHandler.TimerControl_Pre        = DUALTIMER_TimerControl_Pre_16;
+    TimerHandler.TimerControl_Size       = DUALTIMER_TimerControl_Size_32;
+    
+    TimerHandler.TimerLoad      = (uint32_t)dev;
+    
+    DUALTIMER_Init(TIMER_0, &TimerHandler);
+    
+    DUALTIMER_IntConfig(TIMER_0, ENABLE);
+    
+    NVIC_EnableIRQ(TIMER_IRQn);
+    
+    DUALTIMER_Start(TIMER_0);
+    
 
-    TimMasterHandle_CH2.PWM_CHn_UDMR = 0;
-    TimMasterHandle_CH2.PWM_CHn_PDMR = 0;
-
-    NVIC_EnableIRQ(PWM2_IRQn);
-
-    PWM_CHn_IntConfig(PWM_CH2, PWM_CHn_IER_OIE, ENABLE);
-    PWM_IntConfig(PWM_CH2, ENABLE);
-    PWM_TimerModeInit(PWM_CH2, &TimMasterHandle_CH2);
-
-    PWM_CHn_Start(PWM_CH2);
 }
 
 void us_ticker_disable_interrupt(void)
 {
-    NVIC_DisableIRQ(PWM2_IRQn);
-
-    PWM_CHn_IntConfig(PWM_CH2, PWM_CHn_IER_OIE, DISABLE);
-    PWM_IntConfig(PWM_CH2, DISABLE);
+    NVIC_DisableIRQ(TIMER_IRQn);
+    
+    DUALTIMER_IntConfig(TIMER_0, DISABLE);
 }
 
 void us_ticker_clear_interrupt(void)
 {
-    PWM_CHn_ClearInt(PWM_CH2, PWM_CHn_IER_OIE);
+    DUALTIMER_IntClear(TIMER_0);
 }