0% found this document useful (0 votes)
63 views10 pages

Microcontrollers: Class 4: Timer/Counters

The document discusses the use of timer/counters on microcontrollers. It describes how timers can be used as a timebase by counting clock pulses with interrupts occurring at overflow. Timers can also be used for pulse-width modulation (PWM) by outputting pulses at compare register values in different modes. Examples are provided for using a timer as a simple clock and for timer-based PWM to dim LEDs in hardware.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views10 pages

Microcontrollers: Class 4: Timer/Counters

The document discusses the use of timer/counters on microcontrollers. It describes how timers can be used as a timebase by counting clock pulses with interrupts occurring at overflow. Timers can also be used for pulse-width modulation (PWM) by outputting pulses at compare register values in different modes. Examples are provided for using a timer as a simple clock and for timer-based PWM to dim LEDs in hardware.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Microcontrollers

Class 4: Timer/Counters

March 28, 2011

Outline

Timer/Counter Introduction

Timers as a Timebase

Timers for PWM


Outline

Timer/Counter Introduction

Timers as a Timebase

Timers for PWM

Outline

Timer/Counter Introduction

Timers as a Timebase

Timers for PWM


Review

The story so far...

I Bits and shifting


I Analog and Digital input and output
I Serial stuffies
I Interrupts
I Now we get to give our programs a sense of timing

Timer/Counter Overview

The big picture

I Weve been using lots of software counters:


for(i=0; i<8; i++)...
I The Mega88 chip has 3 built-in hardware counters that we
can use instead
I Why? Theyre more efficient, reliable, and they free up our
software to do other things
I Why timer/counter? Well, internally theyre really counters
but if you hook them up to a clock, counting clock pulses,
youve got a timer.
I They can also count hardware events (pin toggling, etc) but I
wont run any examples of that here. Bother me by e-mail if
youre interested.
Timer/Counter Hardware Block Diagram

Timers
Setup

I Timers are my least-favorite thing to configure on the AVR,


but its not so bad once youve got the basics down.
I First need a source: what youre counting
well use built-in clocks, and will need to set a prescaler
I Hardware compares the contents of two special memory
registers (OCR0A and OCR0B) to the current counter value
I When the counter equals TOP, three things can happen:
reset the timer
fire an OC interrupt
set, clear, or toggle a dedicated output pin
I What happens depends on which mode youre in
I In addition to the OCRs, there is also an interrupt available
for when the timer overflows (wraps back around to 0)
Modes

What can we do with these timers?


I Normal mode: just counts up from 0 to 255. Boring, but
useful for a quick-and-dirty timebase using the overflow
interrupt.
I Clear Timer on Compare (CTC) mode: Count up to value in
OCR0A (not necessarily 255), then go back to zero. Provides
different timing cycle durations.
I Fast PWM mode: Counts 0..255, does things on output pins
when counter hits the OCR0A/B values
I Phase-correct PWM mode: first counts up, then counts down

Modes
Configuration

Putting the right bits in the right registers

I Control registers: TCCR0A, TCCR0B


selects clock source, counting mode, and pin-output
I Interrupt mask register: TIMSK0
selects which interrupts to fire (overflow, compare)
I Output compare registers: OCR0A, OCR0B
put your compare-values in here,
changes duty-cycle (both, in some modes) or frequency
(OCR0A only)
I Examples for details!

Waveform Select Modes (p. 108)


Clock Select (p. 110)

Output Mode (p. 106)


Outline

Timer/Counter Introduction

Timers as a Timebase

Timers for PWM

Simple Clock

Tick, tick, tick

I Im surprised by the number of times I see people buy clock


modules for their hardware projects
I Add in a crystal (next class) and youll have a pretty-darn
accurate timebase
I The basics:
Set up global time-keeping variables
Set up a CTC timer to interrupt once every (howeverlong)
In the interrupt, increment your various counters (lightweight!)
In the mainloop, use the time variables
I Initialization for the timer: mode, clock prescale, interrupt
enables
I See the example: counterClock.c
Outline

Timer/Counter Introduction

Timers as a Timebase

Timers for PWM

Timer-based PWM

Dimming LEDs in hardware

I Pins labelled OCxxx are directly connected to the output


compare logic
I Result: you can set OCR0A, OCR0B and get PWM done for
you automatically
I Timer1 is a 16-bit timer: has enough resolution for easy servo
driving
I Setup:
Select PWM mode (well use fast)
Set up the output pin modes
I See example: counterPWM.c
Next Class

Odds and Ends


I Special requests??
I PROGMEM, EEPROM, and funny memory types
I Moving past the classboard: how to wire up your own circuits
from the ground up
I Turn your classboard into a bare-chip programmer! (Optional)

The End

Outline

You might also like