Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
高級會員
|
謝謝Eigen提供這麼多的建議,為了改善Eigen所說的問題,我目前的做法是這樣子:
我是用ccp2做定時中斷,做為整個動作的依據,目前是25K的速度取樣 為了確認實際情形,在進入中斷時設定一個output,離開中斷時清除該output,利用示波器確認執行週期及dutycycle是否正確? 目前週期是40uS,dutycycle大約四分之三,中斷使用30uS,中斷外使用10uS(大約值) 我用16MHzXTAL因此中斷外的程式大約等於4MHzXTAL全速執行,鷹該夠執行一些簡單的動作,RS232就不能再用中斷因此較即時的動作比較有問題 程式中如之前所說為了要快沒有做delay的動作由ccp2計時,同時在啟動A/D後立刻做通道切換,因此A/D轉換及Tacq時間是重疊在同一個時間,這段時間亦要做一些資料收集處理的動作,大部份的動作以查表代替計算 每次讀取轉換結果前皆確認GO信號已轉成0(已轉換完成)
發表於: 2009/8/13 16:41
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
資深會員
|
參考 datasheet table 19-9
讓你用 20MHZ 全速跑 12個 TAD *1.6 =19.2us Tacq 11.5 us 標準進出中斷 21cycle =4us 加一加 34.7 us 以上是什麼事都不用做的最少時間 如果你用 4Mhz 就會變成 12 *2 + 11.5+ 21 =56.5us 如果你什麼都不用做,單純進中斷切channel 啟動 AD 至少要做以下的通道切換 bcf pir1,adif movfw adresh movwf ad_buffer bcf adcon0,adon movlw .4 addwf adcon0 bcf adcon,4 bsf adcon0,adon goto $+.1;delay 11.5us ....... bsf adcon,go 也就是說,在你組合語言技術 100分的情況下, 程式不換page 不換 bank ,不用做中斷前後處理下 進中斷出中斷就要 13cycle 加上 11.5 us 充電時日, 19.2us ad 的時間 整個程序大概就提你要的 33us ,你可以利用的時間只剩下 19.2us 的ad 時間 *5 =96cycle 你大概剩下不到 96 cycle 可以在主程式之中做處理ad 抓下來的資料, 90行指令處理不完你要做的事,整個的資料就會亂成一團。 所以照你的需求,整個的程式大概就 200行以內可能寫完。
發表於: 2009/8/13 14:10
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
資深會員
|
因為電路中的寄生電容,開關動作時會產生雜訊,電壓差越大就越明顯。
話說回來,MCU with A/D 的東西要求本來就不高,如果IC本身許可的話, 影響也許在可接受範圍之內…… 所以,就等您的測試報告囉。
發表於: 2009/8/13 12:39
|
|||
The Answer to Life, the Universe, and Everything.
|
||||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
高級會員
|
我板子已完成,程式為了要快用組合語言寫的也完成大部份,經過初步的測試感覺好像可以,不過好像無法達到30K,因30K時無法做其他的事情,24K就有機會達到,目前還須做調整及驗證,是不是真的可以?
發表於: 2009/8/13 6:48
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
資深會員
|
絕對有問題 !
因取樣的通道只有一個...... 但結果如何 ----- 沒試過 不知道
發表於: 2009/8/12 18:21
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
資深會員
|
你可以直接做實驗看看...
發表於: 2009/8/12 18:06
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
高級會員
|
在datasheet上不是說在GO設定之後會將取樣保持電路與通道斷開,那這時切換通道不是就不會影響轉換結果,只要於轉換結束後取樣保持電路再次接通後給予足夠的充電時間(兩倍TAD),是不是理論上應該可以?
發表於: 2009/8/12 15:40
|
|||
|
Re: 有關快速AD轉換的問題
|
||||
---|---|---|---|---|
資深會員
|
這個做法理論上是不行的,而且也不正規。
可能會發生的問題:下一通道的電壓影響這次通道的電壓取樣值。
發表於: 2009/8/12 15:28
|
|||
|
有關快速AD轉換的問題
|
||||
---|---|---|---|---|
高級會員
|
我使用PIC16F917作快速AD轉換,利用AN0~AN3輸入,轉換速度為每秒3萬次(30K),因此在啟動轉換後不等轉換完成,立刻更換ADCON0切換至下一通道,待轉換完成後立刻再啟動下一個轉換,這樣不知會不會有問題?
發表於: 2009/8/12 13:54
|
|||
|