Transcript PCA元件實做
outline
PWM相關簡介
Timer 實做
示波器操作
PCA元件實做(optional)
outline
PWM相關簡介
Timer 實做
示波器操作
PCA元件實做(optional)
PWM訊號
Pulse Width Modulation,脈波寬度調變
目的:周邊控制
實做
delay
Timer
PCA元件
30%
低速
70%
高速
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(22118400 HZ)
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
Watchdog Timer (WDT)
Crossbar
Port Input/Output
Interrupt
IE
All intterupt
timer0
Crossbar Diagram
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元件
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 / 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 HZ
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
CEXn pin 連接示波器觀查結果
週期
dutycycle