Mini dds問題
|
||||
---|---|---|---|---|
初級會員
|
請問如何用程式技巧實現利用dds來產生平均間隔的頻率呢?
頻率從10~100hz 間隔 1hz 共89段
發表於: 2004/11/18 23:02
|
|||
|
使用中斷產生頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
利用中斷並配合一個暫存器計次,使固定一個I/O PORT產生ON/OFF動作,輸出頻率.
輸入數值由10~200,但頻率間差距大小不一, 例: 輸入10, 則1/(10*2)m=50HZ ,輸入11, 則1/(11*2)m=45HZ,間距5HZ 與另一端 輸入198, 則1/(198*2)m=2.525HZ, 輸入199, 則1/(199*2)m=2.512HZ,間距0.013HZ 該如何做,使之10~200每段頻率間距平均?
發表於: 2004/11/10 18:35
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
是的,確實XCAGE值沒有被放入CCPR1L內,
另外,目前即使將T2CON bit1-0設定預除值為16, 頻率仍然很高 1khz~20khz 1.有無方法將它降至數hz~數十hz? 2.目前頻率範圍min~max與AD範圍min~max成反比, 有無方法將之修正成正比?
發表於: 2004/10/26 12:52
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
重述程式如下 MOVF FEAD,W ; 將FEAD reg=AD值取出放入W BANKSEL PR2 ; MOVWF PR2 ; W=FEAD 之值放入PR2 BANKSEL FEAD ; MOVF FEAD,W ; 將FEAD reg=AD值取出放入W MOVWF XCAGE ; W=FEAD 之值放入XCAGE reg RRF XCAGE ; 右移做 AD/2 動作 BANKSEL CCPR1L ; MOVWF CCPR1L ; 將 AD/2 值放入CCPR1L; 版主之意是要我檢查第3行 PR2=PERIOD 及第8行 CCPR1L=DUTY的值吧!我明天會再注意. 我比較懷疑XCAGE 之值是否被放入CCPR1L. 我將加入MOV XCAGE,W 試試 敝人在此特別感謝版主再次賜教 .
發表於: 2004/10/25 14:24
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
還是程式流程問題? 程式流程如下 initial --> ADC --> PWM & PWM initial --> 16轉 10 --> 輸出 -->ADC-->... (run again...) 再請不吝賜教.
發表於: 2004/10/24 22:48
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
謝謝版主賜教,
執行RRF XCAGE ; 右移做 AD/2 動作 確實CCPR1L = 1/2 PR2 我也認為此法可行,但就是不知為何頻率調高或調低,duty on跟著變動, 但duty off 週期不變(與duty on比較 極窄) 難道AD變化只能影響duty on?
發表於: 2004/10/24 12:57
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
謝謝版主賜教!已可將頻率調低.
但dutycycle 不是50%,不知是何原因? 觀察如下述: 無論頻率調高或調低,示波器頻率&duty on跟著變動, 但duty off 週期不變(與duty on比較 極窄)
發表於: 2004/10/22 18:17
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
承上述,頻率還是可變動,但DUTYCYCLE並不是50%,而是DUTY OFF被固定了,請教是何處設定錯誤?
發表於: 2004/10/22 14:00
|
|||
|
Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
AD/2動作數值有誤問題已解,是未初始cf造成
現有一事不明,頻率換算問題. 今若我調至 1200/min 及 6000/min ,使用4MHZ OSC,以上列程式而言, 則示波器顯示的頻率應各為多少?
發表於: 2004/10/22 11:59
|
|||
|