PIC enclava la entrada :S

Hola, estoy utilizando un PIC16f690 para hacer una especie de reloj/alarma/loquesalga...

Concretamente en la entrada RA2, tengo conectado un pulsador que al pulsarlo conecta la entrada a masa.
Configuro dicho pin como entrada:

//Entradas y salidas
ANSEL = 0; //Configura puertos digitales
ANSELH = 0; //Configura puertos digitales
TRISA = 0b011100; //Configura el puerto A.

Tengo activada la resistencia interna de pull-up con el codigo:

OPTION_REG = 0x7F; //Habilita las pull up individuales del puerto A y B
WPUA2 = 1;

Se supone que al pulsar el pulsador se debe tener un '0' lógico y al soltarlo un '1' lógico, pero no. La 1ª o 2ª vez que se pulsa se queda fijo a '0' logico y la única forma de que vuelva a '1' lógico es hacer un puente a VCC (5v).

He provado a poner resistencia externa de pull-up, de distintos valores, y el resultado con todas ellas es el mismo: la única forma de quitar el '0' lógico es conectar el pin directamente a VCC.

¿Alguien sabe a qué se debe esto y como se puede solucionar?

Gracias.

Saludos.
 
Hola, estoy utilizando un PIC16f690 para hacer una especie de reloj/alarma/loquesalga...

Concretamente en la entrada RA2, tengo conectado un pulsador que al pulsarlo conecta la entrada a masa.
Configuro dicho pin como entrada:

//Entradas y salidas
ANSEL = 0; //Configura puertos digitales
ANSELH = 0; //Configura puertos digitales
TRISA = 0b011100; //Configura el puerto A.

Tengo activada la resistencia interna de pull-up con el codigo:

OPTION_REG = 0x7F; //Habilita las pull up individuales del puerto A y B
WPUA2 = 1;

Se supone que al pulsar el pulsador se debe tener un '0' lógico y al soltarlo un '1' lógico, pero no. La 1ª o 2ª vez que se pulsa se queda fijo a '0' logico y la única forma de que vuelva a '1' lógico es hacer un puente a VCC (5v).

He provado a poner resistencia externa de pull-up, de distintos valores, y el resultado con todas ellas es el mismo: la única forma de quitar el '0' lógico es conectar el pin directamente a VCC.

¿Alguien sabe a qué se debe esto y como se puede solucionar?

Gracias.

Saludos.

Saludos.
Al parecer el problema que tienes se debe a un mal funcionamiento del oscilador del pic
o alguna falla de alimentación. Verifica la configuración de fuses, oscilador, MCLR y alimentación.

No entiendo porque reiteras otra vez la weak pullup de RA2 con WPUA2 = 1
Si con declarar el Bit7 del registro OPTION_REG en 0 ya queda habilitada :confused:
La declaración OPTION_REG = 0x7F; // = 01111111 ya lo hace tanto para el puerto A como para el B.

Pudiera ser otra causa, pero a simple vista de lo que escribes,
nada parece hacer que RA2 quede enclavado en 0. :apreton:
 
Última edición:
Atrás
Arriba