I'm new to this and not sure of the etiquette for modifying existing libraries, so would appreciate some pointers.
I started development of a timer using Timer1, but then came across the TimerOne library. Rather than create something new, I'd like to propose some amendments to the existing library, but I'm not sure how I go about it.
To give you a feel, my suggested amendments are as follows:
-
- Add (long) assignments and casts to TimerOne::read() to ensure calculations involving tmp, ICR1 and TCNT1 aren't truncated
-
- Ensure 16 bit registers accesses are atomic - run with interrupts disabled when accessing
-
- Remove global enable of interrupts (sei())- could be running within an interrupt routine)
-
- Counter reset to 1 rather than zero. Datasheet vague on this, but experiment shows that overflow interrupt
-
- flag gets set whilst TCNT1 == BOTTOM, resulting in a phantom interrupt. Could code around, but unnecessary complexity
-
- Start() amended to start counter and handle all interrupt enabling.
-
- Point restart() at start(). Can't see any real difference
Andrew