Re: 請教PIC16F1936 PWM DUTY的設定
|
||||
---|---|---|---|---|
新會員
|
感謝板大的回覆
小弟目前也是先用30-50次並去頭去尾做平均 ADC的效果還是算穩定但總是會有一兩個STEP換算時會有跳動 所以才想說如果可以直接由ADC 256STEP對應~那就不用除2了 降成 10NHz 就可以為 10KHz PWM 輸出 請問這個要怎麼設定?
發表於: 2009/9/8 14:34
|
|||
|
請教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
|
|||
|
Re: about APP013 data logger問題
|
||||
---|---|---|---|---|
新會員
|
謝謝RYANG大大~~
剛才算了一下~放大10倍~本身就是10*(5*(1/1024))=48.8mv 所以只變動一個值~~就可能已經是50mv在變化了 有機會再來試看看RYANG大大獎的在sleep下面a/d 細謝
發表於: 2009/6/15 15:28
|
|||
|
software PWM 問題請教
|
||||
---|---|---|---|---|
新會員
|
請問板上的先進
小弟目前使用PICDEM FS USB的開發板(OSC=20mhz)pic18f4550的timer1中斷,可以加減DUTY這個變數讓他在0-255之間能夠運作 目標是要做到6 channel 的PWM (10khz 8bit) 目前遇到的問題如下: 1.現在只用一個channel判斷式,只能達到1.44khz 2. 設定OSC的地方是system clock[osc1:osc2 src/1][PLL96mhz/2] 可是在man loop下面如果單存用 while(1) RC1^=1; 這樣子看大約只有2Mhz ,如果以設定system clk的96mhz/2=48mhz,不是應該是48/4=12mhz,可是實際上怎麼只有2mhz??不知這樣有錯誤嗎? 3.或是請先進推薦六組pwm的MCU,小弟有看到8ch pwm不過好像都是配合馬達DECORDER的,可以拿來當獨立的PWM嗎? 先謝過各位囉~~~~ //************************************************ //* Function: Initialize Timer1 * //************************************************ void InitializeTMR1(void) { T1CON=0x80; /* we are testing TIMER1 */ T1CKPS1=0; /*update values of prescalar bits*/ T1CKPS0=0; T1OSCEN=0; TMR1IF=0; /* Clear overflow flag*/ TMR1IE=1; /* Enable TIMER1 interrupts */ TMR1=0; /*Load initial value to TIMER1*/ TMR1ON=1; } Timer_Count=10; //***************************************// if (TMR1IF) { Duty_cnt++; if(Duty_cnt>=Duty) RC1=1; else RC1=0; TMR1H = (0xFFFF-Timer_Count)/256; TMR1L = (0xFFFF-Timer_Count)%256; TMR1IF=0; // Clear interrupt flag of Timer 1 }//end timer1 interrupt //***************************************//
發表於: 2009/6/15 15:24
|
|||
|
Re: about APP013 data logger問題
|
||||
---|---|---|---|---|
新會員
|
感謝大大~~
又試了幾天之後~sandisk class2的2G卡確定是可以寫入的~都很正常~因為跟人家開2G的規格~所以還是只能用兩G 另外在請問A2D的解析度~小弟用18f4550 bit換算都是50mv在跳 AD_value[0]=ADRESH*256+ADRESL; volts=((unsigned int)((((long)AD_value[0]*decay)*5)/1024)); decivolts=((unsigned int)((((long)AD_value[0]*decay)*500)/1024))%100; PS:decay是小弟分壓的倍率 謝謝大家
發表於: 2009/6/5 9:57
|
|||
|
about APP013 data logger問題
|
||||
---|---|---|---|---|
新會員
|
關於app013 的datalooger問題
小弟有從網站上download 何先生的datalogger程式 有幾個問題想請問 1.檔名是否可以自行修改為長檔名,看到裡面是8.3format 檔名太短,小弟想用日期時間來命名,但是卻太短了,所以請教各味 先進該如修改?貨是這是fat16和32的問題? 2.datalogger的程式也可以把app013模擬成mshd,小弟插sandisk 1G SD card 都可以正常寫入,WINDOWS也在RESET之後正常抓到,但換了 一張sandisk class 2G的(現在好像只能買到這種),可以正常寫入, 但windowsXP卻抓不到 sd card ,一直跑出無法開啟(有卸除式磁 碟出現),請問先進是神麼問題呢??先謝謝各位喔
發表於: 2009/5/22 18:43
|
|||
|