EEL 4744C: Microprocessor Applications Lecture 8 Timer Dr. Tao Li

Similar documents
Reading Assignment. Timer. Introduction. Timer Overview. Programming HC12 Timer. An Overview of HC12 Timer. EEL 4744C: Microprocessor Applications

Lecture 12 Timer Functions


Timing System. Timing & PWM System. Timing System components. Usage of Timing System

CS/ECE 6780/5780. Al Davis. Today s topics: Output capture Pulse Width Modulation Pulse Accumulation all useful options for Lab7 1 CS 5780

ME 6405 Introduction to mechatronics Fall Slide 1. Introduction Timer? Usage Electronics HC11 Conclusion. Timers

EE 308 Spring 2013 The MC9S12 Pulse Width Modulation System

Page 1. So Far. Usage Examples. Input Capture Basics. Familiar with CS/ECE 6780/5780. Al Davis. Trigger interrupts on rising/falling/both edges

Connecting a SMARTEC temperature sensor to a 68HC11 type of microcontroller

The MC9S12 Pulse Width Modulation System. Pulse Width Modulation

LM4: The timer unit of the MC9S12DP256B/C

Hardware Flags. and the RTI system. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff

Chapter 6 PROGRAMMING THE TIMERS

EEL 4744C: Microprocessor Applications. Lecture 9. Part 2. M68HC12 Serial I/O. Dr. Tao Li 1

Review for Final Exam

Course Introduction. Content 20 pages 3 questions. Learning Time 30 minutes

COE538 Microprocessor Systems Lab 6: Input Capture Interrupt 1

EE 308 Spring 2006 FINAL PROJECT: INTERFACING AND MOTOR CONTROL WEEK 1 PORT EXPANSION FOR THE MC9S12

Oct 30 Announcements. Bonus marked will be posted today Will provide 270 style feedback on multiple-choice questions. [3.E]-1

Greater Resolution for the QED s 8-bit DAC

EE 308 Apr. 24, 2002 Review for Final Exam

PWM System. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff

ECE 4510/5530 Microcontroller Applications Chapter 8 ECT and PWM

EIE/ENE 334 Microprocessors

Review for Final Exam

Grundlagen Microcontroller Counter/Timer. Günther Gridling Bettina Weiss

Timer A (0 and 1) and PWM EE3376

Microcontrollers: Lecture 3 Interrupts, Timers. Michele Magno

CprE 288 Introduction to Embedded Systems (Output Compare and PWM) Instructors: Dr. Phillip Jones

Timer System Applications. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff

Unit-6 PROGRAMMABLE INTERRUPT CONTROLLERS 8259A-PROGRAMMABLE INTERRUPT CONTROLLER (PIC) INTRODUCTION

ELCT 912: Advanced Embedded Systems

ATmega16A Microcontroller

ME 4447/6405 Pulse Width Modulation (PWM)

For reference only Refer to the latest documents for details

Table of Contents 1. Abstract 3 2. Executive Summary 4 3. Introduction 5 4. Integrated System 6 5. Mobile Platform 9 6.

ECE251: Tuesday October 3 0

Timer A. Last updated 8/7/18

Timer 0 Modes of Operation. Normal Mode Clear Timer on Compare Match (CTC) Fast PWM Mode Phase Corrected PWM Mode

VORAGO Timer (TIM) subsystem application note


HC08 SCI Operation with Various Input Clocks INTRODUCTION

Lab 5 Timer Module PWM ReadMeFirst

Freescale Semiconductor, I SECTION 11 TIME PROCESSOR UNIT

Topics Introduction to Microprocessors

Using the Z8 Encore! XP Timer

Pulse Width Modulation

The Need. Reliable, repeatable, stable time base. Memory Access. Interval/Event timers ADC DAC

ECE 4510/5530 Microcontroller Applications Midterm Review

Select the single most appropriate response for each question.

The 9S12 Pulse Width Modulation System Huang Sections 8.10 and 8.11 PWM_8B8C Block User Guide

Timer/Counter with PWM

EE251: Thursday October 25

Fixed-function (FF) implementation for PSoC 3 and PSoC 5 devices

Microcontrollers. Serial Communication Interface. EECE 218 Microcontrollers 1

Microcontroller: Timers, ADC

ME 333 Assignment 7 and 8 PI Control of LED/Phototransistor Pair. Overview

Hello and welcome to this Renesas Interactive Course that provides an overview of the timers found on RL78 MCUs.

Atmel ATmega328P Timing Subsystems. Reading

AN1734. Motorola Semiconductor Application Note

Speedy. by Josue Peña. Keith L. Doty EEL 5666 Intelligent Machines Design Laboratory

QUARTZ-MM PC/104 Counter/Timer & Digital I/O Module

Lecture 14 Analog to Digital Conversion

Period/Pulse-Width Accumulator TPU Function (PPWA)

dspic30f Quadrature Encoder Interface Module

UNIVERSITY OF VICTORIA FACULTY OF ENGINEERING. SENG 466 Software for Embedded and Mechatronic Systems. Project 1 Report. May 25, 2006.

AN1730. Digital Amplification Control of an Analog Signal Using the MC68HC705J1A. Introduction

EE 308 Lab Spring 2009

MICROCONTROLLER TUTORIAL II TIMERS

Microprocessor & Interfacing Lecture Programmable Interval Timer

Fixed-function (FF) implementation for PSoC 3 and PSoC 5LP devices

CMOS Serial Digital Pulse Width Modulator INPUT CLK MODULATOR LOGIC PWM 8 STAGE RIPPLE COUNTER RESET LOAD FREQUENCY DATA REGISTER

Measuring Distance Using Sound

Chapter 9: Serial Communication Interface SCI. The HCS12 Microcontroller. Han-Way Huang. September 2009

Description PWM INPUT CLK MODULATOR LOGIC 8 - STAGE RIPPLE COUNTER FREQUENCY DATA REGISTER 8 - STAGE SHIFT REGISTER SCK

HT162X HT1620 HT1621 HT1622 HT16220 HT1623 HT1625 HT1626 COM

IZ602 LCD DRIVER Main features: Table 1 Pad description Pad No Pad Name Function

HT1620 HT1621 HT1622 HT16220 HT1623 HT1625 HT1626 HT1627 HT16270 COM

PAK-VIIIa Pulse Coprocessor Data Sheet by AWC

CMOS Serial Digital Pulse Width Modulator INPUT CLK MODULATOR LOGIC PWM 8 STAGE RIPPLE COUNTER RESET LOAD FREQUENCY DATA REGISTER

HT162X HT1620 HT1621 HT1622 HT16220 HT1623 HT1625 HT1626 COM

PIC Functionality. General I/O Dedicated Interrupt Change State Interrupt Input Capture Output Compare PWM ADC RS232

Data Sheet. HCTL-2000 Quadrature Decoder/Counter Interface ICs HCTL-2000, HCTL-2016, HCTL-2020

PCL-836 Multifunction countertimer and digital I/O add-on card for PC/XT/ AT and compatibles

DS1073 3V EconOscillator/Divider

Counter/Timers in the Mega8

A MORON'S GUIDE TO TIMER/COUNTERS v2.2. by

Block Diagram , E I F = O 4 ) + J H 6 E E C + E H? K E J +,, H E L A H * E = I + E H? K E J + + % 8,, % 8 +, * * 6 A. H A G K A? O

PWM research and implementation on MCS-51

Hello, and welcome to this presentation of the FlexTimer or FTM module for Kinetis K series MCUs. In this session, you ll learn about the FTM, its

1 Contents 2 2 Overview 3 3 Hardware Interface 4 4 Software Interface Register Map Interrupts 7

PSoC 4 Timer Counter Pulse Width Modulator (TCPWM)

TKT-3500 Microcontroller systems

OBSOLETE. Bus Compatible Digital PWM Controller, IXDP 610 IXDP 610

Roland Kammerer. 13. October 2010

Built-in LCD display RAM Built-in RC oscillator

R/W address auto increment External Crystal kHz oscillator

High Speed Counter (HSC) Self-Help Guide

L13: (25%), (20%), (5%) ECTE333

DS1075 EconOscillator/Divider

Transcription:

EEL 4744C: Microprocessor Applications Lecture 8 Timer

Reading Assignment Software and Hardware Engineering (new version): Chapter 14 SHE (old version): Chapter 10 HC12 Data Sheet: Chapters 12, 13, 11, 10

Introduction We want separate timing circuitry that runs independent of our main program Our main program can't keep good timing due to unexpected things like IRQ's A timer is just a digital counter

Timer Overview Timer functionality we will studied 1) Main Free Running Timer (TCNT) 2) Timer Output Compare 3) Timer Input Capture 4) Pulse Accumulator 5) Real Time Interrupt 6) Pulse Width Modulator Examples of application that use timer functionality 1) Count items on an assembly line 2) Generate a 30/70 duty cycle to control a motor 3) Measure phase of an incoming signal 4) Generate an edge every n seconds 5) Latch data from peripheral when an edge occurs 6) Generate interrupt every 50ms

An Overview of HC12 Timer 16-bit free-running counter based on system bus clock (e.g. E CLK) 8 timer channels, each configurable as: Output compare: can generate variety of waveforms by comparing counter vs. programmable register Input capture: latch value of counter on selected edge of timer input pins 16-bit pulse accumulator to count external events, or act as gated timer of internal pulses Programmable, periodic interrupt generator called RTI (real-time interrupt)

Programming HC12 Timer Most complex subsystem of the HC12, many control registers and bits All timer functions similarly programmed All have separate interrupt controls and vectors Interrupts enabled/disabled by bit in control register All have flags that get set when some programmable condition is satisfied (reset by program) Thus, when operation of one timer is learned, procedures similar for all others

Basic Timer The heart of the timers is a 16-bit, free running, Main Timer (TCNT) Other Timing functions are based off of this timer Its input clock from system bus clock, but may be prescaled via division by 1, 2, 4, 8, 16, or 32 PR2:PR1:PR0 prescale factors in control register TMSK2 PR[2:0] Bus Clk Divider 000 001 1 2 010 4 011 8 100 16 101 32

Basic Timer TCNT ($84:85) starts at $0000 on reset, runs continuously unless disabled or stopped (e.g. wait mode) Cannot be set by program in normal mode, but contents can be read at any time TCNT should be read by 16-bit read instruction (e.g. LDD $84) to fetch whole value Overflows after $FFFF, setting Timer Overflow Flag (TOF), which can use to extend range

Timer Overflow Hardware Bus Clock

Handling Timer Overflow TOF (bit-7 in TFLG2 register) can be used in two ways: polling or interrupting Polling program polls value of TOF; after asserted, must reset each time by writing 1 to TOF bit Example: Using TOF to generate delay of ~1s assuming 8MHz bus clock 122 overflows, each of 64K periods of 125ns (8.192ms) 122 64K 125ns 1 second!

TOF Polling Example ;Constant Equates NTIMES: EQU 122 ; Number of TOF's ;I/O Register Equates TFLG2: EQU $8F ; TFLG2 register TSCR: EQU $86 ; Timer system ctrl. reg TOF: EQU %10000000 ; Timer overflow flag TEN: EQU %10000000 ; Timer enable ;Clear the TOF first ldaa #TOF staa TFLG2 1 ;Enable the timer bset TSCR,TEN 2 ;Initialize the counter and wait for NTIMES ldaa #NTIMES staa counter ;spin WHILE TOF is not set spin1: tst TFLG2 3 bpl spin1 ; Branch if TOF=0 ;After the TOF=1, reset TOF ldaa #TOF staa TFLG2 ;and decrement the counter dec counter ;IF counter!= 0 spin bne spin1 Bus Clock 4 3 4 2 1

TOF Interrupt TOF can generate interrupt if TOI bit in TMSK2 register enabled, TOF interrupt vector is initialized in vector table, and I-bit unmasked in CCR Example: Use TOF interrupt to generate ~1s delay TOFVect: EQU $FFDE ;TOF vector address NTIMES: EQU 122 ;Number times to interrupt ;I/O Register Equates TOF: EQU %10000000; Timer Overflow Flag TOI: EQU %10000000; Timer Overflow Int TEN: EQU %10000000; Timer enable TSCR: EQU $86 ; Timer control reg TFLG2: EQU $8F ; TFLG2 TMSK2: EQU $8D ; TMSK2 offset See Next Page ;Initialization interrupt vector ORG TOFVect dc.w isr Bus Clock

TOF Interrupt Example ;Clear the TOF ;Timer Overflow ISR ldaa #TOF 1 ;This ISR increments a Counter staa TFLG2 ;value on each interrupt. ;Enable the timer bset TSCR,TEN 2 isr: inc Counter ; Clear the TOF bit ;Enable the interrupt system ldaa #TOF bset TMSK2,TOI ; Enable timer overflow 3 4 staa TFLG2 cli ; Unmask hc12 interrupts rti ; Return to main prog ; Do Forever start: wai ; Wait for the interrupt ;When the counter incremented by the ISR ;reaches a maximum given ;by NTIMES, do some work and reset the Bus Clock ;Counter value. ;IF Counter = maximum ldaa Counter 2 cmpa #NTIMES 3 bne endif ;DO SOME WORK HERE ; and reset the Counter clra 1/4 staa Counter ;ENDIF Counter=maximum endif: bra start ;End do forever

Output Compare Timers Each of 8 timer channels can be configured as input capture (from Port T) or output compare (to Port T), or Port T used for GP I/O as before if timers not used; choice via TIOS reg Output compare allows more accurate timing delays than the TOF Each of the 8 timer channels has a 16-bit timer capture/compare register (TCn: TC7 TC0), may be loaded or stored with 16-bit value

Output Compare Timers TCn register compared with TCNT every clock cycle; when equal then flag for that channel (CnF: C7F C0F) is set; can poll this flag, or If interrupt enabled for that channel (CnI: C7I C0I) and I-bit in CCR unmasked, then OC interrupt occurs

Timer Output Compare Hardware Bus Clock

Example: Use output compare to achieve 1ms delay (8000 cycles of 8MHz bus clock) ;Constant Equates ONE_MS: EQU 8000 ; Clocks per ms OC Time Delays ;I/O Register Equates TIOS: EQU $80 ; Input Cap/Out Compare Select TSCR: EQU $86 ; Timer System Control TCNT: EQU $84 ; TCNT register TFLG1: EQU $8E ; TFLG1 register TC1: EQU $92 ; Timer channel 1 C1F: EQU %00000010 ;Output compare 1 Flag TEN: EQU %10000000 ; Timer Enable Bus Clock

OC Time Delays Example: Use output compare to achieve 1ms delay (8000 cycles of 8MHz bus clock) Bus Clock ; Enable the timer hardware 1 bset TSCR,TEN 1 ; Enable Output Compare Channel 1 2 bset TIOS,C1F ; Just generate a 1 ms delay here ; Grab the value of the TCNT register 3 ldd TCNT addd #ONE_MS 4 std TC1 ; Now reset the flag and wait until it is set 5 ldaa #C1F staa TFLG1 ; Wait until the flag is set 6 spin: brclr TFLG1,C1F,spin 4 3 2 5/6

Changing the Timer Prescaler In last example, delay limited to 8.192ms when 8MHz bus clock used (125ns 64K) But, can divide TCNT increment of bus clock cycles using PR2:PR1:PR0 prescale bits For example: for generation of a 10ms delay Uses PR2:PR1:PR0 = 010 (i.e. 4) each clock pulse is 500ns delay = 500ns/cycle 20000 cycles = 10ms

Changing the Timer Prescaler TMSK2: EQU $8D ; Timer mask 2 PR2: EQU %00000100 ; Prescale bit 2 PR1: EQU %00000010 ; Prescale bit 1 PR0: EQU %00000001 ; Prescale bit 0 Bus Clock ; Get the current prescaler value and save it ; to be restored later ldab TMSK2 pshb ; Set the prescaler to divide by 4 bclr TMSK2,PR2 PR0 bset TMSK2,PR1... ; Now restore the original prescaler values pulb stab TMSK2 Changes to prescaler bits will affect whole timer system, so may wish to restore afterwards

OC Interrupts Longer delays can also be generated by waiting for more output comparisons to be made Example: generating 1s delay using OC flag to generate interrupt Achieved by waiting 250 complete 4ms delay times (125ns/cycle 32000 cycles = 4ms) generated by OC ~8ms for setup, interrupt occurs every 4ms, total 250 interrupts

Example: generating 1s delay using OC flag to generate interrupt OC2VEC: EQU OC Time Delays $FFEA; Timer channel 2 interrupt vector ; Constant Equates NTIMES: EQU 250 ; Number of 4 ms delays D_4MS: EQU 32000 ; Num clocks for 4 ms ; I/O Register Equates TIOS: EQU $80 ; In capt/out compare select TCNT: EQU $84 ; TCNT register TSCR: EQU $86 ; Timer control register TMSK1: EQU $8C ; Timer mask reg TFLG1: EQU $8E ; TFLG1 offset TC2: EQU $94 ; Timer register 2 TEN: EQU %10000000 ; Timer enable bit C2F: EQU %00000100 ;Output compare 2 Flag C2I: EQU C2F ; Interrupt enable IOS2: EQU C2F ; Select OC2 Bus Clock

OC Time Delays ; Enable the timer system 1 bset TSCR,TEN ; Enable output compare channel 2 2 bset TIOS,IOS2 ; Generate a 1 s delay ; Need NTIMES interrupts ldaa #NTIMES staa counter ; Grab the value of the TCNT register ldd TCNT 3 std TC2 ; Now have 8 ms to set up the system ; Set up interrupts 4 ldaa #C2F staa TFLG1 ; Clear C2F 5 bset TMSK1,C2I ; Enable TC2 Interrupt cli ; Unmask global interrupts ; Wait until the counter is 0 spin: wai ; Wait for interrupt tst counter bne spin ; When out of the spin loop ; Reinitialize the counter ldaa #NTIMES staa counter ; DO SOME WORK HERE ; Return to wait for the next interrupt bra spin ; Interrupt Service Routine ; Decrement the counter isr: dec counter ; Set up TC2 for the next interrupt 6 ldd TC2 ; Add the clock pulses addd #D_4MS 7 std TC2 ; And clear the C2F ldaa #C2F 8 staa TFLG1 rti

Timer Output Compare Hardware Bus Clock 2 1 3 4/8 5 3/6/7

OC Bit Operation OC flags can auto. set or reset Port T bits when flag is set When successful OC occurs, one of fours actions may occur at output pin on Port T: disconnected, toggled, cleared, or set Selection made for each Port T output via OMn and OLn control bits in TCTL1 and TCTL2 regs

OC Bit Operation Example: OM2:OL2 = 01 to auto. toggle Port T-2 when OC occurs periodically Program outputs square wave w/ period of 2*OC delay (50% duty cycle) TCTL2: EQU $89 OM2: EQU %00100000 OL2: EQU %00010000 ; Set up Output capture action to toggle the bit-2 bclr TCTL2,OM2 bset TCTL2,OL2

Input Capture Allows TCNT value latched when program-selected external event occurs via Port T e.g. period of pulse train found by storing TCNT at start of period (i.e. rising or falling edge), then capture count at end of period (next rising or falling edge), and take difference Two bits for each IC channel, EDGnB (EDG7B EDG0B) and EDGnA control when signal on Port T causes capture to occur (i.e. rising, falling or both edges activate) IC interrupts operate just like OC interrupts

Input Capture Hardware Bus Clock

Measure Waveform Period Bus Clock (2) bclr TIOS, %00000010 (1) bset TSCR, %1000000 (4)/(7) ldaa #%00000010 staa TFLG1 (6) ldd TC1 std First (9) ldd TC1 subd First (3) ldaa #%00000100 staa TCTL4 (5)/(8) spin loop

Pulse Accumulator Port T, bit7 can be configured as a PA input a system that "counts" events there are two operating modes 1) "Event Counting Mode" - each time an edge occur on PT7, a 16-bit counter is incremented PT7 Counter 0 1 2 3 4 5 6 7 8 2) "Gated Accumulator Mode" - when PT7 is asserted, a 16-bit counter will increment based on the Bus Clock / 64 PT7 Counter 0 1 2 3 4 5 6 7 8 Bus Clk 64

Pulse Accumulator Operating Modes Bus Clock Divide by 64 'PACNT' 'PACNT' PT7 16-BIT Counter PT7 16-BIT Counter Port Pin Event Counting Mode PAEN = 1, PAMOD = 0 Port Pin Gated Accumulator Mode PAEN = 1, PAMOD = 1

Pulse Accumulator May write to or read from PA at any time, again should do so via 16-bit load/store May select the edge (positive or negative) for event counting, or the level (high or low) for gated time accumulation, via several control bits Two flags and corresponding interrupts available: (1) PA overflow (PAOVF flag); and (2) selected input edge occurs (PAIF flag) e.g. sensor on conveyor belt counting products as they pass, it wants to take action after 24 counts initialize PA counter (PACNT) = -24, set up and use interrupt on PAOVG flag, and in ISR take appropriate action

Pulse Accumulator Setup PACTL - "16-bit Pulse Accumulator Control Register" PAEN = PA System Enable Bit - PAEN = 0, disabled (default) - PAEN = 1, enabled PAMOD = PA Mode Select Bit - PAMOD = 0, Event Counter (default) - PAMOD = 1, Gated Accumulator PEDGE = PA Edge Control Bit - if (PAMOD = 0) "Event Counter" PEDGE = 0, PEDGE = 1, Falling Edge Count (default) Rising Edge Count - if (PAMOD = 1) "Gated Accumulator" PEDGE = 0, PEDGE = 1, Active HIGH (default) Active LOW

PA Flags & Interrupts PA Flags - A flag is set upon PACNT Overflow (PAOVF) - A flag is set upon an input edge (PAIF) - PAFLG - "Pulse Accumulator Flag Register" - PAOVF = 1, event (reset by writing a '1') - PAOVF = 0, no event PA Interrupts - PAIF = 1, event (reset by writing a '1') - PAIF = 0, no event - IRQs can be generated upon PACNT Overflow (PAOVI) - IRQ's can be generated upon an input edge (PAI) - PACTL - "Pulse Accumulator Control Register" - PAOVI = 0, disabled (default) - PAOVI = 1, enabled - PAI = 0, disabled (default) - PAI = 1, enabled

Other Options for TCNT Clock Generator Two clock-select bits (CLK1:CLK0) in PACTL reg. to select clock source for TCNT reg When PA disabled (PAEN=0), bus clock prescaled by PR2:PR1:PR0 bits as before Bus clock = 8MHz clock TCNT @8MHz (0:0:0) down to 8MHz/32 = 250kHz (1:0:1) When PA enabled (PAEN=1), TCNT source can be derived from either an event signal on PT-7 in EC mode (PAMOD=0) or bus clock further divided (PAMOD=1) PAEN:CLK1:CLK0 are used for TCNT clock mux selection

TCNT Clock Generator Bus Clock

Real-Time Interrupt (RTI) RTI operates like TOF interrupt, except the periodic rate of generating interrupts is selectable Has its own vector in the vector table Enabled by RTIE bit, flag RTIF set at interval specified, and RTIF reset by 1 as before RTI rate generated by a 13-bit counter that divides bus clock by 2 13 = 8192 or more via 3 RTI prescalar bits (RTR2:RTR0), where 000 = off, 001 = 2 13, 010 = 2 14,, 111 = 2 19

Real-Time Interrupt (RTI) Bus Clock Bus clock = 8MHz intervals of 125ns 2 13 = 1.024ms (001) up to 125ns 2 19 = 65.536ms (111) Bus clock = 4MHz intervals of 250ns 2 13 = 2.048ms (001) up to 250ns 2 19 = 131.072ms (111) Real Time Interrupt (RTI) vs. Timer Overflow Interrupt Useful for slower Timer IRQ's than TOF This can be easier than counting many TOF's when looking for slower events

External Interrupts using Timer Interrupts External inputs that generate timer interrupts may be used as GP vectored, external interrupts if pins are not o/w being used for I/O or timer functions PT-7 (PA input edge or IC7 interrupt), PT-6 (IC6 interrupt),, PT-0 (IC0 interrupt), using enable bits (PAI, C7I,, C0I), flags (PAIF, C7F,, C0F), and vectors as before See Table 10.6

PWM on B32 PWM (Pulse Width Modulator) module outputs up to 4 pulse-width modulated waveforms at once

PWM Once initialized/enabled, outputs automatically with no further action from program Useful for many applications (e.g. controlling stepper motors) Programmable PERIOD and DUTY CYCLE Duty Cycle = t t DUTY PERIOD!100% PWM Port Pin t DUTY t PERIOD

Programming PWM 1) We program period in PWMPER register (s) - give in terms of clock cycles Bus Clock 2) We program duty cycle in PWMDTY register (s) - can select 25%, 50%, 75% Bus Clock 3) Can select Pulse Alignment - can select LEFT or CENTER 4) Can select Clock Input - Bus Clock / n

Example of PWM Waveforms Replicate Mirror

PWM Concatenation PWM registers and counter may be concatenated in pairs for 16-bit timing resolution PWCNT3 and PWCNT2 together, PWCNT1 and PWCNT0 together Gives longer period and higher duty-cycle resolution May have four 8-bit, two 16-bit, or one 16-bit and two 8- bit PWM registers

PWM Clock Control Four clock sources derived from bus clock: Clock A, Clock B, Clock S0, and Clock S1 Clocks A and B each may be produced as bus clock divided by 1, 2, 4,, 64, 128 Clocks S0 and S1 produced by further dividing A and B, respectively, by 2, 4, 6, 8,, 512

PWM Clock Circuit Bus Clock Bus Clock

Example Question: What is the longest PWM period available assuming 8MHz bus clock and left-aligned waveform? Answer: Achieved by using concatenated PWPER register (16- bit) and slowest clock available (i.e. S0 or S1): Bus clock period Clock A/B multiple of 128 Clock S0/S1 multiple of 512 max. # of counts = 125ns 128 512 64K = 536.87s 9 minutes!

Timers we have studied 1) Main Free Running Timer (TCNT) 2) Timer Output Compare 3) Timer Input Capture 4) Pulse Accumulator 5) Real Time Interrupt 6) Pulse Width Modulator Timer Summary What would best fit the following application? 1) Count items on an assembly line 2) Generate a 30/70 duty cycle to control a motor 3) Measure phase of an incoming signal 4) Generate an edge every n seconds 5) Latch data from peripheral when an edge occurs 6) Generate interrupt every 50ms