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

What happens if handlers are called at the same time? (nrf51422)

Hi,

I am new to firmware engineering. I have a simple and basic question.

If there's Timer A and B, and both interval is 100ms, what happens to the timeout handler functions? If both timers start at the same time then also the predefined timeout handler functions will be called at every same, right? If it's right, how does nrf51422(s130) handle this situation? Does it runs only one handler? Or both?

define A_TIMER_INTERVAL APP_TIMER_TICKS(100,APP_TIMER_PRESCALER)

define B_TIMER_INTERVAL APP_TIMER_TICKS(100,APP_TIMER_PRESCALER)

APP_TIMER_DEF(A_timer_id);

APP_TIMER_DEF(B_timer_id);

static void A_timeout_handler(void * p_context) {/* some codes */}

static void B_timeout_handler(void * p_context) {/* some codes */}

app_timer_create(&A_timer_id,APP_TIMER_MODE_REPEATED,A_timeout_handler);

app_timer_create(&B_timer_id,APP_TIMER_MODE_REPEATED,B_timeout_handler);

app_timer_start(A_timer_id,A_TIMER_INTERVAL,NULL);

app_timer_start(B_timer_id,B_TIMER_INTERVAL,NULL);

Parents Reply
  • Hi,

    You can set interrupt priority using NVIC driver. To ensure that interrupt A will not block interrupt B you must assign to interupt A higher interrupt priority number (interrupt priority == 0 is the most important one and it will block all other). For example

    interrupt priority A = 7
    interrupt priority B = 6
    

    In such case B can stop A execution.

    However in your case you can't do it. APP_TIMER_DEF creates handlers on the same interrupt level.

Children
No Data
Related