mbed official / mbed-dev

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Revision:
182:a56a73fd2a6f
Parent:
177:d650f5d4c87a
Child:
186:707f6e361f3e
--- a/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/us_ticker.c	Fri Feb 16 16:09:33 2018 +0000
+++ b/targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K66F/us_ticker.c	Tue Mar 20 16:56:18 2018 +0000
@@ -83,10 +83,14 @@
 
 void us_ticker_set_interrupt(timestamp_t timestamp)
 {
-    uint32_t delta = timestamp - us_ticker_read();
+    uint32_t now_us, delta_us;
+
+    now_us = us_ticker_read();
+    delta_us = timestamp >= now_us ? timestamp - now_us : (uint32_t)((uint64_t)timestamp + 0xFFFFFFFF - now_us);
+
     PIT_StopTimer(PIT, kPIT_Chnl_3);
     PIT_StopTimer(PIT, kPIT_Chnl_2);
-    PIT_SetTimerPeriod(PIT, kPIT_Chnl_3, (uint32_t)delta);
+    PIT_SetTimerPeriod(PIT, kPIT_Chnl_3, (uint32_t)delta_us);
     PIT_EnableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
     PIT_StartTimer(PIT, kPIT_Chnl_3);
     PIT_StartTimer(PIT, kPIT_Chnl_2);