PIC16F15345 Microcontrolador, problemas de pines de entrada digital RA5

0

He tenido un problema muy extraño con mis microcontroladores PIC16F15345. Estoy intentando leer un estado de entrada digital de un pin específico en el microcontrolador (Pin2 o RA5). Mi código de configuración está abajo:

#include <xc.h>
#include <pic.h>
#include <pic16F15345.h>

#define _XTAL_FREQ 32000000

#pragma config WDTE = OFF

void main(void){
    OSCFRQbits.HFFRQ = 0b110; //set HFINTOSC to 32MHz
    OSCCON1bits.NOSC = 0b110; //set clock to HFINTOSC
    TRISA = 0b11111111; //set all portA bits to input
    ANSELA = 0b00000000; //set all portA bits to digital input
    while(1)
    {
        //loop forever;
    }
    return;
}

Estoy usando el último compilador XC8, MPLABx IDE y un programador PICKIT3. Estoy usando los pines de salida de un arduino para alternar el estado del pin de entrada en el PIC, por lo que no tengo que preocuparme por los anuncios y puedo activar cambios de estado a través del software.

Si quiero medir RA4 o pin3, puedo usar el depurador para verificar el valor del registro PORTA, y muestra un cambio de estado correspondiente a lo que esperaría. PORTB y PORTC también funcionan normalmente.

Sin embargo, por alguna razón, RA5 siempre leerá 0, sin importar cuál sea el voltaje de entrada en el pin (he verificado 4.8V en el pin con un multímetro). Al principio pensé que tal vez dañé mi entrada a través de ESD, así que cambié a otro IC del mismo modelo (pedí 3 de Digikey) y el problema persistió. Cambié al tercer y último chip, pero el problema seguía allí.

He estado rastreando los foros de microchip en busca de respuestas, pero hasta ahora no he tenido éxito. Cualquier consejo es apreciado!

    
pregunta Platytude

3 respuestas

1

Lo resolví yo mismo después de un poco más de excavación. Resulta que el pin RA5 predeterminará la entrada del oscilador externo de manera predeterminada, y para permitir la función GPIO necesita agregar la siguiente línea al principio de su código:

#pragma config FEXTOSC = OFF

Esto resolvió el problema para mí.

    
respondido por el Platytude
1

enlace Verifique la TABLA 1-2: PIC16 (L) F15325 DESCRIPCIÓN DEL PINOUTO (CONTINUADO)     Sólo la función Seleccionar GPIO Deshabilita todas las demás funciones.

    
respondido por el Bhura
1

en mi 12F1822 RA5 también toma por defecto la entrada del oscilador externo. si FOSC.intsoc se establece en 1 y OSCCONbits.SCS = 00 ;, no resuelve el problema. También debe poner un retraso después de OSCCONbits.SCS = 00 ;. Esto se debe a que cuando se indica a los pines del Oscilador que cambien de la configuración predeterminada, el proceso toma algún tiempo para que tenga efecto.

    
respondido por el robert cumming

Lea otras preguntas en las etiquetas