PIC16F1454: RA4 no funciona como entrada digital si no se deshabilita registro ANSELA

Haciendo unas pruebas con el PIC16F1454, encontré problemas al tratar de utilizar RA4 como entrada digital, tras repasar la hoja de datos y varios intentos, conseguí que funcionara: tuve que deshabilitar el bit 4 del registro ANSELA, aunque en teoría esto no debería ser necesario pues este microcontrolador no cuenta con entradas analógicas.

Este es mi código de pruebas (lo probé con XC8 1.21):

/* 
 * File:   TestIO.c
 * Author: José Jorge Enríquez
 *
 * Created on 21 de diciembre de 2013, 03:35 PM
 */
 
#include <xc.h>
 
#pragma config FOSC  = INTOSC
#pragma config MCLRE = OFF
#pragma config LVP   = OFF
#pragma config PLLEN = DISABLED
 
// For accessing ANSELA register
volatile unsigned char ANSELA @ 0x18C;
 
int main() {
    OSCCONbits.SPLLEN = 0;    // PLL disabled
    OSCCONbits.IRCF = 0b1101; // 4 MHz internal oscillator
    OSCCONbits.SCS = 0b00;    // Clock determined by configuration word
 
    TRISCbits.TRISC5 = 0;     // Led
    TRISAbits.TRISA4 = 1;     // Input
 
    ANSELA = 0x00;  // Disable analog inputs
                    // Needed for RA4 to work as digital input
 
    OPTION_REGbits.nWPUEN = 0; // Enable weak pull-ups
    WPUAbits.WPUA4 = 1;        // Enable pull-up on RA4
 
    while (1) {
        LATCbits.LATC5 = PORTAbits.RA4;
    }
 
    return 0;
}

La revisión del chip que estoy utilizando es 1005h, la más reciente es 1006h pero creo que tendrá el mismo detalle pues en la errata del chip no se menciona nada de esto.

¿A alguien más le ha ocurrido?

Deja un comentario