Re: 請教PIC16F1936 PWM DUTY的設定
|
||||
---|---|---|---|---|
版主
|
沒辦法,使用 ADC 轉換的結果去控制 Duty 很難不會有跳動現象的。
10MHz Fosc 的計算;10MHz/10KHz= 1000, 又1000 轉成16進制= 0x3E8, 所以 Duty(CCPRL+CON1CON<5:4>) 最高為 0x3E8 (10-bit) , PR2 = 0x3E8/4=0xFA。
發表於: 2009/9/8 15:10
|
|||
|
Re: 請教PIC16F1936 PWM DUTY的設定
|
||||
---|---|---|---|---|
新會員
|
感謝板大的回覆
小弟目前也是先用30-50次並去頭去尾做平均 ADC的效果還是算穩定但總是會有一兩個STEP換算時會有跳動 所以才想說如果可以直接由ADC 256STEP對應~那就不用除2了 降成 10NHz 就可以為 10KHz PWM 輸出 請問這個要怎麼設定?
發表於: 2009/9/8 14:34
|
|||
|
Re: 請教PIC16F1936 PWM DUTY的設定
|
||||
---|---|---|---|---|
版主
|
參照:
PWM 會抖動是因為 ADC 轉換時 LSB 會受到Digital Noice 的干擾,要降低跳動干擾可以用取 AD 的平均,或將低AD轉換跟新 Duty 的速度;或在 Sleep Mode下 ADC 使用Interal RC 做轉換,這樣 Digital Noise 的干擾會是最小的。 PR2 = 0xFF 就可以做到 256 階。20Mhz 10-bit resolution 為19.53KHz;降成 10NHz 就可以為 10KHz PWM 輸出,因 Timer2 無除二的 Prescaler。
發表於: 2009/9/8 13:47
|
|||
|
請教PIC16F1936 PWM DUTY的設定
|
||||
---|---|---|---|---|
新會員
|
各位大大好
小弟有一個10khz PWM的設定問題 就是想要用一個VR來調整PWM 1%-100%的輸出 又不想要因為ADC轉換,產生誤差 EX:下面的設定 /* * PWM registers configuration * Fosc = 20000000 Hz * Fpwm = 10000.00 Hz (Requested : 10000 Hz) * Duty Cycle = 50 % * Resolution is 10 bits * Prescaler is 4 */ PR2 = 0b01111100 ; T2CON = 0b00000101 ; CCPR1L = 0x3e ; CCP1CON = 0b00001100 ; 問題是在CCPR1L,CCPR1L控制DUTY的加減, 當CCPR1L在0x7c時輸出就會到達100%, 小弟的算法是: 0-0x7c有125個STEP,而VR經由ADC是取8 bit 255 STEP, 大約是兩倍。 因此就把VR得到值/2,丟到CCPR1L 但事出現一個問題,會有抖動的情形,抖動的情況事發生在ADC的跳動誤差和/2的進位退位的+1-1情形,駛的PWM的DUTY跳動。 根據這個情形,想問板上先進,該如何課定才能使的PWM的FULL SACLE是255個STEP,頻率必須微值10K(外接OSC20Mhz) 謝謝
發表於: 2009/9/7 22:54
|
|||
|