Title: ECE3120: Chapter 8 Timer Functions Pulse Accumulator
1ECE3120 Chapter 8- Timer FunctionsPulse
Accumulator
- Dr. Xubin He
- http//iweb.tntech.edu/hexb
- Email hexb_at_tntech.edu
- Tel 931-3723462, Brown Hall 319
2Pulse Accumulator
- The HCS12 standard timer system has a 16-bit
pulse accumulator PACA. - The HCS12 ECT system has four 8-bit pulse
accumulators (PAC3PAC0). - Two adjacent 8-bit pulse accumulators can be
concatenated into a 16-bit pulse accumulator. - PAC3 and PAC2 can be concatenated into the 16-bit
PACA whereas PAC1 and PAC0 can be concatenated
into the 16-bit PACB. - There are four possible pulse accumulator
configurations - Two 16-bit pulse accumulators PACA and PACB
- One 16-bit pulse accumulator PACA and two 8-bit
pulse accumulators PAC1 and PAC0 - One 16-bit pulse accumulator PACB and two 8-bit
pulse accumulators PAC3 and PAC2 - Four 8-bit accumulators PAC3PAC0
- Four 8-bit pulse accumulators PAC3PAC0 are
sharing the signal pins PT3PT0. - When concatenated into 16-bit pulse accumulators,
PACA shares the PT7 pin whereas PACB shares the
use of PT0 pin.
3Pulse Accumulator Operation Modes
- Event counting mode. The 16-bit PACA can operate
in this mode and count the number of events
arrived at the PT7 pin. The 16-bit PACB and all
four 8-bit pulse accumulators can operate only in
this mode. - Gated accumulation mode. The 16-bit PACA can also
operate in this mode. As long as the PT7 signal
is active (can be high or low), the PACA counter
is clocked by a free-running E ? 64 signal. - The active edge of the PACB and PAC3PAC0 are
identical to those of IC0 and IC3IC0,
respectively. Therefore, one needs to use the
TCTL4 register to select the active edges for
these pulse accumulators.
4(No Transcript)
5(No Transcript)
6Interrupt Sources for Pulse Accumulators
- The 16-bit PACA has two interrupt sources
PT7-edge and PACA counter overflow. - Only two (PAC3 and PAC1) of the 8-bit pulse
accumulators can generate interrupt. - These two pulse accumulators can interrupt
whenever their counters overflow. - PACB can interrupt the MCU whenever its upper
8-bit counter overflows.
7Registers Related to Pulse Accumulators
- The operation of the 16-bit PACA is controlled by
the PACTL register. The contents of this register
are shown in Figure 8.27. - PACA has a 16-bit counter which comprises of PAC3
and PAC2. This 16-bit counter can be accessed by
using the name PACNT. - The status of the PACA is recorded in the PAFLG
register. - The operation of the PACB is controlled by the
PBCTL register. - The status of PACB is recorded in the PBFLG
register. - Each of the 8-bit pulse accumulators can be
enabled by setting a proper bit in the ICPAR
register. - Each of the 8-bit pulse accumulator also has a
holding register (PA3HPA0H). - The user can prevent the 8-bit pulse accumulators
from counting further than FF by setting the
PACMX bit of the ICSYS register.
8(No Transcript)
9(No Transcript)
10(No Transcript)
11(No Transcript)
12- Example 8.13 Suppose that certain events are
converted into pulses and connected to the PT7
pin. Write a program that enables the PACA to
generate an interrupt to the MCU when N events
have occurred.
- Solution By writing the 2s complement of N, the
PACA will interrupt the MCU when the nth event
arrives
include "c\miniide\hcs12.inc" N equ 1350 org
1500 lds 1500 set up stack
pointer movw paov_isr, UserPAccOvf set up
PAOV interrupt vector ldd N place the 2s
complement in PACNT coma comb addd 1
std PACNT movb 52,PACTL enable
PACA, event counting mode, active edge is
rising cli enable PAOV interrupt swi pao
v_isr movb PAOVF,PAFLG clear the PAOVF
flag rti end
13Procedure for Measuring Signal Frequency Using
the PA Function
- Step 1
- Connect the signal to the PT7 pin.
- Step 2
- Set up the PACA to operate in event counting
mode. - Step 3
- Use one of the output-compare functions to create
a 1-second time interval or call the library
delay function. (Or use the modulus down
counter). - Step 4
- Use a memory location to keep track of the number
of times that the PACNT overflows. - Step 5
- Enable the PAOV interrupt.
- Step 6
- Disable the PAOV interrupt at the end of one
second. - The frequency of the unknown signal is given by
the following equation - frequency paov_cnt 216 PACNT
- The assembly and C programs for measuring signal
frequency is in the following pages
14include "c\miniide\hcs12.inc" org 1000 oc_c
nt rmb 1 paov_cnt rmb 2 use to keep track of
PACNT overflow count frequency rmb 4 hold the
signal frequency org 1500 lds 1500 movw pao
v_isr,UserPAccOvf set up PAOV interrupt
vector movb 50,oc_cnt prepare to perform 50
OC0 actions ldd 0 std PACNT let PACNT count
up from 0 std paov_cnt initialize PACNT
overflow count to 0 std frequency initialize
frequency to 0 std frequency2 " movb 90,TSC
R1 enable TCNT and fast timer flag
clear bset TIOS,OC0 select OC0
function movb 03,TSCR2 set prescaler to
TCNT to 8 bclr DDRT,80 configure PT7 for
input configure PA function enable PA, select
event counting mode, rising edge of PAI signal
increments the PACNT counter, enable PAOV
interrupt movb 52,PACTL cli enable PAOV
interrupt ldd TCNT
15sec_loop addd 60000 std TC0 brclr TFLG1,C0F,
wait for 20 ms here ldd TC0 dec oc_cnt bne sec
_loop movb 0,PACTL disable PA
function sei disable interrupt ldd PACNT std
frequency2 ldd paov_cnt std frequency swi pao
v_isr movb PAOVF,PAFLG clear the PAOVF
flag ldx paov_cnt increment PACNT
overflow inx count by 1 stx paov_cnt rti
end
16Using the PA Function to Measure Pulse Duration
- Step 1
- Select gated time accumulation mode, and
initialize PACNT to 0. - Step 2
- Select the falling edge as the active edge, which
will enable TACNT to count when the PAI pin is
high. - Step 3
- Enable the PAI active edge interrupt and wait for
the arrival of the active edge of PAI. - Step 4
- Stop the pulse accumulator counter when the
interrupt arrives. - To measure long pulse, we need to keep track of
PA overflow - pulse_width (216 paov_cnt) PACNT 64TE
- Example 8.13 Write a program to measure the
duration of an unknown signal connected to the
PAI pin. - Solution The assembly program is as follows
17include "c\miniide\hcs12.inc" org 1000 paov_
cnt ds.b 1 use to keep track of the PACNT
overflow count pulse_width ds.b 3 hold the
pulse width org 1500 movw paov_isr,UserPAccOvf
set up PAOV interrupt vector ldd 0 std PACNT
let PACNT count up from 0 clr paov_cnt
initialize PACNT overflow count to
0 movb 0,TSCR2 set TCNT timer prescaler to
1 movb 72,PACTL bclr DDRT,80 configure
PAI pin for input cli enable PAOV
interrupt brclr PAFLG,PAIF, wait for the
arrival of the falling edge of PAI
movb 0,PACTL disable PA function sei
disable interrupt ldd PACNT std pulse_width1 l
daa paov_cnt staa pulse_width swi
paovISR movb PAOVF,PAFLG inc paov_cnt rti e
nd
18Next
- Pulse Width Modulation
- Read Chapter 8.10