240 likes | 436 Views
8051F120 實做 PWM. outline. PWM 相關簡介 Timer 實做 示波器操作 PCA 元件實做 (optional). outline. PWM 相關簡介 Timer 實做 示波器操作 PCA 元件實做 (optional). PWM 訊號. Pulse Width Modulation ,脈波寬度調 變 目的:周邊 控制 實 做 delay Timer PCA 元件. Dutycycle. 在脈波週期內 的 high edge 部份 佔一個脈波週期的比率即為所謂 的 dutycycle 先決定週期
E N D
outline • PWM相關簡介 • Timer 實做 • 示波器操作 • PCA元件實做(optional)
outline • PWM相關簡介 • Timer 實做 • 示波器操作 • PCA元件實做(optional)
PWM訊號 • Pulse Width Modulation,脈波寬度調變 • 目的:周邊控制 • 實做 • delay • Timer • PCA元件
Dutycycle • 在脈波週期內的 high edge 部份佔一個脈波週期的比率即為所謂的 dutycycle • 先決定週期 • 再決定 high 跟 low 的比例
周邊控制 • 馬達 • 固定 20ms 週期 => tp= 20 ms • 依照不同的 dutycycle 有不同的轉動角度 • Vcc.接地.訊號線 • 蜂鳴器 • 不同的週期長短發出不同的高低音 • 頻率(物理) => tp 不同而有不同高低音 • 與dutycycle無關
outline • PWM相關簡介 • Timer 實做 • 示波器操作 • PCA元件實做(optional)
概念 • 上次每 5ms 就 interrupt 一次的閃燈的作業 => 週期 10ms dutycycle 為 50% 的 PWM 訊號 • 改變週期為 20ms • 改變高電位及低電位比例
實做設定 • 使用外部石英震盪器做 system clock(22118400HZ) • Timer mode:16 bit timer • Prescaled Clock Inputs:System clock / 48 • timer 數一次的時間 48/22118400 = 2.17 * 10-3 (ms) • Timer需數的次數 20 (ms) / 2.17 * 10-3 (ms) ~= 9216 • 9216 次為 20ms 週期
實做設定(補充) • System clock • 外部石英震盪器 22118400 Hz • WatchdogTimer (WDT) • Crossbar • Port Input/Output • Interrupt • IE • All intterupt • timer0
Dutycycle實做概念 • tp => 數9216次會delay 20ms 的週期 • th => 高電位數 n 次 • tl => 低電位數 m 次 • n+m = 9216 • n,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; }
outline • PWM相關簡介 • Timer 實做 • 示波器操作 • PCA元件實做(optional)
操作重點 • 打開示波器 • 正極接訊號端,負極接地 • Auto Set • 選週期及頻率
outline • PWM相關簡介 • Timer 實做 • 示波器操作 • PCA元件實做(optional)
PCA概念 • PCA(Programmable Counter Array)加強計時計數器的應用功能,能夠使硬體資源更靈活有彈性的使用。 • 組成 • 一個16-bit的counter/timer • 六個capture/compare module • PCA可設定不同 function mode 而實現多種「以計時計數器為基礎所衍生的周邊控制行為」,如比較、捕捉、脈寬調變等
8051 PCA元件(1) • PCA counter/timer • 8-bit SFRs: PCA0L and PCA0H • 訊號的頻率(週期)依照 PCA0 counter/timer 設定的 timebase 輸出 • Timebase(PCA0MD) • System clock divided by 12 • System clock divided by 4 • Timer 0 overflow • High-to-low transitions on ECI (max rate = system clock divided by 4) • System clock • External 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/disablePAC • 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 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 • 22118400HZ • Timer0 • 8 bit Conter/Timer Auto-Reload • TL0 = (256-36) • TH0 = (256-36) • PCA • 8-Bit Pulse Width Modulator Mode • Timebase:Timer0 overflow • Dutycycle • Enable • CEXnpin 連接示波器觀查結果 • 週期 • dutycycle