Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
中級會員
|
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;
發表於: 2020/12/16 19:44
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
版主
|
會不會在 while(1) 迴圈抓 ADC 的資料太快了,導致 ADC 都沒有時間做下一次的轉換抓走的都是同一筆的資料。
建議加個 for 的 delay 迴圈,降低抓取 ADC 的速度看看。
發表於: 2020/12/17 12:23
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
中級會員
|
Ryan好
我有在getadc之前讓某個io輸出high Gateadc之後讓io輸出low 看起來每抓一次adc大約會花5us 抓100次大概也會花500us 另外程式跑一陣子按暫停後去看adbuf1的值 和x[i]內的值是一樣的 感覺像是只有轉換ㄧ次Ad值 就沒有再繼續轉換 所以adbuf1也沒有繼續更新
發表於: 2020/12/17 14:29
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
版主
|
你的 ADC 的專換機制是自動轉換還是透過 Timer1 的觸發轉換? 如果是透過 Timer1 的觸發轉換髂一定要等 Timer1 完成觸發轉換後到中斷裡去讀取 ADC 的值,或設個旗號在主回圈裡做判斷看是否已完成了 ADC 的轉換工作。
先檢查一下 Timer1 的動作,再檢查 ADC 的轉換。
發表於: 2020/12/17 16:32
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
中級會員
|
trigger source我是選擇timer1
因為我試過選擇none 和 osc1 則連一筆都抓不到 請問是要選擇哪一個trigge source才能讓ADC會自己重複轉換
發表於: 2020/12/17 16:51
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
版主
|
要不要先参考一下教育訓練光碟下的 dsPIC30F Module Training 的教材,裡面有一 ADC 使用的章節,那裡就有說明手動轉換、時脈自動觸發轉換及使用 Timer 的觸發轉換的說明。
我有請同事寫一下範例,完成後會貼上來的。
發表於: 2020/12/18 9:45
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
管理員
|
我做的實驗,透過dsPIC33EP256MU806
ADC:10Bit,Trigger source:Timer 3 (100us->10K) VR轉動,ADC可以正常取樣數值 讓你交互比對 Attach file: Link only for registered users
發表於: 2020/12/18 11:28
Edited by Darren on 2020年12月18日 12:01:32
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
中級會員
|
兩位好
我有去看推薦的教學內容 利用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
發表於: 2020/12/20 22:43
|
|||
|
Re: dsPIC33EP64GS502 ADC抓取疑問
|
||||
---|---|---|---|---|
版主
|
111 = Internal counter ends sampling and starts conversion (auto-convert)
透過 Fosc 降頻後做自動觸發轉換。
發表於: 2020/12/21 12:11
|
|||
|