會員登陸
網站導航
最新下載
- 2020 Winter Eli... (Mon, 09-Dec-2019)
- Microchip 搭載 ... (Thu, 21-Nov-2019)
- 創客們看過來,... (Thu, 21-Nov-2019)
- 2019第八屆台灣... (Tue, 17-Sep-2019)
- 2019 (秋)嵌入式... (Tue, 17-Sep-2019)
- Microchip 2019 ... (Wed, 10-Jul-2019)
- 2019 Summer Eli... (Mon, 10-Jun-2019)
- ATWINC1500 RTC ... (Mon, 29-Apr-2019)
- APP-ESS18-1A An... (Wed, 24-Apr-2019)
- 2019春EDF限量特... (Mon, 22-Apr-2019)
訪問統計 (自2012/5/3)
|
正在流覽:
1 名訪客
|
PIC16F18344的RC7腳,無法做AD轉換,誠請先進們協助為何。 |
|
高級會員 
註冊日期: 2007/04/16 20:42
所屬群組:
註冊會員
文章: 88
等級: 8; EXP: 35 HP : 0 / 183 MP : 29 / 6799
|
採Fosc=16MHz,,MCC為Ver.3.75,用TMR3來自動Trigger,不用ADC中斷取轉換值,ADC採內建Vref=4.096V,透過adc_result_t ADC_GetConversionResult(void)函數取值,不管類比輸入為何,永遠在是00AC附近跳動;請先進們指正下面指令,何處有誤? 相關程式與MCC的畫面如下圖。
void main(void) { uint16_t convertedValue; // initialize the device SYSTEM_Initialize(); __delay_ms(5); LCD_Set_Cursor(0,0); putrsLCD((const far char*)"ADC="); ADC_SelectChannel(V_ANC7); //選RC7 // ADC_StartConversion(); //Voltage Convert while(ADC_IsConversionDone()); convertedValue = ADC_GetConversionResult(); //Get ADC Result puthexLCD(convertedValue>>8); //Print ADC Result of Hex High puthexLCD(convertedValue); //Print ADC Result of Hex Low ConvertADCVoltage(convertedValue); //呼叫 app.c 裡的 10 進制轉換函數 for(;;); }
void SYSTEM_Initialize(void) {
PMD_Initialize(); PIN_MANAGER_Initialize(); OSCILLATOR_Initialize(); WDT_Initialize(); FVR_Initialize(); ADC_Initialize(); TMR3_Initialize(); TMR2_Initialize(); EUSART_Initialize(); }
附加檔案:
ADC..JPG (0.00 KB) TMR3.JPG (0.00 KB)
5月09日 22:32:57
|
|
|
Re: PIC16F18344的RC7腳,無法做AD轉換,誠請先進們協助為何。 |
|
高級會員 
註冊日期: 2007/04/16 20:42
所屬群組:
註冊會員
文章: 88
等級: 8; EXP: 35 HP : 0 / 183 MP : 29 / 6799
|
補充上述說明之2個MCC設定圖,ADC與TMR3
5月12日 14:25:16
|
|
|
Re: PIC16F18344的RC7腳,無法做AD轉換,誠請先進們協助為何。 |
|
版主 
註冊日期: 2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者 註冊會員 MICROCHIP
文章: 14874
等級: 73; EXP: 63 HP : 1089 / 1815 MP : 4958 / 82880
|
1. 請確定在 MCC 的 "Pin Module" 視窗下開啟 I/O 設定視窗。檢查一下 pim module 與 ADC 的腳位中的 RC7 是否有設成 ADC 的輸入腳。
2. 如果用 Timer3 觸發 ADC 的轉換,如果不會如期動作。建議先將ADC 與 Timer3 分開測試一下。確定 ADC 可以用手動轉換 及 Timer3 可以正確地中斷計時。
3. 一般 Timer3 觸發 ADC 的做法,Timer3 可以不用啟動中斷,但ADC 需設成自動轉換且最好使用 ADC 中斷讀取 ADC 的值的方式轉換。
也就是Timer3 逾時即會觸發 ADC 座自動取樣及轉換,轉換結束後即會產生 ADC 的中斷,這時先清除 ADIF 並讀取 ADC 的值即可。
5月13日 11:06:52
|
|
|
Re: PIC16F18344的RC7腳,無法做AD轉換,誠請先進們協助為何。 |
|
高級會員 
註冊日期: 2007/04/16 20:42
所屬群組:
註冊會員
文章: 88
等級: 8; EXP: 35 HP : 0 / 183 MP : 29 / 6799
|
感謝版主啟發式的回應; 最後將X IDE與xc8 移掉後再重新安裝,於main中簡單的1行如下指令,就OK了。 adc_result_t adc_value = ADC_GetConversion(channel_ANC7); 再次感謝版主啟發式的回應。
5月13日 23:07:13
|
|
您無法在此發表文章
您可以在此觀看文章
您無法回覆文章
您無法編輯自己的文章
您無法刪除自己的文章
您無法發起投票調查
您無法在此投票
您無法上傳附加檔案
您無法不經審核直接發表文章
|
搜尋
Microchip連結
網頁捷徑
2020 Winter Elite 報名
教育訓練
其它網站連結
|