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!