Motorola DSP96002 User Manual

Page 828

background image

46

MOTOROLA

6.7.5

Period measurement mode (mode 5)

The following program illustrates the usage of the timer module for input period measure-
ment. The period is measured in this example between 0 to 1 transitions of the input signal
on TIO0 and is stored in a table (in multiples of the chip operating clock divided by 2).

org x:$100

; define buffer in X memory internal

period

ds

$100

; measure up to 256 pulses

temp

ds

$1

; temporary storage

org p:$14

; this is timer0 interrupt vector address

jsr measure

; long interrupt to measure period

....

org p:main_body

.....

move #0,x:temp

; clear temporary storage

move #period,r0

; r0 points to start of table

move #$ff,m0

; modulo 100 to wrap around on end of table

movep #$54000000,x:TCSR0

; enable timer interrupts, mode5

bset #26,x:IPR

; enable IPL for timer 1

andi #$cf,mr

; remove interrupt masking in status register

bset #31,x:TCSR0

; timer enable

......

; do other tasks

.....

measure

movep x:TCR0,d0.l

; read new counter value

move x:temp,d1.l

; retrieve former read value (initially zero)

sub d1.l,d0.l

d0.l,x:temp

; compute delta (i.e. new -old) and store the

; new read value in temp

move d0.l,x:(r0)+

; store period value in table

rti