• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: 如何讀取6個 ADC channel
#5
初級會員
初級會員


查看用戶資訊
謝謝 已經解決
小弟目前用的方法是以單數次進interrupt就讀AN0-AN3
雙數次進interrupt就讀AN4-AN5-AN2-AN3的折衷方式來做
因為在INTERRUPT裡面取完AN0-AN3之後馬上切ADCHS到AN4-AN5的話是會讀不到值的

發表於: 2007/8/1 12:54
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 如何讀取6個 ADC channel
#4
版主
版主


查看用戶資訊
ADCHS 暫存器是否忘了設定Group A~D 為 01 以選擇AN4 & AN5 為輸入。

發表於: 2007/7/31 10:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 如何讀取6個 ADC channel
#3
初級會員
初級會員


查看用戶資訊
謝謝回覆,
小弟目前的ADC是依序轉換,而且不需要太快的速度,
我目前的作法是進去中斷後,
1.讀取AN0-AN3,
2.clear ADIF=0,
3.再設定ADCHS=00010001;設定讀取AN4-AN5,
4.GO=1重啟ADC,
5.再作while(ADIF!=1)去等待ADC轉換完成
6.設回ADCHS=00000000; AN0-AN3
7.中斷結束

用此方法並沒有辦法讀到AN4-AN5的值,但AN0-AN3是正常的,所以我想是不是方法或程序上有錯誤的樣子?

發表於: 2007/7/30 19:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 如何讀取6個 ADC channel
#2
版主
版主


查看用戶資訊
1. 先考慮到你的應用程式是否一定要使用到同時取樣的應用,如果不需要的話那多久須轉換一個 AD Channel?

2. 如果不需同時取樣且每一 AD Channel 轉換的時間都一樣的話,而且相隔的AD轉換時間不是很緊的話可以考慮底下的方式 :
設定一Timer的中斷時間等於相鄰AD轉換的間隔時間,每次中斷就轉換AD並儲存(18F4431 的 AD 轉換速度很快所以在中斷裡轉應該可以) 到 ADC 相對應的Buffer(n) 裡。如此一來 ADC 的轉換就會在 Background完成,主程式就可以隨時讀取 ADC Buffer(n) 的值來用。

3. 如果一定要使用同時取樣的設計,就必須同時取樣完成後一一轉換換 AN0到AN3後,再對 AN4取樣在轉換完成後再對AN5取樣後轉換,當然這中間取樣的設定是要從設的。

發表於: 2007/7/30 11:37
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


如何讀取6個 ADC channel
#1
初級會員
初級會員


查看用戶資訊
小弟目前使用p18f4331,擁有9個adc channel,我想要使用其中的六個an0-an5,但我知道可以一次讀取4個channel AN0-AN3(group ABCD),但讀取完之後,要如何再去讀取AN4-AN5這兩個channel呢(group AB)? 是否group ABCD讀完以後,把ADCHS切到AN4 (groupA) AN5 (groupB),再重新GO=1讀取一次呢?這個方式似乎沒有用,以下是小弟程式碼,請各位前輩指教!

ADCHS=0x00; //groupABCD=AN0-AN3
ANSEL0=00111111;
ADIF=0;
ADIE=1;
GIE=1;
ADON=1;
GO=1;

void READ_ADC(void)
{
if(ADIF==1)
{
ACC_STEP=ADRESH; //an0
DEC_STEP=ADRESH; //an1
SPEED_STEP=ADRESH/4; //an2
VOLT_H=ADRESH; //an3
}
ADIF=0;
ADCHS=00010001; //AN4 (groupA) AN5(groupB),
GO=1;
if(ADIF==1)
{
OC=ADRESH; //an4
OT=ADRESH; //an5
}
ADCHS=0x00;
ADIF=0;
GO=1;
}



發表於: 2007/7/30 10:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------