This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

timer 1 exiper faster

hi all,

i try to use to timer to have a single press and a long press. this my code.

const nrf_drv_timer_t TIMER_BUTTON = NRF_DRV_TIMER_INSTANCE(0);
const nrf_drv_timer_t TIMER_BUTTON_LONG_PUSH = NRF_DRV_TIMER_INSTANCE(1);

void TIMER_CreateDebounce(nrf_timer_event_handler_t  DRV_TIMER_EventHandler)
{   
  uint32_t  time_ticks;

   nrf_drv_timer_init(&TIMER_BUTTON, NULL, DRV_TIMER_EventHandler);
   time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_BUTTON, TIMER_DEBOUNCE_DELAY);

  
   nrf_drv_timer_extended_compare(
   &TIMER_BUTTON, NRF_TIMER_CC_CHANNEL0, time_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true);
   

}


/**@brief        Create a Timer
*
* @param [in]  TIMER_Id_t - IdTimer
* @param [in]  app_timer_mode_t - Mode TImer 
* @param [in]  TIMER_TimerCallback - Callback to Call when the timer expires
*
* @retval    uint32_t; Return error
*
*******************************************************************************/

void TIMER_LongPressCreate(nrf_timer_event_handler_t  DRV_TIMER_EventHandlerLongPress)
{   
   uint32_t  time_ticks2;
   nrf_drv_timer_init(&TIMER_BUTTON_LONG_PUSH, NULL, DRV_TIMER_EventHandlerLongPress);
   time_ticks2 = nrf_drv_timer_ms_to_ticks(&TIMER_BUTTON_LONG_PUSH, TIMER_PUSH_TIMEOUT_MS);

   nrf_drv_timer_extended_compare(
   &TIMER_BUTTON_LONG_PUSH, NRF_TIMER_CC_CHANNEL1, time_ticks2, NRF_TIMER_SHORT_COMPARE1_CLEAR_MASK, true); 
}


/**@brief    TIMER_Stop
*
* @param [in]  TIMER_Id_t - Id Timer
*
* @retval    uint32_t; Return error code
*
*******************************************************************************/

void TIMER_Stop(void)
{   
   nrf_drv_timer_disable(&TIMER_BUTTON);
  
}


/**@brief        Start Timer
*
* @param [in]  TIMER_Id_t - Id Timer
* @param [in]  uint64_t - Delay Timer after tha callback is called
* @param [in]  void * - Pointer use to pass a variable to callback
*
* @retval    uint32_t; Return error code
*
*******************************************************************************/

void TIMER_Start(void)
{   
   nrf_drv_timer_enable(&TIMER_BUTTON);
}

/**@brief    TIMER_Stop
*
* @param [in]  TIMER_Id_t - Id Timer
*
* @retval    uint32_t; Return error code
*
*******************************************************************************/

void TIMER_StopLongPress(void)
{   
   nrf_drv_timer_disable(&TIMER_BUTTON_LONG_PUSH);
  
}


/**@brief        Start Timer
*
* @param [in]  TIMER_Id_t - Id Timer
* @param [in]  uint64_t - Delay Timer after tha callback is called
* @param [in]  void * - Pointer use to pass a variable to callback
*
* @retval    uint32_t; Return error code
*
*******************************************************************************/

void TIMER_StartLongPress(void)
{   
   nrf_drv_timer_enable(&TIMER_BUTTON_LONG_PUSH);
}

but timer 1 exipres faster. Some have an idea about that? thanks, Anna

Parents Reply Children
No Data
Related