
Timer/PWM (TPM) Module
MC9S08GB/GT Data Sheet, Rev. 2.3
158
Freescale Semiconductor
generation of 100 percent duty cycle is not necessary). This is not a significant limitation because the
resulting period is much longer than required for normal applications.
TPMxMODH:TPMxMODL = $0000 is a special case that should not be used with center-aligned PWM
mode. When CPWMS = 0, this case corresponds to the counter running free from $0000 through $FFFF,
but when CPWMS = 1 the counter needs a valid match to the modulus register somewhere other than at
$0000 in order to change directions from up-counting to down-counting.
Figure 10-4
shows the output compare value in the TPM channel registers (multiplied by 2), which
determines the pulse width (duty cycle) of the CPWM signal. If ELSnA = 0, the compare match while
counting up forces the CPWM output signal low and a compare match while counting down forces the
outputhigh.ThecountercountsupuntilitreachesthemodulosettinginTPMxMODH:TPMxMODL,then
counts down until it reaches zero. This sets the period equal to two times TPMxMODH:TPMxMODL.
Figure 10-4. CPWM Period and Pulse Width (ELSnA = 0)
Center-alignedPWMoutputstypicallyproducelessnoisethanedge-alignedPWMsbecausefewerI/Opin
transitions are lined up at the same system clock edge. This type of PWM is also required for some types
of motor drives.
Because the HCS08 is a family of 8-bit MCUs, the settings in the timer channel registers are buffered to
ensure coherent 16-bit updates and to avoid unexpected PWM pulse widths. Writes to any of the registers,
TPMxMODH,TPMxMODL,TPMxCnVH,andTPMxCnVL,actuallywritetobufferregisters.Valuesare
transferred to the corresponding timer channel registers only after both 8-bit bytes of a 16-bit register have
beenwrittenandthetimercounteroverflows(reversesdirectionfromup-countingtodown-countingatthe
end of the terminal count in the modulus register). This TPMxCNT overflow requirement only applies to
PWM channels, not output compares.
Optionally,whenTPMxCNTH:TPMxCNTL = TPMxMODH:TPMxMODL,theTPMcangenerateaTOF
interrupt at the end of this count. The user can choose to reload any number of the PWM buffers, and they
will all update simultaneously at the start of a new period.
Writing to TPMxSC cancels any values written to TPMxMODH and/or TPMxMODL and resets the
coherency mechanism for the modulo registers. Writing to TPMxCnSC cancels any values written to the
channel value registers and resets the coherency mechanism for TPMxCnVH:TPMxCnVL.
PERIOD
PULSE WIDTH
COUNT=
COUNT=0
OUTPUT
COMPARE
(COUNT UP)
OUTPUT
COMPARE
(COUNT DOWN)
COUNT=
TPMxMODH:TPMx
TPM1C
TPMxMODH:TPMx
2 x
2 x