Capstone Design Course Lecture-2: The...

24
1 Capstone Design Course Lecture-2: The Timer By Syed Masud Mahmud, Ph.D. Copyright 2002 by Syed Masud Mahmud

Transcript of Capstone Design Course Lecture-2: The...

Page 1: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

1

Capstone Design Course

Lecture-2: The Timer

By

Syed Masud Mahmud, Ph.D.

Copyright 2002 by Syed Masud Mahmud

Page 2: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

2

The Timer• The 68HC11 has a 16-Bit Free Running

Timer.

• The count value of the timer is available in a

16-bit register by the name TCNT.

Address Register

$100E TCNT (high-byte)

$100F TCNT (low-byte)

Page 3: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

3

The Timer (contd.)• The MCU clock (E clock) is divided by a pre-

scale factor before it is used for the timer.

• The pre-scale factor is controlled by the least

significant two bits of register TMSK2.

TMSK2 : Timer Mask Register 2 $1024

Page 4: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

4

The Timer (contd.)Problem:

• How often the Timer will count up by ONE if

E=2MHz, PR1=1 and PR0=0?

Answer:

• Here the prescale factor is 8. Thus, the timer

clock frequency is 2MHz/8 = 250KHz.

• Hence, the timer will count up by ONE once

every 1/250KHz = 4 micro seconds.

Page 5: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

5

Changing PR1 and PR0• The values of PR1 and PR0 can be changed

once only during the first 64 clock cycles (E

clock) after RESET.

Page 6: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

6

Timer Overflow• A timer overflow condition is detected when the

content of the timer changes from 65535 to 0

(i.e. from $FFFF to $0000).

• When a timer overflow occurs the bit TOF of

register TFLG2 is automatically set.

TMSK2 : Timer Mask Register 2 $1024

TFLG2 : Timer Flag Register 2 $1025

Page 7: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

7

Timer Overflow Interrupt• If the bit TOI (Timer Overflow Interrupt bit) of

register TMSK2 is set by the programmer, then

the processor will be interrupted when a timer

overflow occurs.

TMSK2 : Timer Mask Register 2 $1024

TFLG2 : Timer Flag Register 2 $1025

Page 8: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

8

Timer Overflow Interrupt

Circuit

Page 9: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

9

Input Capture Functions• The pins PA0, PA1 and PA2 are used with input

capture (IC) functions of the timer.

• Each one of these three pins can be individually

programmed to capture a particular edge of a

signal.

Page 10: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

10

IC Functions (contd.)• Each input-capture function includes a 16-bit

latch, input edge-detection logic, and interrupt

generation logic.

• The 16-bit latch captures the current value of

the free-running counter when a selected edge

is detected at the corresponding timer input pin.

Page 11: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

11

TIC1, TIC2 and TIC3 Registers

Page 12: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

12

Input Capture Edge Control

TCTL2 : Timer Control Register 2 $1021

Page 13: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

13

IC Flags and IC Interrupts• The ICxF bit is automatically set to one each

time a selected edge is detected at the

corresponding input-capture pin.

• If the ICxI bit is set by the programmer then

the processor will be interrupted at the time a

selected edge is detected.

TMSK1 : Timer Mask Register 1 $1022

TFLG1 : Timer Flag Register 1 $1023

Page 14: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

14

IC Interrupt Logic

Page 15: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

15

Clearing Bits of Timer Flag Registers

• A flag bit is cleared by writing a one in the bit position.

Example-1: The IC1F bit can be cleared as follows:

LDAA #4 ; A = 00000100

STAA $1023

Example-2: The IC1F and IC3F bits can be cleared as

follows:

LDAA #5 ; A = 00000101

STAA $1023

TFLG1 : Timer Flag Register 1 $1023

Page 16: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

16

Clearing Bits of Timer Flag Registers (contd.)

• Timer flag bits can also be cleared by using a BCLR

instruction with the mask having 0s in the

corresponding bit positions.

Example: IC1F and IC3F bits can be cleared as follows:

REGBAS EQU $1000

TFLG1 EQU $23

LDX #REGBAS

BCLR TFLG1,X $FA ; Mask = 11111010

TFLG1 : Timer Flag Register 1 $1023

Page 17: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

17

Measuring Period with Input Capture

• Capture the time of first rising edge: T1

• Capture the time of second rising edge: T2

Period = T2 – T1

Page 18: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

18

Measuring Period with Input Capture• The program uses polling rather than interrupts.

• Measures period between two rising edges at IC1

pin

REGBAS EQU $1000 Starting addr. for reg. block

TCNT EQU $0E Free running counter

TIC1 EQU $10 IC1 register (16 bit)

TCTL2 EQU $21 Timer Control Reg. 2

*--,--,EDGlB,EDGlA;EDG2B,EDG2A,EDG3B,EDG3A

TMSK1 EQU $22 Timer Mask Reg. 1

*OC1I, OC2I, OC3I, OC4I, OC51, IC1I, IC2I, IC3I

TFLG1 EQU $23 Timer Flag Reg. 1

*OC1F, OC2F, OC3F, OC4F, OC5F, IC1F, IC2F, IC3F

Page 19: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

19

Measuring Period with Input CaptureORG $0200

EDG1 RMB 2 ; Location to keep time of 1st edge

PERD RMB 2 ; Location to keep value of period

ORG $1040

LDX #REGBAS ;PointS to register block

LDAA #%00010000

STAA TCTL2,X

* EDG1B = 0, :EDG1A = 1, rising edges selected

LDAA #$04

STAA TFLG1,X ;Clear IC1F bit

* Ready to capture the first rising edge

BRCLR TFLG1,X $04 * ;Wait until IC1F = 1

Page 20: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

20

Measuring Period with Input Capture* First edge detected

LDD TIC1,X ;Read time of first edge

STD EDG1 ;Save first capture value

LDAA # $04

STAA TFLG1,X ;Clear IC1F bit

* Ready to capture the second rising edge

BRCLR TFLG1,X $04 * ;Wait until IC1F = 1

* Second edge detected

LDD TIC1,X ;Read time of second edge

SUBD EDG1 ; D 2nd Edge – 1st Edge

STD PERD ; Save result in PERD

* Note the period has been measured in terms of timer

counts (or timer clock cycles)

Page 21: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

21

Measuring Pulse Width with Input Capture

• Capture the time of the rising edge: T1

• Capture the time of the falling edge: T2

Pulse Width = T2 – T1

Page 22: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

22

Measuring Pulse Width with Input CaptureORG $0200

EDG1 RMB 2 ; Location to keep time of 1st edge

PWID RMB 2 ; Location for value of pulse width

ORG $1040

LDX #REGBAS ;PointS to register block

LDAA #%00010000

STAA TCTL2,X

* EDG1B = 0, :EDG1A = 1, rising edges selected

LDAA #$04

STAA TFLG1,X ;Clear IC1F bit

* Ready to detect the rising edge

BRCLR TFLG1,X $04 * ;Wait until IC1F = 1

Page 23: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

23

Measuring Pulse Width with Input Capture* First edge detected

LDD TIC1,X ;Read time of first edge

STD EDG1 ;Save first capture value

LDAA #%00100000

STAA TCTL2,X

• EDG1B = 1, :EDG1A = 0, falling edges selected

LDAA # $04

STAA TFLG1,X ;Clear IC1F bit

* Ready to detect the falling edge

BRCLR TFLG1,X $04 * ;Wait until IC1F = 1

Page 24: Capstone Design Course Lecture-2: The Timerwebpages.eng.wayne.edu/~ad5781/ECECourses/ECE3620/Lecture_02_ECE4600.pdfTIC1, TIC2 and TIC3 Registers. 12 Input Capture Edge Control TCTL2

24

Measuring Pulse Width with Input Capture* Second edge detected

LDD TIC1,X ;Read time of second edge

SUBD EDG1 ; D 2nd Edge – 1st Edge

STD PWID ; Save result in PWID

* Note the pulse width has been measured in terms of

timer counts (or timer clock cycles)