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