0
0
Power-electronicsConceptBeginner · 3 min read

What is Prescaler in Timer in Embedded C: Simple Explanation

In Embedded C, a prescaler is a hardware feature in timers that divides the input clock frequency to slow down the timer count speed. It helps control how fast the timer increments, allowing precise timing for delays or events.
⚙️

How It Works

Think of a timer like a stopwatch that counts ticks from a clock. The prescaler acts like a gear that slows down the ticking speed by dividing the clock frequency. For example, if the clock ticks 1,000 times per second, a prescaler of 10 makes the timer count only once every 10 ticks, effectively counting 100 times per second.

This division lets you measure longer time intervals without the timer overflowing too quickly. It’s like using a slower stopwatch to measure longer events accurately. The prescaler value is set by configuring specific bits in the timer control registers in Embedded C.

💻

Example

This example shows how to set a prescaler for a timer in Embedded C to slow down the timer count.
c
#include <avr/io.h>
#include <util/delay.h>

int main(void) {
    // Set Timer1 prescaler to 64
    TCCR1B |= (1 << CS11) | (1 << CS10); // CS11=1 and CS10=1 means prescaler=64

    // Start timer with initial count 0
    TCNT1 = 0;

    // Set PORTB0 as output
    DDRB |= (1 << DDB0);

    while (1) {
        if (TCNT1 >= 15625) { // With 16MHz clock and prescaler 64, this is ~1 second
            // Toggle an LED connected to PORTB0
            PORTB ^= (1 << PORTB0);
            TCNT1 = 0; // Reset timer count
        }
    }
    return 0;
}
Output
The LED connected to PORTB0 toggles ON and OFF every 1 second.
🎯

When to Use

Use a prescaler when you need to measure time intervals longer than the timer’s natural counting speed allows. For example, if your timer counts too fast and overflows quickly, a prescaler slows it down so you can track seconds or minutes.

Common real-world uses include blinking LEDs at human-visible speeds, generating precise delays, or measuring sensor signals that happen over longer times. Without a prescaler, timers might only count microseconds or milliseconds, which is too fast for many applications.

Key Points

  • A prescaler divides the timer clock frequency to slow down counting.
  • It allows timers to measure longer time intervals without overflow.
  • Prescaler values are set by configuring timer control registers in Embedded C.
  • Choosing the right prescaler depends on your clock speed and timing needs.

Key Takeaways

A prescaler slows down the timer by dividing the input clock frequency.
It helps measure longer time intervals without timer overflow.
Set prescaler values via timer control registers in Embedded C.
Use prescalers to match timer speed with your application's timing needs.