int testLowTimerStop(void) { int status; pTimer[0] = task_timer_alloc(); task_timer_start(pTimer[0], 10, 5, TIMER_SEM); task_timer_stop(pTimer[0]); status = task_sem_take_wait_timeout(TIMER_SEM, 20); if (status != RC_TIME) { TC_ERROR("** task_sem_take_wait_timeout() returned %d, not %d\n", status, RC_TIME); return TC_FAIL; /* Return failure, do not "clean up" */ } task_timer_free(pTimer[0]); return TC_PASS; }
void powerdown_sleep() { _delay_ms(31); task_timer_stop(); do { //allow rtc irq handler but do not wake up time_rtc_irq = false; //rtc irq set time_rtc_irq to true if executed SystemPowerSave(); if (time_rtc_irq) wdt_reset(); } while (time_rtc_irq == true); //start task timer in low speed mode task_timer_setup(false); }