Commit cd7ee540 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

msp430fr5969 counter: Track overflows

parent d1668a6f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ class Counter {

	public:
		uint16_t value;
		uint8_t overflow;
		volatile uint8_t overflow;

		Counter() : overflow(0) {}

@@ -21,12 +21,16 @@ class Counter {
			overflow = 0;
			TA2CTL = TASSEL__SMCLK | ID__1 | MC__CONTINUOUS;
			TA2EX0 = 0;
			TA2CTL |= TACLR;
			TA2CTL |= TACLR | TAIE;
			asm volatile("nop");
			__eint();
			asm volatile("nop");
		}

		inline void stop() {
			TA2CTL = 0;
			__dint();
			value = TA2R;
			TA2CTL = 0;
		}
};

+11 −0
Original line number Diff line number Diff line
#include "arch.h"
#include "driver/counter.h"
#include "driver/gpio.h"

#if defined(TIMER_CYCLES)
#warn "timer_cycles and counter are mutually exclusive. Expect odd behaviour."
#endif

Counter counter;

__attribute__((interrupt(TIMER2_A1_VECTOR))) void handle_timer2_overflow()
{
	if (TA2IV == 0x0e) {
		if (counter.overflow < 255) {
			counter.overflow++;
		}
	}
}