Skip to content
Switch branches/tags


Timer Library to work with Arduino DUE


  1. Download the Latest release from GitHub.
  2. Unzip and modify the Folder name to "DueTimer" (Remove the '-version')
  3. Paste the modified folder on your Library folder (On your Libraries folder inside Sketchbooks or Arduino software).
  4. Re-open Arduino Software

Getting Started

To call a function handler every 1000 microseconds:

// or:
// or, to select whichever available timer:

To call a function handler 10 times a second:


In case you need to stop a timer, just do like this:


And to continue running:


There are 9 Timer objects already instantiated for you: Timer0, Timer1, Timer2, Timer3, Timer4, Timer5, Timer6, Timer7 and Timer8.

TIPs and Warnings

// Is the same as:

// To create a custom timer, refer to:
DueTimer myTimer = DueTimer(0); // Creates a Timer 0 object.
DueTimer myTimer = DueTimer(3); // Creates a Timer 3 object.
DueTimer myTimer = DueTimer(t); // Creates a Timer t object.
// Note: Maximum t allowed is 8, as there is only 9 timers [0..8];

DueTimer myTimer = DueTimer(1);
// Will run only handle3, on Timer 1 (You are just overriding the callback)

// Start timer on first available timer
// Start timer on second available timer
// And so on...

DueTimer myTimer = Timer.getAvailable();
if (myTimer != DueTimer(0))
// Now we know that the timer returned is actually available
// Can compare timers using == or !=

Compatibility with Servo.h

Because Servo Library uses the same callbacks of DueTimer, we provides a custom solution for working with both of them. However, Timers 0,2,3,4 and 5 will not Work anymore.

You will need uncommend the line in DueTimer.h in DueTimer folder inside the Libraries folder. Uncomment the following line in DueTimer.h:

#define USING_SERVO_LIB	true

Library Reference

You should know:

  • getAvailable() - Get the first available Timer.

  • attachInterrupt(void (*isr)()) - Attach a interrupt (callback function) for the timer of the object.

  • detachInterrupt() - Detach current callback of timer.

  • start(long microseconds = -1) - Start the timer with an optional period parameter.

  • stop() - Stop the timer

  • setFrequency(long frequency) - Set the timer frequency

  • long getFrequency() - Get the timer frequency

  • setPeriod(long microseconds) - Set the timer period (in microseconds)

  • long getPeriod() - Get the timer period (in microseconds)

You don't need to know:

<<<<<<< HEAD

  • int timer - Stores the object timer id (to access Timers struct array).

  • DueTimer(unsigned short _timer) - Instantiate a new DueTimer object for Timer _timer (NOTE: All objects are already instantiated!).

  • static const Timer Timers[] - Stores all timers information

  • static void (*callbacks[])() - Stores all callbacks for all timers

Hardware Information

More information on the Timer Counter module of the µC on the Arduino Due can be found in the documentation file TimerCounter.