會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC24FJ64GA006關於ADC轉態的問題
新會員
註冊日期:
6月20日 10:07:07
所屬群組:
註冊會員
文章: 5
等級: 1; EXP: 34
HP : 0 / 8
MP : 1 / 10
離線
我正在測試一個ADC電壓轉數值的練習,
ADC0~1V pin,1ms頻率 Td2ms,用示波器看H/L值
初始化
void Init_ADC(void)
{

AD1PCFG = 0xFF7F; // AN7/RB7 為類比電壓輸入腳, 其它為一般I/O
AD1CON1 = 0x0046; // 0b0000 0000 0100 0110
// 設定Timer3 為AD 轉換的觸發來源
// A/D 採用自動取樣自動轉換模式
AD1CON2 = 0x0000; // 參考電壓: Vref+ = Vdd, Vref- =Vss
// 不採用輸入掃描方式, SMPI=000 ( 每次轉換完成就產生中斷)
AD1CSSL = 0x0000; // 不採用輸入掃描方式
AD1CON3 = 0x1F3F; // TAD = 8 Tcy , SAMC = 15 TAD
AD1CHS = 0x0007 ; // CH0正端輸入選擇AN7,負端輸入為Vss
IEC0bits.AD1IE = 1 ; // 打開AD的中斷
IFS0bits.AD1IF = 0;
IPC3bits.AD1IP = 7 ; // 中斷等級=7 ( 最高優先權中斷等級 )
AD1CON1bits.ADON = 1; // 啟動AD
}

void Init_Timer3()
{
T3CON = 0; // Timer3 reset
TMR3= 0;
PR3 = 1999; //1ms

T3CONbits.TCS = 0; //內振
T3CONbits.TCKPS = 1; // Prescale = 1 : 8
IFS0bits.T3IF = 0; // Clear Timer3 Flag
IEC0bits.T3IE = 0; // Enable Timer3Interrupt
T3CONbits.TON = 1; // Enable Timer3
}

輸入電壓到AN7,可是為什麼輸出值都不會轉換大小呢?

6月29日 09:41:43
轉換PDF檔 列印


Re: PIC24FJ64GA006關於ADC轉態的問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
用看得方式除錯很辛苦,這是以前寫的程式 (30F4011 的) 可以比對一下。程式裡的 Timer3 沒有用中斷。

詳細的資料可以參考: http://www.microchip.com.tw/Data_CD/

16-Bits MCU 相關課下的 -->
dsPICMOD dsPIC30F Module Training


void _ISR _ADCInterrupt
(void)
{
        
IFS0bits.ADIF = 0 ;        // 清除 ADIF 中斷旗號
        
ADC_Buf = ADCBUF0 ;    // 讀取 AD 的轉換值
        
LED1 = !LED1 ;        // LED1 轉態一次供量取訊號除錯用
}


Void  Timer3_Initial ( void )
{
    
ConfigIntTimer3 ( T3_INT_PRIOR_7 & T3_INT_OFF ) ;      //中斷禁能
    
OpenTimer3 ( T3_ON & T3_IDLE_STOP & T3_GATE_OFF & T3_PS_1_1 &                       T3_SOURCE_INT ,  (((long)FCY/1000 )) ) ;    // 計時=1mS, 啟動 Timer3
}

void ADC10_Initial (void)
{
    
ADPCFG = 0xFFBF;    // AN6/RB6 為類比電壓輸入腳 , 其它為一般  I/O
    
ADCON1 = 0x0046;    // 0b0000 0000 0100 0110
                // 設定 Timer3 為 AD 轉換的觸發來源
                // A/D 採用自動取樣自動轉換模式
    
ADCON2 = 0x0000;    // 參考電壓 : Vref+ = Vdd, Vref- =Vss
                //不採用輸入掃描方式, SMPI=000 ( 每次轉換完成就產生中斷 )
    
ADCSSL = 0x0000;    // 不採用輸入掃描方式
    
ADCON3 = 0x1F3F;    // TAD = 8 Tcy , SAMC = 15 TAD
    
ADCHS =  0x0006 ;    // CH0正端輸入選擇AN6,負端輸入為Vss
    
IEC0bits.ADIE = 1 ;    // 打開AD的中斷
    
IPC2bits.ADIP = 7 ;    // 中斷等級=7 ( 最高優先權中斷等級 )
    
ADCON1bits.ADON = 1;    // 啟動 AD
}

6月29日 14:06:53
轉換PDF檔 列印


Re: PIC24FJ64GA006關於ADC轉態的問題
中級會員
註冊日期:
2015/05/27 22:04
所屬群組:
註冊會員
文章: 42
等級: 5; EXP: 27
HP : 0 / 106
MP : 14 / 777
離線
引用:

Ryang 寫道:
...
ADCHS = 0x0006 ; // CH0正端輸入選擇AN6,負端輸入為Vss
IEC0bits.ADIE = 1 ; // 打開AD的中斷
IPC2bits.ADIP = 7 ; // 中斷等級=7 ( 最高優先權中斷等級 )
ADCON1bits.ADON = 1; // 啟動 AD
}
[/code]


請問,24FJ64GB002 規格書內
REGISTER 22-4: AD1CHS: A/D INPUT SELECT REGISTER
bit 7 CH0NA: Channel 0 Negative Input Select for MUX A Multiplexer Setting bit
1 = Channel 0 negative input is AN1
0 = Channel 0 negative input is VR-

bit 4-0 CH0SA<4:0>: Channel 0 Positive Input Select for MUX A Multiplexer Setting bits
Implemented combinations are identical to those for CH0SB<4:0> (above)
01011 = Channel 0 positive input is AN11

如果我將CH0NA 設1; CH0SA<4:0>設01011,
那是否代表,ADC的數值=AN11-AN1的ADC轉換值? (已知:AN11>=AN1)

(自己try-error也是可以啦,但我先確認是否誤解規格書的說明)
謝謝回覆。

6月29日 19:36:04
轉換PDF檔 列印


Re: PIC24FJ64GA006關於ADC轉態的問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
是的,ADC 類比多工器選擇後進入到差動放大器,這時正端輸入減去負端的輸入就是差動放大器的輸出。

一般使用者都使用最基本的設定: 負端輸入都連到 VR-,而 VR- 一般都設定接 Vss。

6月30日 10:22:48
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project