diff --git a/cpu/samd21/periph/timer.c b/cpu/samd21/periph/timer.c index d4d530bcbaf9e8fc1416d83f70b353177b360213..689d9bc73387fdedfe383d63513618551d05c979 100644 --- a/cpu/samd21/periph/timer.c +++ b/cpu/samd21/periph/timer.c @@ -142,14 +142,14 @@ int timer_set_absolute(tim_t dev, int channel, unsigned int value) /* set timeout value */ switch (channel) { case 0: - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC0; TIMER_0_DEV.CC[0].reg = value; - TIMER_0_DEV.INTENSET.bit.MC0 = 1; + TIMER_0_DEV.INTENSET.reg = TC_INTENSET_MC0; break; case 1: - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC1; TIMER_0_DEV.CC[1].reg = value; - TIMER_0_DEV.INTENSET.bit.MC1 = 1; + TIMER_0_DEV.INTENSET.reg = TC_INTENSET_MC1; break; default: return -1; @@ -161,14 +161,14 @@ int timer_set_absolute(tim_t dev, int channel, unsigned int value) /* set timeout value */ switch (channel) { case 0: - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC0; TIMER_1_DEV.CC[0].reg = value; - TIMER_1_DEV.INTENSET.bit.MC0 = 1; + TIMER_1_DEV.INTENSET.reg = TC_INTENSET_MC0; break; case 1: - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC1; TIMER_1_DEV.CC[1].reg = value; - TIMER_1_DEV.INTENSET.bit.MC1 = 1; + TIMER_1_DEV.INTENSET.reg = TC_INTENSET_MC1; break; default: return -1; @@ -191,12 +191,12 @@ int timer_clear(tim_t dev, int channel) case TIMER_0: switch (channel) { case 0: - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; - TIMER_0_DEV.INTENCLR.bit.MC0 = 1; + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC0; + TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC0; break; case 1: - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; - TIMER_0_DEV.INTENCLR.bit.MC1 = 1; + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC1; + TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC1; break; default: return -1; @@ -207,12 +207,12 @@ int timer_clear(tim_t dev, int channel) case TIMER_1: switch (channel) { case 0: - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; - TIMER_1_DEV.INTENCLR.bit.MC0 = 1; + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC0; + TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC0; break; case 1: - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; - TIMER_1_DEV.INTENCLR.bit.MC1 = 1; + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC1; + TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC1; break; default: return -1; @@ -309,16 +309,16 @@ static inline void _irq_enable(tim_t dev) void TIMER_0_ISR(void) { if (TIMER_0_DEV.INTFLAG.bit.MC0 && TIMER_0_DEV.INTENSET.bit.MC0) { + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC0; + TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC0; if(config[TIMER_0].cb) { - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; - TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC0; config[TIMER_0].cb(config[TIMER_0].arg, 0); } } - else if (TIMER_0_DEV.INTFLAG.bit.MC1 && TIMER_0_DEV.INTENSET.bit.MC1) { + if (TIMER_0_DEV.INTFLAG.bit.MC1 && TIMER_0_DEV.INTENSET.bit.MC1) { + TIMER_0_DEV.INTFLAG.reg = TC_INTFLAG_MC1; + TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC1; if(config[TIMER_0].cb) { - TIMER_0_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; - TIMER_0_DEV.INTENCLR.reg = TC_INTENCLR_MC1; config[TIMER_0].cb(config[TIMER_0].arg, 1); } } @@ -332,16 +332,16 @@ void TIMER_0_ISR(void) void TIMER_1_ISR(void) { if (TIMER_1_DEV.INTFLAG.bit.MC0 && TIMER_1_DEV.INTENSET.bit.MC0) { + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC0; + TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC0; if (config[TIMER_1].cb) { - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC0; - TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC0; config[TIMER_1].cb(config[TIMER_1].arg, 0); } } - else if (TIMER_1_DEV.INTFLAG.bit.MC1 && TIMER_1_DEV.INTENSET.bit.MC1) { + if (TIMER_1_DEV.INTFLAG.bit.MC1 && TIMER_1_DEV.INTENSET.bit.MC1) { + TIMER_1_DEV.INTFLAG.reg = TC_INTFLAG_MC1; + TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC1; if(config[TIMER_1].cb) { - TIMER_1_DEV.INTFLAG.reg |= TC_INTFLAG_MC1; - TIMER_1_DEV.INTENCLR.reg = TC_INTENCLR_MC1; config[TIMER_1].cb(config[TIMER_1].arg, 1); } }