ECE 425 Timer 1 Timer Functions Two main modes: – Input capture Used for timing external events – Match (Output compare) Allows use as a simple function.

Slides:



Advertisements
Similar presentations
Lecture 23: Registers and Counters (2)
Advertisements

The 8051 Microcontroller and Embedded Systems
Interrupts, Low Power Modes and Timer A (Chapters 6 & 8)
More fun with Timer/Counters
Programmable Interval Timer
Microprocessor and Microcontroller
EET 2261 Unit 10 Enhanced Capture Timer  Read Almy, Chapter 20.  Homework #10 and Lab #10 due next week.  Quiz next week.
Interrupts What is an interrupt? What does an interrupt do to the “flow of control” Interrupts used to overlap computation & I/O – Examples would be console.
Chapter 7 Henry Hexmoor Registers and RTL
8-Bit Timer/Counter 0 Counter/Timer 0 and 2 (TCNT0, TCNT2) are nearly identical. Differences: -TCNT0 can run off an external 32Khz clock (Tosc) or the.
Timers and Interrupts Shivendu Bhushan Summer Camp ‘13.
Counters and Registers
T IMERS - 2. O UTPUT U NIT Each capture/compare block contains an output unit. The output unit is used to generate output signals such as PWM signals.
16-Bit Timer/Counter 1 and 3 Counter/Timer 1,3 (TCNT1, TCNT3) are identical in function. Three separate comparison registers exist. Thus, three separate.
1 Timing System Timing System Applications. 2 Timing System components Counting mechanisms Input capture mechanisms Output capture mechanisms.
8254 Programmable Interval Timer
ENEE 440 Chapter Timer 8254 Register Select The 8254 timer is actually 3 timers in one. It is an upgraded version of the 8253 timer which was.
1 Chapter 4 Timer Operation (I. Scott MacKenzie).
7/23 Timers in Coldfire Processor Computer Science & Engineering Department Arizona State University Tempe, AZ Dr. Yann-Hang Lee (480)
ARM Timers.
System Clocks.
Timers ELEC 330 Digital Systems Engineering Dr. Ron Hayne
Chapter 4 TIMER OPERATION
Timers The timers of the PIC16C7X microcontroller can be briefly described in only one sentence. There are three completely independent timers/counters.
Unit 10.2 Timer Examples. Example – Music Generation Channel 6 – Set up as a timer Output to Generate Square Waves Channel 4 – Set up as a timer Output.
The 8253 Programmable Interval Timer
Lecture Set 9 MCS-51 Serial Port.
MCU: Interrupts and Timers Ganesh Pitchiah. What’s an MCU ?
Khaled A. Al-Utaibi  Interrupt-Driven I/O  Hardware Interrupts  Responding to Hardware Interrupts  INTR and NMI  Computing the.
SIGMA-DELTA ADC SD16_A Sigma-Delta ADC Shruthi Sujendra.
Timer Timer is a device, which counts the input at regular interval (δT) using clock pulses at its input. The counts increment on each pulse and store.
Accessing I/O Devices Processor Memory BUS I/O Device 1 I/O Device 2.
1 68HC11 Timer Chapter HC11 Timer Subsystem Several timing functions: Basic timing Basic timing Real time interrupts Real time interrupts Output.
Lecture 12 Multi-Function Timer Pulse Unit 2 (MTU2a)
Timers and Interrupts Anurag Dwivedi. Let Us Revise.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
8254 Timer.
1 68HC11 Timer HC11 or HC12: Chapter HC11 Timer Subsystem  Several timing functions: Basic timing Basic timing Real time interrupts Real time.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
 Seattle Pacific University EE Logic System DesignCounters-1 Shift Registers DQ clk DQ DQ ShiftIn Q3Q3 Q2Q2 DQ Q1Q1 Q0Q0 A shift register shifts.
Sequential Logic Computer Organization II 1 © McQuain A clock is a free-running signal with a cycle time. A clock may be either high or.
Counters.
TIMERS AND INTERRUPTS AVI SINGH KEVIN JOSE PIYUSH AWASTHI.
#1 of 10 Tutorial Introduction PURPOSE -To explain how to configure and use the Timer Interface Module in common applications OBJECTIVES: -Identify the.
Lecture 3 CSE 341 – Microprocessors Lecture 3 Md. Omar Faruqe UB 1228
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Overview: Using Hardware.
Networked Embedded Systems Pengyu Zhang & Sachin Katti EE107 Spring 2016 Lecture 4 Timers and Interrupts.
One more PIC18F252 example and revision for exam B222L Branislav Vuksanovic, UoP, ECE.
Timer modules in PIC 16F877.  The PIC 16F877 basically has three independent timer modules,  denoted by the symbols, TIMER-0, TIMER1,andTIMER2. . These.
EET 2261 Unit 13 Enhanced Capture Timer
Why are Timer Functions Important?
ECE 3430 – Intro to Microcomputer Systems
ECE 3430 – Intro to Microcomputer Systems
Analog Comparator An analog comparator is available on pins PE2(AIN0), PE3(AIN1) The comparator operates like any other comparator. -when (+) exceeds (-)
Homework Reading Machine Projects Labs
Clocks A clock is a free-running signal with a cycle time.
Timer and Interrupts.
AVR Addressing Modes Subject: Microcontoller & Interfacing
RX 8-Bit Timer (TMR) 4/20/2011 Rev. 1.00
8-Bit Timer/Counter 0 Counter/Timer 0 and 2 (TCNT0, TCNT2) are nearly identical. Differences: -TCNT0 can run off an external 32Khz clock (Tosc) or the.
ECE 3430 – Intro to Microcomputer Systems
Instructor: Alexander Stoytchev
Programmable Interval timer 8253 / 8254
Programmable Interval timer 8253 / 8254
Lecture 12 Multi-Function Timer Pulse Unit 2 (MTU2a)
8253 – PROGRAMMABLE INTERVAL TIMER (PIT). What is a Timer? Timer is a specialized type of device that is used to measure timing intervals. Timers can.
Wireless Embedded Systems
ECE 3430 – Intro to Microcomputer Systems
Registers and Counters
Presentation transcript:

ECE 425 Timer 1

Timer Functions Two main modes: – Input capture Used for timing external events – Match (Output compare) Allows use as a simple function generator Runs off PCLK or a scaled down version. – PCLK is CCLK * 1, ½ or ¼ – 32-bit prescale register allows long periods 2

3 Timing Terminology

Timer Overview Two independent timers 32 bit counters – 4 channels per counter Can generate interrupts on timeout/match Programmable for edge sensitivity – Rising edge, falling edge, any edge 4

Timer in a Nutshell Set up time base. – Derivative of system clock Input capture: See how many timer cycles elapse between events or just count the number of events. Match (output compare): every N cycles toggle, set or clear an output. – Can change N every time to make eccentric waveforms of arbitrary complexity. 5

Timer Registers 17 per timer – Control registers: enables, set frequency, set mode – Check & clear interrupts – Capture values for timing measurements – Counters: prescale & time base Lots of choices, lots of complexity 6

Timer Control Register Only two bits used. Bit 0: time base and prescale counters enable. Set to 1 to enable. Off (Logic 0) is default. – Both are enabled/disabled with this bit. No individual control. Bit 1: reset. Set to 1 to synchronously clear both counters. Addresses: – Timer 0: 0xE000_4004 – Timer 1: 0xE000_8004 7

Count Control Register Selects Timer or Counter mode – Timer mode: increment time base counter every PCLK or scaled PCLK rising edge. – Counter mode: timer counter is incremented on the specified edge of a Capture input pin. When in counter mode, selects which input pin will trigger the action. Addresses: – Timer 0: 0xE000_4070 – Timer 1: 0xE000_8070 8

Counter Control Register 9 Bits 1:0Description 00Timer Mode. Increment on clock rising edge 01Counter mode, increment on input rising edge 10Counter mode, increment on input falling edge 11Counter mode, increment on any input edge Input edge? That’s next.

Counter Control Registers 10 Bits 3:2 Description 00Input source is CAP0 01Input source is CAP1 10Input source is CAP2 11Input source is CAP3 CCR bits 7:4 are reserved and currently unused. Should always be left at 0.

CAP Triggers and Their Pins 11 CAP0.0 (3 pins) : P0.2, P0.22 and P0.30 CAP0.1 (1 pin) : P0.4 CAP0.2 (3 pin) : P0.6, P0.16 and P0.28 CAP0.3 (1 pin) : P0.29 CAP1.0 (1 pin) : P0.10 CAP1.1 (1 pin) : P0.11 CAP1.2 (2 pins) : P0.17 and P0.19 CAP1.3 (2 pins) : P0.18 and P0.21

CAP0-3 Each Timer has four possible input sources, CAP0-3. Each of the sources is associated with one or more pins. – Pins have multiple duties. Being able to select one of several pins for Capture triggers will simplify board/system design. – Selection is done via Pin Connect Block. When more than one pin is selected for a Capture input on a single channel, the pin with the lowest Port number wins. – Example: if pins 30 (P0.6) and 46 (P0.16) are selected for CAP0.2, only pin 30 will be used by TIMER0 to perform CAP0.2 function. 12

Timer Counter The heart of the timer system: a 32-bit counter. Incremented according to the value set in the prescale register. Increments every (Prescale + 1) PCLK cycles. – It that is zero, increments every PCLK rising edge Rolls over at terminal count (0xFFFF_FFFF). – Roll over does not generate an interrupt or have any particular significance. 13

Timer Counter Suppose you want to know how many times the counter has rolled over? – Necessary for measuring events with long periods Just set one of the match registers to generate an interrupt every time it does go to 0. Timer Counter Addresses: – Timer 0: 0xE000_4008 – Timer 1: 0xE000_

Prescale Register Set the maximum value for the Prescale Counter. – 32-bit register, range is 0 – 0xFFFF_FFFF When set to 0, Timer will run off PCLK with no scaling. – Anything else, timer will be scaled. Addresses: – Timer 0: 0xE000_400C – Timer 1: 0xE000_800C 15

Prescale Counter 32-bit counter. Runs off PCLK. Increments every PCLK cycle up to the point where it matches what was set in the Prescale Register. – When it hits, it returns to 0 on the next cycle Addresses: – Timer 0: 0xE000_4010 – Timer 1: 0xE000_

17 Comparators Bit-by-bit XOR followed by NOR reduction. Output is 1 iff all bits are equal. A0 B0 A1 B1 A2 B2 A3 B3

Match Registers 4 32-bit match registers per timer. When one matches counter value, something can be triggered. Options are – Generate an interrupt – Reset the timer – Stop the timer – Some combination of the above 18

Match Register Addresses Timer 0 MR0: 0xE000_4018 MR1: 0xE000_401C MR2: 0xE000_4020 MR3: 0xE000_4024 Timer 1 MR0: 0xE000_8018 MR1: 0xE000_801C MR2: 0xE000_8020 MR3: 0xE000_ Procedure: Write a value to one of the registers. Enable one or more of the match functions via the match control registers. When the timer matches a match register, the enabled function will trigger.

Match Control Registers Three bits per Match register Enable/disable – Interrupt on match – Stop on match – Return to zero on match Addresses: – Timer 0: 0xE000_4014 – Timer 1: 0xE000_

Match Control Bits 21 BitFunctionBitFunction 0Interrupt 0 Enable6Interrupt 2 Enable 1Reset 0 Enable7Reset 2 Enable 2Stop 0 Enable8Stop 2 Enable 3Interrupt 1 Enable9Interrupt 3 Enable 4Reset 1 Enable10Reset 3 Enable 5Stop 1 Enable11Stop 3 Enable For all functions, Logic 1 is enabled, Logic 0 is disabled. Only bits 11:0 are defined. All the rest are reserved and should always be left at 0.

Capture Registers Captures timer value when the specified event occurs. Event is programmed into Capture Control Registers – Events are edges on specified pins. Elapsed time is calculated in program by subtracting 1 st from 2 nd. – Implied: must store first somewhere else. Must check for rollover to get valid difference. 22

Capture Register Addresses Timer 0 CAP0: 0xE000_402C CAP1: 0xE000_4030 CAP2: 0xE000_4034 CAP3: 0xE000_4038 Timer 1 CAP0: 0xE000_802C CAP1: 0xE000_8030 CAP2: 0xE000_8034 CAP3: 0xE000_ Procedure: set one or more control registers to trigger on a specified edge. When the event occurs, store the timer value in a CAP register. Save the captured value in memory or another register. Wait for the next event. When that happens, subtract (adjusting for rollover, if it occurred) the second from the first, yielding the elapsed time in PCLK cycles.

Capture Control Registers Three bits per Capture Register Options are: – Capture on rising edge – Capture on falling edge – Enable interrupt – Any combination of the above Addresses: – Timer 0: 0xE000_4028 – Timer 1: 0xE000_

Capture Control Bits 25 BitFunctionBitFunction 0Capture R0 on rising edge6Capture R2 on rising edge 1Capture R0 on falling edge7Capture R2 on falling edge 2Enable interrupt on R0 event 8Enable interrupt on R2 event 3Capture R1 on rising edge9Capture R3 on rising edge 4Capture R1 on falling edge10Capture R3 on falling edge 5Enable interrupt on R1 event 11Enable interrupt on R3 event For all bits, logic 1 means enabled and logic 0, disabled. Only bits 11:0 are defined. All the rest are reserved and should always be left at 0.

External Match We’ve already seen how match works. But that is internal to the silicon. To use it as a signal generator, need to get those transitions to the outside world. That’s done through External Match. Four per timer, some can be connected to more than one pin. 26

External Match Functions Each match (4 per timer) can cause an associated output pin to: – Do nothing – Go to logic 0 (no effect if already 0) – Go to logic 1 (no effect if already 1) – Toggle – Pins must previously have been set to output (all default to input) and associated with match via Pin Control Block. 27

External Match Functions 28 ValueFunction 00Do Nothing 01Clear 10Set 11Toggle

External Match Register Four bits per timer reflecting match output as set in control bits. Will show pin output whether or not pins have been associated with the match. – It’s a R/W register but these four bits should be considered read only Eight bits setting action – Two bits per channel – Ignore, set, clear, toggle – These eight bits are for you to set. 29

External Match Register 30 BitFunctionBitsFunction 0Match 0 output5:4Match 0 control 1Match 1 output7:6Match 1 control 2Match 2 output9:8Match 2 control 3Match 3 output11:10Match 3 control Only 12 bits are defined. The rest should always be left at zeros. Addresses: Timer 0: 0xE000_4014, Timer 1: 0xE000_8014

Interrupt Register Four bits for match interrupts Four bits for capture interrupts After one is set, it can be cleared by writing a one to the same bit. – Toggle logic – Writing zeros has no effect Addresses: – Timer 0: 0xE000_4000 – Timer 1: 0xE000_

Interrupt Register 32 BitFunction 0Match channel 0 1Match channel 1 2Match channel 2 3Match channel 3 4Capture channel 0 5Capture channel 1 6Capture channel 2 7Capture channel 3

Timer Interrupt VIC only has one interrupt per timer. – Timer 0: bit 4 of VICSoftInt register, 0xFFFF_F018 – Timer 1: bit 5 of same register If more than one timer interrupt is possible, the timer ISR must read the timer interrupt register to determine which one fired. Clear interrupt in VIC (toggle logic again) as well as timer interrupt register. – ISR must do both to re-enable interrupt. 33

That’s All 17 x 2 registers. Need to initialize them to use timer subsystem. Defaults are all off. 34

Timer Operation: Interrupt & Reset 35

Timer Operation: Interrupt & Stop 36

Timer System (1 st Half) 37

Timer System (2 nd Half) 38

Timer Applications What’s the timer good for? Timing things. Like a race. How about a marathon? 39

Marathon Timer Requirements Accuracy: say 1/100 of a second. Time: track checkpoints every ¼ mile. Make it long enough for the 400 lb. Sumo wrestler. – 10 hours or so without aliasing. 40

Where Do We Start? It will be an ARM core, same peripheral units as we’ve been discussing. What functions will we need? Is it a Match function? How about input capture? What registers need initialization? 41

Processor Clock Could choose anything, but let’s stick with the lab machines: 60 MHz internal clock. How many clock ticks does 1/100 of a second take? – 600,000, which is 927C0 h And 10 hours? – 36,000 seconds, 6x10 7 cycles per second  2.16x

Clock Choice Only need to measure to 1/100 of a second. 600,000 cycles per measurement seems excessive. 2x10 12 is a pretty big number even for a 32 bit machine. – FFFF_FFFF is about 4.3 x 10 9, so there would be lots of roll overs. – Nothing wrong with that, we can handle it, but it’s an unnecessary complication. Maybe we can do something to make the timer better match the task. 43

Clock Scaling We can scale the PCLK by up to 4, then scale the timer clock by up to What would be a good number? – Only need two clock ticks per 1/100 of a second. – Get max. power savings by dividing CCLK by 4. As it happens, that’s the default: 00 to VPBDIV register – Then divide 15 MHz PCLK by something to count at around 200 Hz. 75,000: something like that can be stored in the timer’s Prescale Register. 44

Timer Setup Counter Control Register Mode (bits 1:0) – Default is timer mode, no need to do anything Counter Control Register source (bits 3:2) – May as well use the default here too, if we are only going to time one runner. How about the Match registers? What do we need to do with them? – Nothing. They are used for setting outputs and have nothing to do when timing external events. 45

More Things To Set Up Capture control registers: need to set something there. All are off by default. – Assume we’ll just use one channel. – They’re all the same. Pick one arbitrarily. – Pick an edge. Rising or falling, matters not, but usually rising is used. Both would be a bad idea. – Enable interrupt. Could theoretically make it work by polling, but this is what interrupts are for. 46

Timer Register Write Summary Assumption: using Timer 0, Channel 0 00  VPBDIV (0xE01F_C100) 75,000  Timer Prescale Register (0xE000_400C) 0000  Timer Controller Register (0xE000_4070) – Timer mode, channel 0, increment on rising edges 4  Capture Control Register (0xE000_4028) – Enable channel 0 interrupt 47

Timer ISR After enabling the timer, all the action will be in the ISR. What does it need to do? – Homework X: write a task list and then organize it into a flow chart for the marathon timer ISR. Include any necessary initialization, which may need to be done before the interrupt is enabled. 48

Output Compare Application Two tone siren. Set fast (1200 Hz) wave on an output pin. Wait half a second. Set slow (300 Hz) wave on the pin. Wait half a second. Repeat. 49

Values for 1200 Hz Want a 1200 Hz signal square wave for the siren. Suppose PCLK is 15 MHz. 15,000,000/1200/2= 6250, easily fits into a 32 bit register. No need to scale PCLK. Read Timer Counter, add 6250 & store, wait for match. – Alternate program: reset counter, only compare to Advantage: no repeated adds in ISR Disadvantage: no freerunning counter, can’t be used for other functions simultaneously Upon match, toggle output and repeat. 50

A Few More Pieces Would need a half-second timer to determine when to switch frequencies. – Maybe RTC: Interrupt when half a second has elapsed. Repeat forever. – Every half second, need to switch counts, from 1200 to 300 Hz. 300 Hz count: 1.5x10 7 / 300 / 2 = Same algorithm as before, whichever was chosen. 51

Register Initialization Use timer 1, channel 2 (arbitrary choice). 00  VPBDIV (0xE01F_C100) – 15 MHz PCLK 00  Timer Control Register (0xE ) – Enabled and not cleared, which is the default Count Control Register (0xE ) – Timer mode, increments on PCLK rising edge 00  Prescale Register (0xE C) – Don’t use prescale for now 52

More Register Initialization 20 h  Match Control register (0xE000_8014) – Trigger interrupt on match 10 h  VICSoftInt (0xFFFF_F018) – Enable interrupt 300 h  External Match Register (0xE000_803C) – Toggle on match 53

RTC Real Time Clock may be used, but… – It has no provision for interrupting at less than 1 second intervals. Is this a fatal flaw? – Not really. Run it twice as fast, so what it thinks is one second is really only half a second. Change the spec. Switch frequencies once per second instead of twice. Use another match channel instead of RTC. 54

½ Second Switch Can we easily use a second interrupt for the switch? 15 MHz PCLK: need to switch every 7.5 million cycles. 7.5x10 6 = 7270E0 h – Having a 32 bit machine can be advantageous. This would have been much more complicated with an HC12. So we can easily load another channel with 7.5 million and have two tasks running concurrently. 55

More Homework Initialize registers to do the ½ second switch without interfering with the siren frequencies. Outline the ISRs for both. – Does not need to be done in assembly language. 56

Match Siren Circuit 57 LPC214x 3.3uF Pin If the speaker is low enough power it could work. An amplifier likely would be needed. Capacitor is sized to work with input impedance of speaker (typically eight Ohms), passing frequencies of interest (300 to 1200 Hz) while blocking DC.