8051F120 實做 PWM
description
Transcript of 8051F120 實做 PWM
8051F120 實做 PWM
outlinePWM 相關簡介Timer 實做示波器操作PCA 元件實做 (optional)
outlinePWM 相關簡介Timer 實做示波器操作PCA 元件實做 (optional)
PWM 訊號Pulse Width Modulation ,脈波寬度調變目的:周邊控制實做
delayTimer PCA 元件
低速
高速
30%
70%
Dutycycle在脈波週期內的 high edge 部份佔一個脈波週期的比率即為所謂的 dutycycle先決定週期再決定 high 跟 low 的比例
周邊控制馬達
固定 20ms 週期 => tp = 20 ms依照不同的 dutycycle 有不同的轉動角度Vcc. 接地 . 訊號線
蜂鳴器不同的週期長短發出不同的高低音頻率 ( 物理 ) => tp 不同而有不同高低音與 dutycycle 無關
outlinePWM 相關簡介Timer 實做示波器操作PCA 元件實做 (optional)
概念上次每 5ms 就 interrupt 一次的閃燈的作業
=> 週期 10ms dutycycle 為 50% 的 PWM 訊號 改變週期為 20ms改變高電位及低電位比例
實做設定使用外部石英震盪器做
system clock(22118400 HZ)Timer mode : 16 bit timerPrescaled Clock Inputs : System clock / 48timer 數一次的時間
48/22118400 = 2.17 * 10-3 (ms)Timer 需數的次數
20 (ms) / 2.17 * 10-3 (ms) ~= 92169216 次為 20ms 週期
實做設定 ( 補充 )System clock
外部石英震盪器 22118400 HzWatchdog Timer (WDT) CrossbarPort Input/OutputInterrupt
IEAll intterupttimer0
Crossbar Diagram
Dutycycle 實做概念tp => 數 9216 次會 delay 20ms 的週期th => 高電位數 n 次tl => 低電位數 m 次n+m = 9216n,m 比例調整就可有不同 dutycycle
Interrupt 程式void Timer_ISR(void) interrupt 1{
if(LED == 0){TH0 = (65536-1843)/256; //9216 20ms, dutycycle = 20%TL0 = (65536-1843)%256;}else{TH0 = (65536-7373)/256;TL0 = (65536-7373)%256; } LED = ~LED;
}
outlinePWM 相關簡介Timer 實做示波器操作PCA 元件實做 (optional)
操作重點打開示波器正極接訊號端,負極接地Auto Set選週期及頻率
outlinePWM 相關簡介Timer 實做示波器操作PCA 元件實做 (optional)
PCA 概念PCA ( Programmable Counter Array )加強計時計數器的應用功能,能夠使硬體資源更靈活有彈性的使用。組成
一個 16-bit 的 counter/timer六個 capture/compare module
PCA 可設定不同 function mode 而實現多種「以計時計數器為基礎所衍生的周邊控制行為」,如比較、捕捉、脈寬調變等
8051 PCA 元件
8051 PCA 元件 (1)PCA counter/timer
8-bit SFRs: PCA0L and PCA0H訊號的頻率 ( 週期 ) 依照 PCA0 counter/timer 設定的
timebase 輸出• Timebase (PCA0MD)
System clock divided by 12System clock divided by 4Timer 0 overflowHigh-to-low transitions on ECI (max rate = system
clock divided by 4)System clockExternal oscillator source divided by 8*
8051 PCA 元件 (2)• Capture/Compare Modules (PCA0CPMx)
Edge-triggered Capture Mode Software Timer (Compare) Mode High Speed Output Mode Frequency Output Mode 8-Bit Pulse Width Modulator Mode 16-Bit Pulse Width Modulator Mode
Enable / disable PAC PCA0CN
設定 dutycycle PCA0CPLn capture/compare register
硬體 function 概念 If(PCA0L == PCA0CPLn) CEXn = 1 If(PCA0L overflow) CEXn = 0
CEXn pin 為輸出訊號 ( 搭配 crossbar) => P0.0
PCA 8-Bit PWM Mode Diagram
簡單 PCA 實做 - 計算• 8-Bit Pulse Width Modulator Mode• Timebase : Timer0 overflow• PCA0 記數一次需: 20 (ms) /256 = 0.078125 (ms)• 表示 Timer0 overflow 一次要 0.078125 (ms)• 設定 Timer0 為 8 bit Conter/Timer Auto-Reload• Timer0 的 Prescaled Clock Inputs : System
clock / 48=> 48/22118400 = 2.17 * 10-3 (ms)
• 78.125 * 10-3 / 2.17 * 10-3 ~= 36=> TL0 = (256-36) , TH0 = (256-36)
簡單 PCA 實做 - 設定system clock
22118400 HZTimer0
8 bit Conter/Timer Auto-Reload TL0 = (256-36) TH0 = (256-36)
PCA 8-Bit Pulse Width Modulator Mode Timebase : Timer0 overflow Dutycycle Enable
CEXn pin 連接示波器觀查結果 週期 dutycycle