【问题标题】:reading analogue PIC port读取模拟 PIC 端口
【发布时间】:2014-05-06 14:35:03
【问题描述】:

我正在尝试读取 PIC16F690 上的多个模拟端口。我可以读 2,但我不能让它读 3。即在下面,AN1、AN2 工作,但 AN3 不工作。我在 TRISA、ANSEL、ADCON1 或 ADCON0 上做错了吗?

TRISA   = 0b00010111;         // all port A:0,1,2,4 as inputs
ANSEL   = 0b11111111;         // RA0->RA1 are Analog
ADCON1  = 0b01010000;         // select ADC clock (500 Khz)

ADCON0  = 0b10000101;         //peripheral 1 - PORT A:1 - AN1
__delay_us(250);
unsigned short nRet;
ADCON0 |= 0x02;             // Start conversion
while(ADCON0 & 0x02)        // wait for conversion
 {
 }
 nRet = ADRESH;
 nRet <<=8;
 nRet += ADRESL;


ADCON0  = 0b10001001;         //peripheral 2 - PORT A:2 - AN2
__delay_us(250);
unsigned short nRet;
ADCON0 |= 0x02;             // Start conversion
while(ADCON0 & 0x02)        // wait for conversion
{
 }
 nRet = ADRESH;
 nRet <<=8;
 nRet += ADRESL;

    ADCON0  = 0b10001101;         //peripheral 2 - PORT A:4 - AN3
    __delay_us(250);
    unsigned short nRet;
    ADCON0 |= 0x02;             // Start conversion

    while(ADCON0 & 0x02)        // wait for conversion
    {
    }
    nRet = ADRESH;
    nRet <<=8;
    nRet += ADRESL;

   return (nRet & 0x3FF);

【问题讨论】:

    标签: embedded pic


    【解决方案1】:

    你的时钟模式是什么?

    查看datasheet, section Clock Mode or p176, configuration bits, at the CONFIG register, 你可以选择不同的时钟模式。

    http://ww1.microchip.com/downloads/en/DeviceDoc/41262A.pdf

    您可能正在使用 INTOSC 模式 (CONFIG.FOSC2-0=101)。

     "CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT pin, I/O function on RA5/T1CKI/OSC1/CLKIN". 
    

    您可以改用 INTOSCIO (CONFIG.FOSC2-0=100)

       "I/O function on RA4/AN3/T1G/OSC2/CLKOUT pin, I/O function on RA5/T1CKI/OSC1/CLKIN"
    

    对于 RC -> RCIO 模式 (CONFIG.FOSC2-0=111 -> CONFIG.FOSC2-0=110) 也是如此。

    很可能 CLKOUT 模式比 A/D 模式有优先权。尝试改变时钟模式!

    再见,

    【讨论】:

      猜你喜欢
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多