• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users






Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#8
版主
版主


查看用戶資訊
是的,一般最簡單 50% Duty 輸出的方法就是將 PR2 的值除二後寫入 CCPR1L 暫存器即可。但如需較精確解的析頻率還是要考慮 b1,b0。

發表於: 2021/7/15 10:10
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#7
資深會員
資深會員


查看用戶資訊
謝謝 Ryang 大的說明,我發現去改變那 2 位元的 LSB 對輸出影響不大,最簡單的方法就是把 Duty Cycle 當成 8 位元的解析度來做就好,所以就令 CCPR1L = PR2/2,這樣也會產生接近 50% 的方波。

發表於: 2021/7/15 9:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#6
版主
版主


查看用戶資訊
以下的程式是參考 PIC18F 的函數庫: pwm.c
使用 union 共用結構來拆出PWM Hi and Low Byte 的資料。

union PWMDC // pwm.h 中定義的 C:Program Files (x86)Microchipmplabc18v3.47h
{
    
unsigned int lpwm;
    
char bpwm[2];
};

// C:Program Files (x86)Microchipmplabc18v3.47srcpmc_commonPWM 的函數庫

void SetDCEPWM2 (unsigned int dutycycle)
{
  
union PWMDC DCycle;

  
// Save the dutycycle value in the union
  
DCycle.lpwm dutycycle << 6;

  
// Write the high byte into ECCPR1L
  
CCPR2L DCycle.bpwm[1]; b9:b2 寫入CCPR2L 暫存器

  
// Write the low byte  [B1:B0] into ECCP1CON5:4
     
CCP2CON = (CCP2CON 0xCF) | ((DCycle.bpwm[0] >> 2) & 0x30);

這新的 PWM 更新值會在下一次 Timer2 中斷發生時載入 CCPR1H 做比較。

發表於: 2021/7/13 13:06

Edited by Ryang on 2021年07月13日 20:07:01
Edited by Ryang on 2021年07月13日 20:08:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#5
資深會員
資深會員


查看用戶資訊
請問 Ryang 大:

現在 16F819 跑 8MHz,所以指令週期就是 1/(8MHz/4)=0.5us
若想製造一個 PWM 週期 = 1ms(1KHz),Duty Cycle = 50% 的方波。

設 TMR2 的 Prescaler = 4,所以計算 PR2 的值 = PWM 週期 /(Prescaler×指令週期) = 1ms/(4×0.5us) = 500,
所以 PR2 = 500。

再來 Duty Cycle 是放在 CCPR1L(MSB 8位元) 和 CCP1CON 的 bit5~4(LSB 2位元),
請問這 10 位元的值該如何計算以填入 2 個暫存器內?謝謝。

發表於: 2021/7/12 11:30
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#4
版主
版主


查看用戶資訊
Fosc 除四後產生四個機械周期:,這在震盪器的章節裡有解釋。
Q1 指令提取周期
Q2 解碼指令功能
Q3 執行指令
Q4 寫入/讀取記憶

發表於: 2021/7/9 16:27
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#3
資深會員
資深會員


查看用戶資訊
原來關鍵就是 FIGURE 9-3 裡面 TMR2 右邊的 Note 1 註釋,由於 T2CON 的 prescaler 是 2-bit,所以拿來跟 TMR2 串在一起就變成 10-bit timer,這樣就可以比對了,但是 internal Q clock 是什麼東西還是沒概念,謝謝。

發表於: 2021/7/9 15:24
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#2
版主
版主


查看用戶資訊
Timer2 + CCP1CON [5:4] 的 period 的設定是 10-bits 的長度,比較器也是 10-bits。 會被誤認為只能做 8-bits 的PWM 原因只要是再輸入的頻率。 實際上 Timer2 是看起來是使用 Fcy 輸入的,實際卻是使用 Fosc 的。 因為 Fosc/4 = Fcy 所以這裡面的除 4 就是產生 PWM 10-bits 的關鍵。這除 4 是 Q clock 有兩個位元的計數,所以這可以用 CCP1CON [5:4] 這兩位元的設定,這樣就可以達到 PWM 10-bits 的解析度。

Attach file:



jpg  擷取.JPG (108.51 KB)
16_60e7ec88bc37c.jpg 944X537 px

發表於: 2021/7/9 14:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
#1
資深會員
資深會員


查看用戶資訊
使用 PWM 模式時,PWM 的週期值是放在 PR2 暫存器,跟搭配的 TMR2 一樣是 8 位元。
而 Duty Cycle 是 10 位元解析度,放在 CCPR1L(MSB 8位元) 和 CCP1CON 的 bit5~4(LSB 2位元)。

依據這張時序圖,當 TMR2 = PR2 時 PWM 輸出 1,當 TMR2 = Duty Cycle 時 PWM 輸出 0。

TMR2 和 PR2 都是 8 位元,最大就是 FF=255(d),兩者互相比對沒問題,但 Duty Cycle 卻有 10 位元,最大是 3FF=1023(d),就算是 50% 工作週期也有 3FF/2=1FF=511(d)。

那 TMR2 怎麼計數都不可能跟 10 位元的值比較,但為什麼輸出可以正確,是 MCU 裡面會再做一個轉換比較嗎?

Attach file:



jpg  PWM_OUTPUT.jpg (25.41 KB)
2310_60e7b90303b5a.jpg 466X310 px

發表於: 2021/7/9 10:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------