140 likes | 291 Views
CS-423 Dick Steflik. ATtiny2313 Timers/Counters. 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) .
E N D
CS-423 Dick Steflik ATtiny2313Timers/Counters
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 • Sample code can be found at: • http://winavr.scienceprog.com/avr-gcc-tutorial/control-avr-8-bit-timer-counter0-using-avr-gcc.html
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-with-winavr.html