Stereo System User Manual
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