Re: 產生PWM波的問題
|
||||
---|---|---|---|---|
版主
|
因為指令週期為 1/4 Fosc, 所以一個指令周期會有四個clock來運作,而這四個 clock 也就化身為 Q1 ~ Q4 的時序 (Q-Clock)的兩個位元,而這兩個位元再加上PTMR的12個位元就可以得到14-bit 的PWM 的解析度。
發表於: 2006/7/13 14:40
|
|||
|
Re: 產生PWM波的問題
|
||||
---|---|---|---|---|
版主
|
60Hz=16.67mS 依你的要求需再此時間內產生九個PWM脈波,內每一個PWM周期就必須是16.67mS/9=1.852mS。
所以你的PWM設計就必須每1.852mS中斷一次依據查表再加上回授以計算出的下一個PWM Duty送出。以九個脈衝去合成一個Sine Wave似乎是太小了,用 32 或 64 階可能會好以一點
發表於: 2006/7/12 15:49
|
|||
|
Re: 產生PWM波的問題
|
||||
---|---|---|---|---|
資深會員
|
知道那麼有問題了..就是PTCON0..
PWM輸入時基為FOSC/4 (1:1預分值) PWM輸入時基為FOSC/16 (1:16預分值) 算DUTY直丟到PDCX內...FOSC/16..手算的結果 和示波器顯示出來的是一樣.. 但是使用FOSC/4..手算的結果卻跟示波器顯示出來不一樣 有誤差... 還是說FOSC/4和FOSC/16算的方法不同??
發表於: 2006/7/11 22:51
|
|||
|
Re: 產生PWM波的問題
|
||||
---|---|---|---|---|
資深會員
|
PWM_Initial
movlw b'00000000' movwf PTCON0 movlw 0xF9 movwf PTPERL movlw 0x00 movwf PTPERH movlw b'01000000' movwf PWMCON0 movlw b'00000001' movwf PWMCON1 movlw b'00010100' movwf DTCON movlw b'11111111' movwf OVDCOND movlw b'00000000' movwf OVDCONS movlw 0x00 movwf SEVTCMPL movlw 0x00 movwf SEVTCMPH movlw .200 ; 20Mhz/4 = 5 Mhz -> 200ns movwf PDC0L ; 200ns * 200= 40 us clrf PDC0H movlw .400 movwf PDC1L ; 200ns * 400= 80 us clrf PDC1H movlw .600 movwf PDC1L ; 200ns * 600= 120 us clrf PDC1H bsf PTCON1,PTEN 20MHZ的石英震盪器,MCU 18F4431 請問duty值,手算出來的值,跟示波器看到的值差好多 我PDCO PDC1 PDC2 分別放入.200 .400 .600 手算結果,所產生的DITY是40us 80us 120us,但是用示波器 看duty值,跟手算出來的值差好多 謝謝回答QQ
發表於: 2006/7/11 16:44
|
|||
|
Re: 產生PWM波的問題
|
||||
---|---|---|---|---|
資深會員
|
說正格的,與其花心思弄這個。可能用外部電路作比較省事。
不過這個問題可以到原廠找參考無刷馬達PWM驅動的文件。 範例的Duty解析超越妳的需求,所以應該可以解決你的疑惑。
發表於: 2006/7/6 22:54
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
產生PWM波的問題
|
||||
---|---|---|---|---|
資深會員
|
我想產生,如圖1的PWM就是正弦波和三角波比較出來的PWM
我是使用PIC 18F4431 MCU,我的做法是利用讀表,如圖1所示,有9個占空比,利用讀表去讀這9個占空比的值,因為要60hz,所以就利用中斷來產生,每16.67ms中斷一次,然後依序的把值丟到PWM占空比暫存器內PDCX,但是這樣做出來的結果確不像圖1那樣。 丟出來的來確都是固定的占空比,確沒辦法形成像圖1那樣,有很多不同的占空比,以下是我丟值到PDCX的波形。 pwm占空比會變化9種變化,但是如上圖所示,一次只能顯示一種固定的占空比變化,問題是要如何一次把9種占空比一次顯示出來?? . 懇請賜教,要如何去產生像圖1那樣,不規則的占空比。 .
發表於: 2006/7/6 21:04
|
|||
|