Loading include/arch/arduino-nano/driver/counter.h 0 → 100644 +27 −0 Original line number Diff line number Diff line #include <avr/io.h> #include <avr/interrupt.h> class Counter { private: Counter(const Counter ©); public: uint8_t overflowed; Counter() : overflowed(0) {} inline void start() { overflowed = 0; TCNT1 = 0; TCCR1A = 0; TCCR1B = _BV(CS10); TIMSK1 = _BV(TOIE1); } inline uint16_t stop() { TCCR1B = 0; return TCNT1; } }; extern Counter counter; src/arch/arduino-nano-168/Makefile.inc +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ ifneq ($(findstring timer,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/timer.cc endif ifneq ($(findstring counter,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/counter.cc endif ifeq (${cpu_freq}, 16000000) uart_baud = 57600 else ifeq (${cpu_freq}, 8000000) Loading src/arch/arduino-nano/Makefile.inc +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ ifneq ($(findstring timer,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/timer.cc endif ifneq ($(findstring counter,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/counter.cc endif ifeq (${cpu_freq}, 16000000) uart_baud = 57600 else ifeq (${cpu_freq}, 8000000) Loading src/arch/arduino-nano/driver/counter.cc 0 → 100644 +10 −0 Original line number Diff line number Diff line #include "driver/counter.h" Counter counter; ISR(TIMER1_OVF_vect) { if (counter.overflowed < 255) { counter.overflowed++; } } Loading
include/arch/arduino-nano/driver/counter.h 0 → 100644 +27 −0 Original line number Diff line number Diff line #include <avr/io.h> #include <avr/interrupt.h> class Counter { private: Counter(const Counter ©); public: uint8_t overflowed; Counter() : overflowed(0) {} inline void start() { overflowed = 0; TCNT1 = 0; TCCR1A = 0; TCCR1B = _BV(CS10); TIMSK1 = _BV(TOIE1); } inline uint16_t stop() { TCCR1B = 0; return TCNT1; } }; extern Counter counter;
src/arch/arduino-nano-168/Makefile.inc +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ ifneq ($(findstring timer,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/timer.cc endif ifneq ($(findstring counter,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/counter.cc endif ifeq (${cpu_freq}, 16000000) uart_baud = 57600 else ifeq (${cpu_freq}, 8000000) Loading
src/arch/arduino-nano/Makefile.inc +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ ifneq ($(findstring timer,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/timer.cc endif ifneq ($(findstring counter,${arch_drivers}), ) CXX_TARGETS += src/arch/arduino-nano/driver/counter.cc endif ifeq (${cpu_freq}, 16000000) uart_baud = 57600 else ifeq (${cpu_freq}, 8000000) Loading
src/arch/arduino-nano/driver/counter.cc 0 → 100644 +10 −0 Original line number Diff line number Diff line #include "driver/counter.h" Counter counter; ISR(TIMER1_OVF_vect) { if (counter.overflowed < 255) { counter.overflowed++; } }