I am working on an application where I need to start pwm sequence after particular delay (accurate delay of multiple of 100us).
I am quite new to nordic environment.
Here is my code . Can please guide me what is wrong here??
#define Period 20000 //20ms const nrf_drv_timer_t TIMER_LED = NRF_DRV_TIMER_INSTANCE(0); APP_PWM_INSTANCE(PWM1,1); static int gpio_flag =0; void pwm_update(void) { uint32_t value; value = duty_1; ready_flag = false; /* Set the duty cycle - keep trying until PWM is ready... */ while ((app_pwm_channel_duty_set(&PWM1, 0, value))&(app_pwm_channel_duty_set(&PWM1, 1, value)) == NRF_ERROR_BUSY); /* ... or wait for callback. */ while (!ready_flag); APP_ERROR_CHECK(app_pwm_channel_duty_set(&PWM1, 1, value)); APP_ERROR_CHECK(app_pwm_channel_duty_set(&PWM1, 0, value)); } void in_pin_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { gpio_flag =1; nrf_drv_timer_enable(&TIMER_LED); } void timer0_handler(nrf_timer_event_t event_type, void* p_context) { switch (event_type) { case NRF_TIMER_EVENT_COMPARE0: timer_flg =1; nrf_drv_timer_clear(&TIMER_LED); gpio_flag=0; pwm_update(); break; default: //Do nothing. break; } } void timer_init(void) { uint32_t time_us = 500; uint32_t time_ticks; uint32_t err_code = NRF_SUCCESS; nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG; err_code = nrf_drv_timer_init(&TIMER_LED, &timer_cfg, timer0_handler); APP_ERROR_CHECK(err_code); time_ticks = nrf_drv_timer_us_to_ticks(&TIMER_LED, time_us); nrf_drv_timer_compare( &TIMER_LED, NRF_TIMER_CC_CHANNEL0, time_ticks, true); }