Pulse-Width Modulator (S12PWM8B8CV2)
MC9S12G Family Reference Manual Rev.1.27 
NXP Semiconductors 647
19.4.2.6 Center Aligned Outputs
For center aligned output mode selection, set the CAEx bit (CAEx = 1) in the PWMCAE register and the 
corresponding PWM output will be center aligned. 
The 8-bit counter operates as an up/down counter in this mode and is set to up whenever the counter is 
equal to $00. The counter compares to two registers, a duty register and a period register as shown in the 
block diagram in Figure 19-16. When the PWM counter matches the duty register, the output flip-flop 
changes state, causing the PWM waveform to also change state. A match between the PWM counter and 
the period register changes the counter direction from an up-count to a down-count. When the PWM 
counter decrements and matches the duty register again, the output flip-flop changes state causing the 
PWM output to also change state. When the PWM counter decrements and reaches zero, the counter 
direction changes from a down-count back to an up-count and a load from the double buffer period and 
duty registers to the associated registers is performed, as described in Section 19.4.2.3, “PWM Period and 
Duty”. The counter counts from 0 up to the value in the period register and then back down to 0. Thus the 
effective period is PWMPERx*2.
NOTE
Changing the PWM output mode from left aligned to center aligned output 
(or vice versa) while channels are operating can cause irregularities in the 
PWM output. It is recommended to program the output mode before 
enabling the PWM channel.
Figure 19-19.  PWM Center Aligned Output Waveform
To calculate the output frequency in center aligned output mode for a particular channel, take the selected 
clock source frequency for the channel (A, B, SA, or SB) and divide it by twice the value in the period 
register for that channel.
• PWMx Frequency = Clock (A, B, SA, or SB) / (2*PWMPERx)
• PWMx Duty Cycle (high time as a% of period):
— Polarity = 0 (PPOLx = 0)
Duty Cycle = [(PWMPERx-PWMDTYx)/PWMPERx] * 100% 
— Polarity = 1 (PPOLx = 1)
Duty Cycle = [PWMDTYx / PWMPERx] * 100%
As an example of a center aligned output, consider the following case:
PPOLx = 0
PPOLx = 1
PWMDTYx PWMDTYx
Period = PWMPERx*2
PWMPERx
PWMPERx