• slider image 276
  • slider image 277
  • slider image 278
  • slider image 279
  • slider image 280
  • slider image 281
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


dsPIC33EP64GS502 ADC抓取疑問
#1
初級會員
初級會員


查看用戶資訊
各位先進好

我使用dspic33ep64GS502搭配XIDE 與MCC 來讀取ADC
先將DC訊號輸入至AN1腳位
調整電壓 確認ADC數值會跟著電壓高低變化
再將10khz 1Vpp的sin波輸入至AN1腳位
觀察x[100]內數值卻都是同一個值
感覺ADC 只抓了一次就不會再繼續抓
請問是我程式哪裡沒設定好嗎 感謝

MCC的選擇如下
Enable ADC , conversion clock source=FOSC/2 (3.8us) ,
shared core sampleing time=3us
core1 enable, AN1 ,custom name=channel_AN1,
trigger source = TMR1 , Compare=none, Interrupt enable,
THX




#include "mcc_generated_files/system.h"
#include "mcc_generated_files/mcc.h"
#include "mcc_generated_files/adc1.h"
#include "mcc_generated_files/pin_manager.h"
#include "mcc_generated_files/interrupt_mamager.h"
#include "xc.h"
#include "p33EP64GS502.h"
#include "libpic30.h"

int X[100];
int i=0;

int main(void)
{
SYSTEM_Initialize();
ADC1_core1ChannelSelect(channel_AN1);

while(1)

{
// while(!ADC1_IsCore1ConversionComplete())
// {
// }
// 若此迴圈沒有mark掉 會卡在這

if (i<99)
{
x[i]=ADC1_Core1ConversionResultGet();
i=i+1;
}
}

return 1;

}

發表於: 12/16 19:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#2
初級會員
初級會員


查看用戶資訊
ADC1_Initialize的內容如下

ADCON1L=(0x8000&0x7FFF);
ADCON1H=0x60;
ADCON2L=0x00;
ADCON2H=0x16;
ADCON3L=0x00;
ADCON3H=(0x02&0xFF00)
ADCON4L=0x00;
ADCON4H=0x00;
ADMOD0L=0x00;
ADMOD1L=0x00;
ADIEL=0x02;
ADIEH=0x00;
ADCMP0ENL=0x00;
ADCMP1ENL=0x00;
ADCMP0ENH=0x00;
ADCMP1ENH=0x00;
ADCMP0LO=0x00;
ADCMP1LO=0x00;
ADCMP0HI=0x00;
ADCMP1HI=0x00;
ADFL0CON=0x400;
ADFL1CON=0x400;
ADCMP0CON=0x00;
ADCMP1CON=0x00;
ADLVLTRGH=0x00;
ADCORE0L=0x00;
ADCORE1L=0x00;
ADCORE2L=0x00;
ADCORE3L=0x00;
ADCORE0H=0x300;
ADCORE1H=0x300;
ADCORE2H=0x300;
ADCORE3H=0x300;
ADEIEL=0x00;
ADEIEH=0x00;
ADCON5H=(0x1500&F0FF)
IFS6bits.ADCANIF=0;
IEC6bits.ADCAN1IE=1
ADCON5Hbits.WARMTIME=0xF;
ADCON1Lbits.ADON=0x1;
ADC1_Core1PowerEnable();
ADC1_CoreCalibration();
ADTRIG0L=0xC00;
ADTRIG0H=0x00;
ADTRIG1L=0x00;
ADTRIG1H=0x00;
ADTRIG4H=0x00;
ADTRIG5L=0x00;

發表於: 12/16 19:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#3
版主
版主


查看用戶資訊
會不會在 while(1) 迴圈抓 ADC 的資料太快了,導致 ADC 都沒有時間做下一次的轉換抓走的都是同一筆的資料。

建議加個 for 的 delay 迴圈,降低抓取 ADC 的速度看看。

發表於: 12/17 12:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#4
初級會員
初級會員


查看用戶資訊
Ryan好
我有在getadc之前讓某個io輸出high
Gateadc之後讓io輸出low
看起來每抓一次adc大約會花5us
抓100次大概也會花500us

另外程式跑一陣子按暫停後去看adbuf1的值
和x[i]內的值是一樣的
感覺像是只有轉換ㄧ次Ad值
就沒有再繼續轉換
所以adbuf1也沒有繼續更新

發表於: 12/17 14:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#5
版主
版主


查看用戶資訊
你的 ADC 的專換機制是自動轉換還是透過 Timer1 的觸發轉換? 如果是透過 Timer1 的觸發轉換髂一定要等 Timer1 完成觸發轉換後到中斷裡去讀取 ADC 的值,或設個旗號在主回圈裡做判斷看是否已完成了 ADC 的轉換工作。

先檢查一下 Timer1 的動作,再檢查 ADC 的轉換。

發表於: 12/17 16:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#6
初級會員
初級會員


查看用戶資訊
trigger source我是選擇timer1
因為我試過選擇none 和 osc1 則連一筆都抓不到
請問是要選擇哪一個trigge source才能讓ADC會自己重複轉換

發表於: 12/17 16:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#7
版主
版主


查看用戶資訊
要不要先参考一下教育訓練光碟下的 dsPIC30F Module Training 的教材,裡面有一 ADC 使用的章節,那裡就有說明手動轉換、時脈自動觸發轉換及使用 Timer 的觸發轉換的說明。

我有請同事寫一下範例,完成後會貼上來的。

發表於: 12/18 9:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#8
管理員
管理員


查看用戶資訊
我做的實驗,透過dsPIC33EP256MU806
ADC:10Bit,Trigger source:Timer 3 (100us->10K)
VR轉動,ADC可以正常取樣數值
讓你交互比對

Attach file:


Link only for registered users

發表於: 12/18 11:28

Edited by Darren on 2020年12月18日 12:01:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#9
初級會員
初級會員


查看用戶資訊
兩位好
我有去看推薦的教學內容
利用APP026-2學習板 使用自動轉換
可讓AD值變化顯示在LCD上
但dsPIC33EP64GS502的trigger source中 看起來沒有自動轉換這個選項
是因為這功能沒有了嗎 或是我有地方誤解了
THX

dsPIC33FJ128MC708A trigger source定義
111 = Internal counter ends sampling and starts conversion (auto-convert)
110 = Reserved
101 = Reserved
100 = GP timer (Timer5 for ADC1, Timer3 for ADC2) compare ends sampling and starts conversion
011 = MPWM interval ends sampling and starts conversion
010 = GP timer (Timer3 for ADC1, Timer5 for ADC2) compare ends sampling and starts conversion
001 = Active transition on INT0 pin ends sampling and starts conversion


dsPIC33EP64GS502 trigger source定義
11111 = ADTRG31
11110 = Reserved
11101 = Reserved
11100 = PWM Generator 5 current-limit trigger
11011 = PWM Generator 4 current-limit trigger
11010 = PWM Generator 3 current-limit trigger
11001 = PWM Generator 2 current-limit trigger
11000 = PWM Generator 1 current-limit trigger
10111 = Output Compare 2 trigger
10110 = Output Compare 1 trigger
10101 = Reserved
10100 = Reserved
10011 = PWM Generator 5 secondary trigger
10010 = PWM Generator 4 secondary trigger
10001 = PWM Generator 3 secondary trigger
10000 = PWM Generator 2 secondary trigger
01111 = PWM Generator 1 secondary trigger
01110 = PWM secondary Special Event Trigger
01101 = Timer2 period match
01100 = Timer1 period match
01011 = Reserved
01010 = Reserved
01001 = PWM Generator 5 primary trigger
01000 = PWM Generator 4 primary trigger
00111 = PWM Generator 3 primary trigger
00110 = PWM Generator 2 primary trigger
00101 = PWM Generator 1 primary trigger
00100 = PWM Special Event Trigger
00011 = Reserved
00010 = Level software trigger
00001 = Common software trigger
00000 = No trigger is enabled

發表於: 12/20 22:43
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: dsPIC33EP64GS502 ADC抓取疑問
#10
版主
版主


查看用戶資訊
111 = Internal counter ends sampling and starts conversion (auto-convert)
透過 Fosc 降頻後做自動觸發轉換。

發表於: 12/21 12:11
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連結

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/Data_CD/eLearning/index.html
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
[ more... ]

Microchip CAE 空中教室

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源