[AYUDA] Problema Pic 16f876a Led parpadeante

Hola, soy nuevo en el tema de los pics, les planteo mi problema: Quiero hacer un led parpadeante/intermitente con un pic. Para eso estoy utilizando un pic 16f876a, un led y un protoboard. El problema es que no lo logro hacer funcionar, uso como entrada de alimentacion una bateria de 3.7 volts, poniendo el positivo en el pin 20 (vdd) y el negativo en el pin 19(vss). Luego pongo un led que haga contacto con el negativo y la otra pata la pongo en el pin RB0 (pin 21). Cual es el resultado? el led queda siempre prendido.

El programa funciona perfectamente bien, debido a que lo simule en proteus y los resultados son los esperados.

Lenguaje: C. Programa: CCS.
Codigo:

Código:
#include <16f876a.h>                    //pic a utilizar   
#use delay (clock=4000000)         //Fosc=4Mhz
#use fast_io(b)

///PROGRAMA
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   
   set_tris_b(0x00);    
   disable_interrupts(GLOBAL);  
   output_b(0x00);
   while(true){
   
   delay_ms(500);
   output_high(pin_b0);
   delay_ms(500);
   output_low(pin_b0);
  
   };
}

Por favor, necesitaría su ayuda, soy muy novato en esto y no tengo idea de cómo hacer que funcione.

Para aclarar más lo que quiero hacer y cómo es el estado del proyecto adjunte 2 fotos con el protoboard, el pic y el led, 1 diagrama del pic, 2 imagenes de simulacion en proteus.

Gracias.
 

Adjuntos

  • PIC16F876A_Diagram.PNG
    PIC16F876A_Diagram.PNG
    28.1 KB · Visitas: 13
  • Proteus 1.jpg
    Proteus 1.jpg
    44.7 KB · Visitas: 14
  • Proteus 2.jpg
    Proteus 2.jpg
    39.6 KB · Visitas: 12
  • 100_8841.JPG
    100_8841.JPG
    74.6 KB · Visitas: 13
  • 100_8837.JPG
    100_8837.JPG
    163.2 KB · Visitas: 12
Luego pongo un led que haga contacto con el negativo y la otra pata la pongo en el pin RB0 (pin 21).
Poniendo el LED directamente al pic y a masa sin ninguna resistencia, estas forzando a que el PIC tenga que entregar más intensidad que la que puede entregar. Y esto suele ocasionar a veces que el Pic no haga lo que debería hacer! Así que ponle una resistencia antes del LED, posiblemente te solucione el problema (calcula el valor de la resistencia para que caigan en ella los restantes 1,7v y sobre unos 20mA)
Saludos y bienvenido al mundo de los PICs!! ;)
 
Por defecto el Watchdog esta habilitado en tu PIC. Por eso se resetea el programa una y otra vez y nunca llega a la parte donde apagas el PIC. En Proteus funciona porque el Watchdog en Proteus esta inhabilitado.
En CCS PICC el WDT se inhabilita así
#FUSES NOWDT
Pruébalo.
 
Introduje la linea para desactivar el watchdog y ahora el led no prende. Para hacer pruebas removí la linea, y ahora tampoco prende, nose que podria haber pasado. Comprobe si andaba el led y anda perfectamente y el pic al parecer tambien, ya que con el programador puedo leer bien los datos. Tambien proble con el multímetro para que no se produsca un problema como dijo smd10, y no obtuve nada. que podria estar funcionando mal?
 
Hola bueno si ya hiciste toda la onfiguracion en el pic y esta bien entoces falta a la hora de programar el PIC si lo haces con el Winpic 800 checa los pasos y los Fuses que se te activan alomejor se te desactiva o desactivan demas solo deben de activarse los que configuraste

tipo de OScilador
codigo de proteccion CPD
WDTE el perro guardian
PWRTE retardo al encendido


ha otra cosa el led conectalo con una resistecia de 270 ohms lo mas seguro es que ya valio el primero que usaste por que lo conectaste directo, y deberias de conseguirte una fuente mejor de 5vcd.

aqui postee un tuto para el winpic y el ICprog checalo:

https://www.forosdeelectronica.com/f24/curso-tutorial-pic16f877-12890/
 
Hola bueno si ya hiciste toda la onfiguracion en el pic y esta bien entoces falta a la hora de programar el PIC si lo haces con el Winpic 800 checa los pasos y los Fuses que se te activan alomejor se te desactiva o desactivan demas solo deben de activarse los que configuraste

tipo de OScilador
codigo de proteccion CPD
WDTE el perro guardian
PWRTE retardo al encendido


ha otra cosa el led conectalo con una resistecia de 270 ohms lo mas seguro es que ya valio el primero que usaste por que lo conectaste directo, y deberias de conseguirte una fuente mejor de 5vcd.

aqui postee un tuto para el winpic y el ICprog checalo:

https://www.forosdeelectronica.com/f24/curso-tutorial-pic16f877-12890/


Primero que todo gracias. Puedo programarlo directamente con el pickit 2 ? así es como lo estoy haciendo y al parecer graba bien los datos.
Otra pregunta, puedo desarrollar mi proyecto solo con el pic , el led y la resistencia ? o es necesario un oscilador, etc?

Muchas gracias por todas las respuestas!

Tambien quiero aclarar que para poder programar tengo que desactivar la escritura en EEPROM porque sino me tira el siguiente error : "Programming failed at EE data address 0x0010" y lo uncio que hay para grabar en la EEPROM es todo FF (FF FF FF FF ...). Eso puede influir en el PIC ?
 
Última edición:
Si tienes que ponerle un oscilador en las patillas correspondientes junto con sus capacitores
recuerda todo lo que no uses de opciones como EEPROM, ADC, Watch dog Timer no lo actives.

Guiate con esta imagen para el oscilador este permite que se ejecuten los ciclos de reloj de las instrucciones sin este no pasa nada en el PIC.

puede ser de 4 6 8 16 o 20Mhz segun lo configures en tu programa. con uno de 4 esta bien para empezar:apreton:
 

Adjuntos

  • sist min 16F84.jpg
    sist min 16F84.jpg
    30.3 KB · Visitas: 31
Si tienes que ponerle un oscilador en las patillas correspondientes junto con sus capacitores
recuerda todo lo que no uses de opciones como EEPROM, ADC, Watch dog Timer no lo actives.

Guiate con esta imagen para el oscilador este permite que se ejecuten los ciclos de reloj de las instrucciones sin este no pasa nada en el PIC.

puede ser de 4 6 8 16 o 20Mhz segun lo configures en tu programa. con uno de 4 esta bien para empezar:apreton:

entonces por eso no estaba funcionando el pic. El sabado compraré el oscilador junto con la resistencia para probar el proyecto. Despues voy a postear los resultados.

Gracias!
 
Una pregunta más, que más tengo que poner aparte del oscilador? una resistencia en el MCLR? si es asi, como lo hago? Por favor necesitaria ayuda en eso, ya que soy nuevo en este tema y no entiendo nada.

PD: alguien me podria pasar por MP un msn para hablar esto? porque se esta haciendo un tema muy largo para algo simple.
 
Última edición:
Compre el oscilador pero nose como conectarlo. Es de cristal de 12 Mhz. Probe poniendo un lado en el OSC1 (pin 9) y otro en el OSC2 (pin 10) y sigue sin andar. Inverti los lados ( osea el que estaba en el pin 10 paso al pin 9 y viceversa) y el led se queda apagado, no parpadea. Necesitaria alguna explicación para conectarlo y saber si hace falta algo más que el oscilador.

Gracias de antemano
 
Lo conectaste tal como sale en la imagen que puso Snakewather?? Con los dos condensadores??
(Ah, y da igual la orientacion de como conectes el oscilador, no tiene polaridad)
 
Última edición:
Lo conectaste tal como sale en la imagen que puso Snakewather?? Con los dos condensadores??
(Ah, y da igual la orientacion de como conectes el oscilador, no tiene polaridad)

Necesito los dos condensadores? Segun tengo entendido los osciladores HS se conectan directamente. Reitero, soy nuevo en esto asi que probablemente este equivocado.
 
No puede ser asi? :
2cwmvk3.jpg


Segun veo en este video está asi y funciona
 
Última edición:
:eek:Puede que en el video se este utilizando un resonador que ya trae integrados los capacitores
ese si se colocaria asi como tu dices pero si es un cristal entonces debe de llevar los capacitores.

tu tienes un cristal por eso no te funciona como resonador OK.:unsure:
 
Atrás
Arriba