skip navigational linksPJRC
Shopping Cart Checkout Shipping Cost Download Website
Home MP3 Player 8051 Tools All Projects PJRC Store Site Map
You are here: Teensy Teensyduino Libraries FrequencyTimer2

PJRC Store
Teensy 3.1, $19.80
Teensy 2.0, $16.00
Teensy++ 2.0, $24.00
USB Cable, $4.00
Main Page
Teensy 3.1
Getting Started
How-To Tips
Code Library

FrequencyTimer2 Library

FrequencyTimer2, written by Jim Studt, lets you create a zero jitter frequency output, and run your own function on each period.

Download: (version 2)

FrequencyTimer2 is compatible with Teensy++ 1.0 & 2.0. It is NOT compatible with Teensy 1.0 or Teensy 2.0.

Teensy 3.0 supports adjustable frequency output with analogWriteFrequency().

Hardware Requirements

Output Pin
PWM Pins
Teensy++ 1.0 & 2.0241, 24
Sanguino1514, 15
Arduino Mega109, 10
Arduino Uno113, 11

Example Use

This example can be opened from the menu: File > Examples > FrequencyTimer2 > Test

// FrequencyTimer2 Test

#include <FrequencyTimer2.h>

void setup() {

  Serial.println("You can issue commands like:");
  Serial.println("  12345p - set period to 12345 microseconds");
  Serial.println("  o - turn on a simple counter as the overflow function");
  Serial.println("  n - turn off the overflow function");
  Serial.println("  b - print the counter from the oveflow function");

// variables shared between interrupt context and main program
// context must be declared "volatile".
volatile unsigned long burpCount = 0;

void Burp(void) {

void loop() {
  static unsigned long v = 0;
  if ( Serial.available()) {
    char ch =;
    switch(ch) {
      case '0'...'9':
        v = v * 10 + ch - '0';
      case 'p':
        Serial.print("set ");
        Serial.print((long)v, DEC);
        Serial.print(" = ");
        Serial.print((long)FrequencyTimer2::getPeriod(), DEC);
        v = 0;
      case 'e':
      case 'd':
      case 'o':
      case 'n':
      case 'b':
        unsigned long count;
        noInterrupts();     // disable interrupts while reading the count
        count = burpCount;  // so we don't accidentally read it while the
        interrupts();       // Burp() function is changing the value!
        Serial.println(count, DEC);


Arduino Playground Page/ has the original version of FrequencyTimer2, and more info about the library.