leyendo el puerto PIC analógico

1

Estoy intentando leer una serie de puertos analógicos en un PIC16F690. Puedo leer 2 pero no puedo leer el 3er. Es decir, a continuación, AN1, AN2 funcionan, pero AN3 no. ¿Estoy haciendo algo mal con TRISA, ANSEL, ADCON1 o ADCON0? Gracias

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);
    
pregunta user2633388

1 respuesta

2

Supongo que estás usando el oscilador interno.

Si no tiene CLKOUT deshabilitado en la configuración ( INTOSCIO seleccionado ), ganó No funciona, ya que AN3 está en RA4.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas