Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
首先谢谢您的帮忙!在您改的程序中确实可以得到正确的值,但是请您试一下去掉那个while(1),这个程序就不能正常地工作了,
#include <p30f4011.h> unsigned int ADCValue; int main(void) { ADPCFG = 0xFFFE; // <====這和你設定不同 ADCON1 = 0x00E0; ADCSSL = 0; ADCON3 = 0x1F02; ADCON2 = 0; ADCHS = 0x0000; ADPCFGbits.PCFG0 = 0; ADCON1bits.ADON = 1; while(1) <-------去掉这个无限循环就不成了 { ADCON1bits.DONE = 0; // <+++加這一行 ADCON1bits.SAMP = 1; while (!ADCON1bits.DONE); ADCValue = ADCBUF0; // <===中斷觀查點 } } 我要编写的系统中要不定时的采样,如果加了while(1),那就不能跳回到主函数中,就无法继续执行了,我只想每次采样一个通道,手动开始,不采样时关掉A/D,研究了很久,还是不知道怎么能办到?如果您知道请您指点一下,不胜感激!!
發表於: 2006/5/30 21:20
|
|||
|
Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
我試了你所寫的設定,我沒有4013,使用APP009(網站有資料)測試,全部程式如下,使用ICD2 debug mode
並無不正確的值,請自行對照一下吧! #include <p30f4011.h> unsigned int ADCValue; int main(void) { ADPCFG = 0xFFFE; // <====這和你設定不同 ADCON1 = 0x00E0; ADCSSL = 0; ADCON3 = 0x1F02; ADCON2 = 0; ADCHS = 0x0000; ADPCFGbits.PCFG0 = 0; ADCON1bits.ADON = 1; while(1) { ADCON1bits.DONE = 0; // <+++加這一行 ADCON1bits.SAMP = 1; while (!ADCON1bits.DONE); ADCValue = ADCBUF0; // <===中斷觀查點 } }
發表於: 2006/5/25 11:30
|
|||
|
Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
谢谢您的帮助!
当我用计数器T3做触发转换原时,采样值与真实值相近,也不会有什么变化!当我想手动采样,并且每次采样一次,怎么也做不好! 我用A/D转换回来的数据除以4095,再乘以5,就应该是单片机上端口的电压了吧!然后再把它对应到0-380就行了吧!电路是工厂的不方便贴,我觉得电路没问题!这是我手动采样的程序,请您帮忙看看!谢谢! ADPCFG = 0xFFFF; ADCON1 = 0x00E0; ADCSSL = 0; ADCON3 = 0x1F02; ADCON2 = 0; ADCHS = 0x0000; ADPCFGbits.PCFG0 = 0; ADCON1bits.ADON = 1; ADCON1bits.SAMP = 1; while (!ADCON1bits.DONE); ADCValue = ADCBUF0; 不知什么原因总是不对???? 请您指教! 不知道您那有没有手动采样的正确的程序?有的话能不能给我一份!不胜感激!我的邮箱是: qwg_17@163.com
發表於: 2006/5/19 14:44
|
|||
|
Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
yuyu 寫到:
參照:
1. 不知您指的差很多是何種情形呢? 數值會不會隨電壓變化? 2. 先將電路與dsPIC分開,先使用電位計(可變電阻),使AN0電壓變化在0-5V之間,對照A/D數值是否在0-1023之間? 3. 您指的應如何處理是指什麼? 4. 對DC而言,若無noise干擾,A/D值是不會有太大變化,sample rate 也不會有太大影響。 5. 找問題的方法,二分法,將軟體、硬體分開,相互驗證,有問題,最好力求知道原因,如此才能更深入了解…。個人經驗。 6. 會不會在硬體有問題呢?是否方便貼個A/D區塊電路圖? 7. 很高與能和你一同找問題,找到了也不要忘了回應,與大家分享。
發表於: 2006/5/18 9:49
|
|||
|
Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
谢谢,我以前没用过A/D转换器,不太清楚他的转换原理!
按照您上面说的办法做了以后,得到的数值没有什么太大的变化。 想请教您一下:我用A/D采样0--380的电压,经处理后转化成0--5的电压,对其进行12位A/D采样,回来的采样值应该如何处理啊?还有当我改变采样率的时候数据好像没什么变化,采样率不影响结果吗? 谢谢!初学,请您指教!
發表於: 2006/5/14 15:07
|
|||
|
Re: 求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
就先前使用的2010的經驗,使用AVSS在30MIPS會有差,你可先調降至1~2MIPS試試,看是否接近理論值,當然也有可能是取樣時間不足…等可能情形,最好使用Vref-為參考點。
發表於: 2006/5/13 10:35
|
|||
|
求教A/D转换问题!
|
||||
---|---|---|---|---|
新會員
|
请问用AVDD和AVSS做A/D的参考电压时,所得回的值会受到影响吗?
我用的是p30f4013,工作在30MIPS,以下是我的程序,只采样AN0手动采样,只采一次,但回来的值与真实值差的很多,不知道是不是时间的的问题,请您指教,谢谢! {ADPCFG = 0xFFFE; ADCON1 = 0x20E0; ADCHS = 0x0000; ADCSSL = 0x0000; ADCON3 = 0x053F; ADCON2 = 0x8000; ADCON1bits.ADON = 1; _SAMP=1; _ADIE=1; _ADIF=0; While(1){} } void _ISR _ADCInterrupt(void) { _ADIF=0; ADCValue = ADCBUF0; return; }
發表於: 2006/5/12 8:38
|
|||
|