DueTimer
⏳ Timer Library fully implemented for Arduino DUE
Install / Use
/learn @ivanseidel/DueTimerREADME
DueTimer
Timer Library to work with Arduino DUE
Installation
- Download the Latest release from GitHub.
- Unzip and modify the Folder name to "DueTimer" (Remove the '-version')
- Paste the modified folder on your Library folder (On your
Librariesfolder inside Sketchbooks or Arduino software). - Re-open Arduino Software
Getting Started
To call a function handler every 1000 microseconds:
Timer3.attachInterrupt(handler).start(1000);
// or:
Timer3.attachInterrupt(handler).setPeriod(1000).start();
// or, to select whichever available timer:
Timer.getAvailable().attachInterrupt(handler).start(1000);
To call a function handler 10 times a second:
Timer3.attachInterrupt(handler).setFrequency(10).start();
In case you need to stop a timer, just do like this:
Timer3.stop();
And to continue running:
Timer3.start();
There are 9 Timer objects already instantiated for you:
Timer0, Timer1, Timer2, Timer3, Timer4, Timer5, Timer6, Timer7 and Timer8.
TIPs and Warnings
Timer4.attachInterrupt(handler).setFrequency(10).start();
// Is the same as:
Timer4.attachInterrupt(handler);
Timer4.setFrequency(10);
Timer4.start();
// 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];
Timer1.attachInterrupt(handler1).start(10);
Timer1.attachInterrupt(handler2).start(10);
DueTimer myTimer = DueTimer(1);
myTimer.attachInterrupt(handler3).start(20);
// Will run only handle3, on Timer 1 (You are just overriding the callback)
Timer.getAvailable().attachInterrupt(callback1).start(10);
// Start timer on first available timer
DueTimer::getAvailable().attachInterrupt(callback2).start(10);
// 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.
Related Skills
node-connect
346.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
