5 pulse width modulation – Rainbow Electronics AT89LP216 User Manual
Page 32
32
3621A–MICRO–6/06
AT89LP216 [Preliminary]
.
14.5
Pulse Width Modulation
On the AT89LP216, Timer 0 and Timer 1 may be independently configured as 8-bit asymmetri-
cal (edge-aligned) pulse width modulators (PWM) by setting the PWM0EN or PWM1EN bits in
TCONB, respectively. In PWM Mode the generated waveform is output on the timer's input pin,
T0 or T1. Therefore, C/T must be set to “0” when in PWM mode and the T0 (P3.4) and T1 (P3.5)
must be configured in an output mode. The Timer Overflow Flags and Interrupts will continue to
function while in PWM Mode and Timer 1 may still generate the baud rate for the UART. Each
PWM channel has four modes selected by the mode bits in TMOD.
An example waveform for Timer 0 in PWM Mode 0 is shown in
. TH0 acts as an 8-bit
counter while RH0 stores the 8-bit compare value. When TH0 is 00H the PWM output is
set high. When the TH0 count reaches the value stored in RH0 the PWM output is set low.
Therefore, the pulse width is proportional to the value in RH0. To prevent glitches, writes to
RH0 only take effect on the FFH to 00H overflow of TH0. Setting RH0 to 00H will keep the PWM
output low.
Figure 14-5. Asymmetrical Pulse Width Modulation
Table 14-3.
TCONB
– Timer/Counter Control Register B
TCONB = 91H
Reset Value = 0010 0100B
Not Bit Addressable
PWM1EN
PWM0EN
PSC12
PSC11
PSC10
PSC02
PSC01
PSC00
Bit
7
6
5
4
3
2
1
0
Symbol
Function
PWM1EN
Configures Timer 1 for Pulse Width Modulation output on T1 (P3.5).
PWM0EN
Configures Timer 0 for Pulse Width Modulation output on T0 (P3.4).
PSC12
PSC11
PSC10
Prescaler for Timer 1 Mode 0. The number of active bits in TL1 equals PSC1 + 1. After reset PSC1 = 100B which
enables 5 bits of TL1 for compatibility with the 13-bit Mode 0 in AT89S2051.
PSC02
PSC01
PSC00
Prescaler for Timer 0 Mode 0. The number of active bits in TL0 equals PSC0 + 1. After reset PSC0 = 100B which
enables 5 bits of TL0 for compatibility with the 13-bit Mode 0 in AT89C52.
PWM Output (T0)
Counter Value (TH0)
Compare Value (RH0)