Problema puertos RA4 y PB0 en pic16f84

#1
Buenas a todos!

Os comento, estoy haciendo un programa en c para el pic16f84A, muy sencillo, que unicamente lee el estado de los puerto de entrada, en este caso el puerto b y enciende leds en el puerto A, pero no consigo que capten la señal de entrada del puerto b en el pin_b0 ni que se encienda el led del pin_a0. Supongo qeu sera un tema de configuracion de los mismos, he probado el circuito y esta bien montado.

Les dejo el codigo fuente por si me pueden ayudar, Muchas Gracias!

#include <16F84A.h>
#use delay (clock=4000000)

#fuses XT,NOWDT,NOPUT,NOPROTECT

void main()
{
output_drive(PIN_A0);
output_drive(PIN_A1);
output_drive(PIN_A2);
output_drive(PIN_A3);
output_drive(PIN_A4);


output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
output_high(PIN_A4);


while(true)
{

delay_ms(1000);

if(input(PIN_B0))
{
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
output_high(PIN_A4);
}
else
{
output_low(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
output_low(PIN_A3);
output_low(PIN_A4);
}

delay_ms(1000);

El resto hace lo mismo pero con distintos pins de entrada del puerto b y el resultado es que se encienden todos menos el puerto pin_a0, pero con pin_b0 no se enciende ninguno.
 
#2
Hola Xavi

Una pregunta, en el titulo del tema mencionas RA4 y en tu comentario mencionas pin_a0; si el led que no enciende esta conectado en RA4 el problema esta simple, RA4 cuando se configura de salida es del tipo colector abierto.

Que el pin B0 no te entregue señal es extraño (quiero decir que por el lado del software se ve bien), sospecho de algo en tu tablilla.

Saludos
 
#3
Xavi82 El pin B0 es uno de los pines de Programacion del pic??? Es que no he trabajo con ese pic. Pero si es asi coloca en los #fuses añade a los que ya tienes NOLVP. Me sucedio lo mismo hace tiempo en un pic 18F4550 con el pin B7 ya que lo usa para programacion y el NOLVP desabilitas el bajo voltaje de programacion y ahi lo puedes usar como entrada y salida.
Espero que te ayude.
Saludos.
 
#5
Buenas a todos!

Muchas gracias por contestar! os comento lo que he visto despues de hacer pruebas para ayudar a otros aprendices como yo :D

El problema del pin_A0 (RA4) era un problema del circuito, me faltaba la resistencia de 1k omnio de la salida de +5v a la entrada del led, una vez le puse la resistencia el led funciono perfecto... bueno, perfecto no, se enciende mucho menos que el resto ya que los otros solo tienen la resistencia de 300 omnios.

Lo que he visto es que se puede invertir el circuito de ese pin para que la salida del chip entre al negativo y conectar la resisitencia de 300omnio de la entrada del led al de +5v. de esta manera si apago el puerto (output_low) se encenderá el led y si lo enciendo (output_high) se apaga.


El problema del pin_B0 (RB0) definitivamente esta roto, he realizado mediciones de voltaje con el multimetro y me da el +0v correctamente pero no me entrega los +5v, unicamente +1v... y ni llega, asi que creo que el maldito pin no esta funcionando bien. Hoy espero comprarme un par de chip nuevos, grabo el mismo programa y os lo confirmo.


Si alguien tiene dudas sobre lo del pin_A0 este fin de semana espero poder hacer pruebas y cuando lo tenga subo una fotillo para que vean el cambio... si funciona... jejejeje. Y si lo necesitan subo el programilla con el que hago pruebas de los leds para el compilador CCS.

Muchisimas gracias por las ayudas y disculpar el retraso, pero el trabajo, de vez en cuando no me deja mas tiempo! menuda... m. jejeje


Un abrazo a todos!

Se me olvido comentar que efectivamente, lo que comentais del pin RA0 es el problema que tenia, y que en el post que adjunto Dedust viene explicado bastante mejor que lo que he puesto yo!


Muchas Gracias de nuevo!

Se me olvido comentar que efectivamente, lo que comentais del pin RA0 es el problema que tenia, y que en el post que adjunto Dedust viene explicado bastante mejor que lo que he puesto yo!


Muchas Gracias de nuevo!
 
Última edición:
#6
El problema del pin_B0 (RB0) definitivamente esta roto, he realizado mediciones de voltaje con el multimetro y me da el +0v correctamente pero no me entrega los +5v, unicamente +1v... y ni llega, asi que creo que el maldito pin no esta funcionando bien. Hoy espero comprarme un par de chip nuevos, grabo el mismo programa y os lo confirmo.
que raro.... dices que con los otros pin te funciona??? raro raro raro
 
#7
Buenas!

Pues si que estaba roto sammaael, ayer me compre 2 chips nuevos y funciona a la perfeccion el programa. No se la razon, pero si que alguna que otra vez he puesto el chip en sentido contrario, tanto en la protoboard como en el programador, asi que supongo que sera eso! jejejejejeje.
 
Arriba