Exemplo n.º 1
0
static void lptmr_isr(void)
{
    LPTMR_ClearStatusFlags(LPTMR0, kLPTMR_TimerCompareFlag);
    LPTMR_StopTimer(LPTMR0);

    lp_ticker_irq_handler();
}
Exemplo n.º 2
0
void RTC_IRQHandler(void)
{
    uint32_t flags;
    flags = RTC_IntGet();
    if ((flags & RTC_IF_COMP0) && rtc_inited) {
        RTC_IntClear(RTC_IF_COMP0);
        lp_ticker_irq_handler();
    }
}
Exemplo n.º 3
0
/**
 * Interrupt Handler
 */
void __lp_ticker_irq_handler(void)
{
    if (DualTimer_GetIRQInfo(DUALTIMER0) == SINGLETIMER2) {
        DualTimer_ClearInterrupt(DUALTIMER0);
        lp_ticker_overflows_count++;
    } else {
        lp_ticker_irq_handler();
    }
}
Exemplo n.º 4
0
static void tmr3_vec(void)
{
    TIMER_ClearIntFlag((TIMER_T *) NU_MODBASE(timer3_modinit.modname));
    TIMER_ClearWakeupFlag((TIMER_T *) NU_MODBASE(timer3_modinit.modname));
    cd_major_minor_clks = (cd_major_minor_clks > cd_minor_clks) ? (cd_major_minor_clks - cd_minor_clks) : 0;
    if (cd_major_minor_clks == 0) {
        // NOTE: lp_ticker_set_interrupt() may get called in lp_ticker_irq_handler();
        lp_ticker_irq_handler();
    } else {
        lp_ticker_arm_cd();
    }
}
Exemplo n.º 5
0
/**
 * Interrupt Handler
 */
void __lp_ticker_irq_handler(void)
{
    if (DualTimer_GetIRQInfo(DUALTIMER0) == SINGLETIMER2) {
        DualTimer_ClearInterrupt(DUALTIMER0);
        /*
         * For each overflow event adds the timer max represented value to
         * the delta. This allows the lp_ticker to keep track of the elapsed
         * time:
         * elapsed_time = (num_overflow * overflow_limit) + current_time
         */
        lp_ticker_overflows_delta += lp_ticker_overflow_limit;
    } else {
        lp_ticker_irq_handler();
    }
}
Exemplo n.º 6
0
void TICKER_COUNTER_Handlr2(void)
{
    uint32_t status=tc_get_status(TICKER_COUNTER_lp, TICKER_COUNTER_CHANNEL2);
    uint32_t interrupmask=tc_get_interrupt_mask(TICKER_COUNTER_lp, TICKER_COUNTER_CHANNEL2);

    if (((status & interrupmask)  & TC_IER_CPCS)) {
        if(lp_ticker_interrupt_counter) {
            lp_ticker_interrupt_counter--;
        } else {
            if(lp_ticker_interrupt_offset) {
                tc_stop(TICKER_COUNTER_lp, TICKER_COUNTER_CHANNEL2);
                tc_write_rc(TICKER_COUNTER_lp, TICKER_COUNTER_CHANNEL2, (uint32_t)lp_ticker_interrupt_offset);
                tc_start(TICKER_COUNTER_lp, TICKER_COUNTER_CHANNEL2);
                lp_ticker_interrupt_offset=0;
            } else {
                lp_ticker_irq_handler();
            }
        }
    }
}
Exemplo n.º 7
0
static void rtc_isr(void)
{
    uint32_t sr = RTC->SR;
    if (sr & RTC_SR_TOF_MASK) {
        // Reset RTC to 0 so it keeps counting
        RTC_StopTimer(RTC);
        RTC->TSR = 0;
        RTC_StartTimer(RTC);
    } else if (sr & RTC_SR_TAF_MASK) {
        RTC_DisableInterrupts(RTC, kRTC_AlarmInterruptEnable);
        RTC->TAR = 0; /* Write clears the IRQ flag */

        /* Wait subsecond remainder if any */
        if (lptmr_schedule) {
            LPTMR_SetTimerPeriod(LPTMR0, lptmr_schedule);
            LPTMR_EnableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
            LPTMR_StartTimer(LPTMR0);
        } else {
            lp_ticker_irq_handler();
        }
    } else if (sr & RTC_SR_TIF_MASK) {
        RTC_DisableInterrupts(RTC, kRTC_TimeOverflowInterruptEnable);
    }
}
Exemplo n.º 8
0
void COMMON_RTC_IRQ_HANDLER(void)
#endif
{
    if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, US_TICKER_EVENT))
    {
        us_ticker_irq_handler();
    }

#if DEVICE_LOWPOWERTIMER
    if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, LP_TICKER_EVENT))
    {

        lp_ticker_irq_handler();
    }
#endif

    if (nrf_rtc_event_pending(COMMON_RTC_INSTANCE, NRF_RTC_EVENT_OVERFLOW))
    {
        nrf_rtc_event_clear(COMMON_RTC_INSTANCE, NRF_RTC_EVENT_OVERFLOW);
        // Don't disable this event. It shall occur periodically.

        ++m_common_rtc_overflows;
    }
}
Exemplo n.º 9
0
static void gpt_isr(void)
{
    GPT_ClearStatusFlags(GPT2, kGPT_OutputCompare1Flag);
    GPT_DisableInterrupts(GPT2, kGPT_OutputCompare1InterruptEnable);
    lp_ticker_irq_handler();
}