1.腳位定義及SFR 設定:

PWM/SPWM APN
新茂國際科技股份有限公司
For SM59XX/89XXA
SyncMOS SM5964 & Winbond W78E65 & Philips P89C51RD2
SyncMOS Technologies Inc.
PWM 之差異
1.腳位定義及 SFR 設定:
1.
Pin 腳的位置及名稱
IC
Pin 腳位置
P1.3(CH_0)
P1.4(CH_1)
P1.5(CH_2)
P1.6(CH_3)
P1.7(CH_4)
2.
SyncMOS
SM5964
SPWM0
SPWM1
SPWM2
SPWM3
SPWM4
Winbond
W78E65
PWM0
PWM1
PWM2
PWM3
PWM4
Philips
P89C51RD2
CEX0
CEX1
CEX2
CEX3
CEX4
SFR 函數設定
(1) 設定單一通道的 Duty Cycle
SyncMOS
SM5964
CH_0
SPWMD0 ($A4H)
CH_1
SPWMD1 ($A5H)
8 Bit
SPWMD2 ($A6H)
Software PWM CH_2
CH_3
SPWMD3 ($A7H)
CH_4
SPWMD4 ($ACH)
Winbond
W78E65
PWM0 ($DAH)
PWM1 ($DBH)
PWM2 ($DDH)
PWM3 ($DEH)
PWM4 ($CFH)
(2) 設定共同通道的頻率
SyncMOS
SM5964
CH_0~ CH_4
SPWMC ($A3.0H)
CH_0~ CH_4
SPWMC ($A3.1H)
Philips
P89C51RD2
CCAP0H ($FAH) CCAP0L ($EAH)
CCAP1H ($FBH) CCAP1L ($EBH)
CCAP2H ($FCH) CCAP2L ($ECH)
CCAP3H ($FDH) CCAP3L ($EDH)
CCAP4H ($FEH)
CCAP4L ($EEH)
Winbond
W78E65
PWMP ($D9H)
Philips
P89C51RD2
CCON ($D8H=40H)
可選擇 4 種不同 SPWM 可選擇 256 種不同 PWM 可選擇 4 種不同 PWM
Clock
Clock
Clock
(3) 設定 PWM 啟動
SyncMOS
Winbond
Philips
SM5964
W78E65
P89C51RD2
CH_0 P1CON(9BH.3) PWMCON1(DCH.0) PWMCON1(DCH.2) CCAPM0(&DAH=42H)
CH_1 P1CON(9BH.4) PWMCON1(DCH.1) PWMCON1(DCH.3) CCAPM1(&DBH=42H)
CH_2 P1CON(9BH.5) PWMCON1(DCH.4) PWMCON1(DCH.6) CCAPM2(&DCH=42H)
CH_3 P1CON(9BH.6) PWMCON1(DCH.5) PWMCON1(DCH.7) CCAPM3(&DDH=42H)
CH_4 P1CON(9BH.7) PWMCON2(CEH.0) PWMCON2(CEH.2) CCAPM4(&DEH=42H)
1
FAE 2004/01
新茂國際科技股份有限公司
PWM/SPWM APN
SyncMOS Technologies Inc.
For SM59XX/89XXA
2.各家 PWM 功能之使用方式:
一. SyncMOS SM5694
1. SPWMC (0xAC)-設定 SPWM 的頻率
Read/Write
PDIV1
PDIV0
Reset Value
0
0
PDIV[1:0]:設定外部頻率的被除數以決定 SPWM 時脈. 有 4 種除頻的方式(#00H~#03H).
PDIV1
PDIV0
Divider
0
0
2
0
1
4
1
0
8
1
1
16
SPWM clock=1/T=Fosc/Divider
SPWM 的輸出頻率=SPWM clock/32=(Fosc/Divider)/32
範例 :一組 SPWM 輸出週期頻率的計算方式:
設 Fosc=20MHZ,SPWM 的 PDIV[1:0]= #03H(Divider=16)
SPWM clock=20MHZ/16=1.25MHZ
SPWM 的輸出頻率=1.25MHZ/32=39.1KHZ
2. SPWMD[4:0] (0xAC,0xA7,0xA6,0xA5,0xA4)
BRM1
BRM0
Read/Write SPWMD4 SPWMD3 SPWMD2 SPWMD1 SPWMD0 BRM2
Reset Value
0
0
0
0
0
0
0
0
SPWMD[4:0]:為 SPWM 資料暫存器,它決定 SPWM 的輸出波形.
BRM[2:0]:將要插入 1~7 個狹窄時脤在 8 個 SPWM 週期架構之間(即為將餘數插入 8 個週期之間).
3. P1CON (0x9B)-設定 SPWM 的啟動
Read/Write SPWM4E SPWM3E SPWM2E SPWM1E SPWM0E
Reset Value
0
0
0
0
0
SPWM[4:0]E:初始值為 0,當位元設定為 1 時,對應 Prot1 的腳位即為 SPWM 的功能,當設定為 0 時
SPWM 的腳位即為一般的 I/O Pin.
SyncMOS SM5694 程式範例:
MOV
MOV
MOV
MOV
PWM1:
MOV
DJNZ
END
0A3H, #03H
0A4H, #80H
09BH,#08H
R4,#0FFH
; SPWMC (0A3H)=03 ->設定 SPWM 的頻率(Divider=16).
; SPWMD0 (0A4H)=80H ->設定輸出波形為 50/50.
; P1CON (09BH)=08 ->設定 P1.3 為 SPWM 輸出,啟動 SPWM.
;此行以下為 FF 至 00 的波形變化.
0A4H,R4
R4,PWM1
; SPWMD0 (0A4H)=R4
2
FAE 2004/01
新茂國際科技股份有限公司
PWM/SPWM APN
SyncMOS Technologies Inc.
For SM59XX/89XXA
二. Winbond W78E65
1. PWMP (0xD9)
PWMP
PWMP
PWMP
PWMP
PWMP
PWMP
Read/Write
PWMP
Reset Value
0
0
0
0
0
0
0
PWMP-設定 PWM 的頻率,可從 00H~FFH 下去做設定共有 256 種的遞增速率.
Fpwm=Fosc/2*(1+PWMP)*255
PWMP
0
範例 :PWM 輸出週期頻率的計算方式:
設 Fosc=16MHZ,SPWM 的 a. PWMP=0(輸出頻率最大值) b. PWMP=255(輸出頻率最小值)
Fpwm=16MHZ/2*(1+0)*255=31.37KHZ
Fpwm=16MHZ/2*(1+255)*255=123HZ
2. PWMn[4:0] (0xDA,0xDB,0xDD,0xDE,0xCF)
PWMn
PWMn
Read/Write
PWMn
Reset Value
0
0
0
PWMn[4:0]:它決定 PWM 的輸出波形.
PWMn
0
PWMn
0
PWMn
0
PWMn
0
PWMn
0
3. PWMCON1 (0xDC)-設定 PWM 的啟動
Read/Write PWM3OE PWM2OE ENPWM3 ENPWM2 PWM1OE PWM0OE ENPWM1 ENPWM0
Reset Value
0
0
0
0
0
0
0
0
4. PWMCON2 (0xCE)-設定 PWM 的啟動
PWM4OE
ENPWM4
Read/Write
Reset Value
0
0
0
0
0
0
0
0
PWMCON1&PWMCON2 共有五組設定值,需將 ENPWM0&PWM0OE 同時 enable,即為 PWM 功
能.
5. 8bit counter -有 5 個共同的 counter 同時計數和 PWMn 下去做比較.
a. PWMn>counter
Output 為 high
b. PWMn<counter
Output 為 low
電路圖請參考 Winbond W78E65 的 Data Sheet 18 page.
Winbond W78E65 程式範例:
MOV
MOV
MOV
MOV
MOV
PWM1:
MOV
DJNZ
END
0D9H, #03H
0DAH, #0
0DCH,#0FFH
0CEH,#0FFH
R4,#0FFH
; PWMP (0D9H)=03 ->設定 PWM 的頻率.
; PWM0 (0DAH)=0 ->設定輸出波形.
; PWMCON1 (0DCH)=0FF ->設定 PWM 輸出,啟動 PWM.
; PWMCON2 (0CEH)=0FF ->設定 PWM 輸出,啟動 PWM.
;此行以下為 FF 至 00 的波形變化.
0DAH,R4
R4,PWM1
; PWM0 (0DAH)=R4
3
FAE 2004/01
新茂國際科技股份有限公司
PWM/SPWM APN
SyncMOS Technologies Inc.
For SM59XX/89XXA
三. Philips P89C51RD2
※ PCA 為可程式化計數器陣列
PWM 包含在 PCA 的其中一項功能.
1. CCON (0xD8)-啟動 Timer 位元= #40H
CR
CCF4
CCF3
CCF2
Read/Write
CF
Reset Value
0
1
0
0
0
0
CR : PCA counter run control bit 設 CR=1,介由軟體方式控制啟動 counter.
CCF1
0
CCF0
0
TOGn
0
PWMn
1
ECCFn
0
CPS1
0
CPS0
0
ECF
2. CCAPMn[4:0] (0xDA,0xDB,0xDC,0xDD,0xDE)= #42H
ECOMn CAPPn CAPNn
MATn
Read/Write
Reset Value
0
1
0
0
0
ECOMn : Enable comparator.設 ECOMn=1,啟動比較器
PWMn : 設 PWMn=1,打開 CEXn pin 去使用 PWM 的輸出.
3. CL 為遞增速率,是由以下 4 種方式的其中一種去控制
Read/Write
Reset Value
CIDL
-
WDTE
-
-
-
-
-
CPS[1:0]:計時計數器的來源
CPS1 CPS0
0
0 內部除頻 clock,fosc/6 in 6-clock mode(fosc/12 in 12-clock mode)
0
1 內部除頻 clock, fosc/2 in 6-clock mode(fosc/4 in 12-clock mode)
1
0 Timer 0 overflow
1
1 外部 clock at ECI/P1.2 pin.(max. rate= fosc/4 in 6-clock mode,fosc/8 in 12-clock
mode)
4. CCAPnH (0xFA,0xFB,0xFC,0xFD,0xFE)
CCAPnL (0xEA,0xEB,0xEC,0xED,0xEE)
CCAPnH 將值送給 CCAPnL, CCAPnL 和 CL 下去做比較輸出為
a. CL<CCAPnL
Output 為 low
b. CL=>CCAPnL
Output 為 high
電路圖請參考 Philips P89C51RD2 的 Data Sheet 39 page(Figure35).
Philips P89C51RD2 程式範例:
MOV
MOV
MOV
PWM1:
MOV
DJNZ
END
0D8H, #40H
0DAH, #42H
R4,#0FFH
; CCON (0D8H)=40 ->設定 Timer 位元.
;CCAPM0 (0DAH)=42 ->啟動 PWM Mode.
;此行以下為 FF 至 00 的波形變化.
0FAH,R4
R4,PWM1
; CCAP0H (0FAH)=R4
4
FAE 2004/01