cs.binghamton.edu

Download Report

Transcript cs.binghamton.edu

ATtiny2313
Timers/Counters
CS-423
Dick Steflik
What Do You Use Timers For?

Timing of events (internal or external)

Scheduling Events

Measuring the width of a pulse

Speed control of motors (PWM)

Generation of complex waveforms

Frequency generation (sounds)
The concept of using a
timer/counter


Counters run asynchronously to your code
Can be setup to start based on an internal or
external event

Can generate interrupts

Can signal to a pin
Example

To time a piece of code:

Initial the counter to 0, have it interrupt on overflow

Interrupt handler should count overflows

Start the counter

Run your code

At end of code read counter and add to number of
overflows to get total time
Example

To time an incoming pulse/event:

Setup interrupts on rising and falling edge of pulse
and overflow of counter

In handler for rising edge start counter

In handler for overflow, count the overflows

In handler for falling edge read counter and add
overflows to get time of pulse/event
Example

Motor control:

Use counter to generate a pulse train to control
speed of DC motors





Full speed = full power (infinitely wide pulse
Low speed = narrow pulses with wide down time
50% speed = equal up and down times
Can only control very small motoers directly, must
use high power transistors to drive bigger motors
This is came idea as intermittent wipers on a
car
2 Timer/Counter Units

8-bit Timer/Counter0 w/PWM

16-bit Timer/Counter1

Timer/Counter1 and Timer/Counter0 prescalers
8-bit Timer/Counter0

Single channel counter

Frequency Generator

External Event Counter

10-bit clock prescaler

Only used with internal clock

Scale by: 1, 8, 64, 256, 1024
8-bit Timer/Counter0
8-bit Timer/Counter0


Sample code can be found at:
http://winavr.scienceprog.com/avr-gcc-tutorial/control-avr-8-bit-timer-counter0-using-avrgcc.html
16-bit Timer/Counter1
Modes of Operation

Normal Mode – always counts up, no clear, counter just overruns

Clear Timer on Compare match (CTC mode)

Fast PWM Mode

Phase Correct PWM mode

Phase and Frequence Correct PWM mode
16-bit Timer/Counter1


Sample code can be found at:
http://winavr.scienceprog.com/avr-gcc-tutorial/program-16-bit-avr-timer-withwinavr.html
Prescaler