Timer Interface B (TIMB)
Functional Description
MC68HC908MR16/MC68HC908MR32 — Rev. 4.0 Advance Information
MOTOROLA Timer Interface B (TIMB) 233
12.4.4.1 Unbuffered PWM Signal Generation
Any output compare channel can genera te unbuffered PWM pulses as
described in 12.4.4 Pulse-Width Modulation (PWM). The pulses are
unbuffered because changing the pulse width requires writing the new
pulse width value over the value currently in the TIMB channel registers.
An unsynchronized write to the TIMB channel registers to change a
pulse width value could cause incorrect operation for up to two PWM
periods. For example, writing a new value before the counter reaches
the old value but after the counter reaches the new value prevents any
compare during that PWM period. Also, using a TIMB ov erflow in terrupt
routine to write a new, smaller pulse width value may cause the co mpare
to be missed. The TIMB may pass the new value before it is written to
the TIMB channel registers.
Use this method to synchronize unbuffered changes in the PWM pulse
width on channel x:
• When changing to a shorter pulse width, enable cha nnel x outpu t
compare interrupts and write the new value in the output compa re
interrupt routine. The output compare interrupt occurs at the end
of the current pulse. The interrupt routine has until the end of the
PWM period to write the new value.
• When changing to a longer pulse width, enable channel x TIMB
overflow interrupts and write the new value in the TIMB overflow
interrupt routine. The TIMB overflow interrupt occu rs at the end o f
the current PWM period. Writing a larger value in an output
compare interrupt routine (at the end of the current pulse) could
cause two output compares to occur in the same PWM period.
NOTE: In PWM signal generation, do not program the PWM channel to toggle
on output compare. Toggling on output compare prevents reliable
0 percent duty cycle generation and removes the ability of the channel
to self-correct in the event of software error or no ise. Togglin g on output
compare also can cause incorrect PWM signal generation when
changing the PWM pulse width to a new, much larger value.