1 unbuffered pwm signal generation, Unbuffered pwm signal generation – Freescale Semiconductor MC68HC908MR32 User Manual

Page 222

Advertising
background image

Timer Interface A (TIMA)

MC68HC908MR32 • MC68HC908MR16 Data Sheet, Rev. 6.1

222

Freescale Semiconductor

to clear the channel pin on output compare if the polarity of the PWM pulse is 1 (ELSxA = 0). Program the
TIMA to set the pin if the polarity of the PWM pulse is 0 (ELSxA = 1).

The value in the TIMA counter modulo registers and the selected prescaler output determines the
frequency of the PWM output. The frequency of an 8-bit PWM signal is variable in 256 increments. Writing
$00FF (255) to the TIMA counter modulo registers produces a PWM period of 256 times the internal bus
clock period if the prescaler select value is $000 (see

16.7.1 TIMA Status and Control Register

).

The value in the TIMA channel registers determines the pulse width of the PWM output. The pulse width
of an 8-bit PWM signal is variable in 256 increments. Writing $0080 (128) to the TIMA channel registers
produces a duty cycle of 128/256 or 50 percent.

Figure 16-4. PWM Period and Pulse Width

16.3.4.1 Unbuffered PWM Signal Generation

Any output compare channel can generate unbuffered PWM pulses as described in

16.3.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 TIMA channel registers.

An unsynchronized write to the TIMA 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 TIMA overflow interrupt routine to write a new, smaller pulse width value may cause
the compare to be missed. The TIMA may pass the new value before it is written to the TIMA 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 channel x output compare interrupts and write the
new value in the output compare 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 TIMA overflow interrupts and write the new value
in the TIMA overflow interrupt routine. The TIMA overflow interrupt occurs at the end of 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

TCHx

PERIOD

PULSE
WIDTH

OVERFLOW

OVERFLOW

OVERFLOW

OUTPUT

COMPARE

OUTPUT

COMPARE

OUTPUT

COMPARE

TCHx

POLARITY = 1

(ELSxA = 0)

POLARITY = 0

(ELSxA = 1)

Advertising
This manual is related to the following products: