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.

Revision:
597:47bdd20c4d41
Parent:
576:99a3d3d9c43f
Child:
619:034e698bc035
--- 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);
 }