Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/03/2016 #1


Problema con PIC16LF877A
Hola amigos de foro electronica, necesito su ayuda para saber si alguno le ha pasado lo siguiente

el PIC funcionaba bien hasta mi ùltima aplicaciòn comunicacion RS232 al PC con max232 todo de maravillas

Ahora intento usar otro programa sencillo un led intermitente en el mismo PIC y no hace nada, he intentado de todo ya

Utilizo un Crystal de 4mhz con capacitores de 22pF, tambien probe con crystal de 14.318mhz y nada, probe XT, HS, RC y nada

Utilizo ic-prog y winpic800 y no me da resultada satisfactorio ninguno, el winpic800 lo reconoce perfecto, ambos programadores lo graban bien y verifcan correctamente, cuando lee el config y el programa esta todo bien. pero al ir al protoboard no hace nada, use un 16f877 si funciona bien pero necesito el 16lf877a porque tiene mas memoria para lo que voy a hacer.

El problema no esta en el programa dado que funciona en proteus y me funciona bien en el PIC 16f877

pero el pic 16LF877a no me responde para nada en el circuito, lo alimento con 5v de una fuente ATX

el programa que intento correr que se no tiene problema es este:

Código:
#include <16F877A.h>
#device ADC=10

#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOPROTECT                //Code not protected from reading

#use delay(crystal=4000000)
#use FIXED_IO( A_outputs=PIN_A5,PIN_A4,PIN_A3,PIN_A2,PIN_A1,PIN_A0 )
#use FIXED_IO( B_outputs=PIN_B7,PIN_B6,PIN_B5,PIN_B4,PIN_B3,PIN_B2,PIN_B1,PIN_B0 )
#use FIXED_IO( C_outputs=PIN_C7,PIN_C6,PIN_C5,PIN_C4,PIN_C3,PIN_C2,PIN_C1,PIN_C0 )
#use FIXED_IO( D_outputs=PIN_D7,PIN_D6,PIN_D5,PIN_D4,PIN_D3,PIN_D2,PIN_D1,PIN_D0 )
#use FIXED_IO( E_outputs=PIN_E2,PIN_E1,PIN_E0 )

void main()
{

   while(TRUE)
   {
output_high(PIN_A0);
delay_ms(1000);
output_low(PIN_A0)
delay_ms(1000);
   }

}
alguna idea de porque los programadores lo pueden grabar pero no puedo hacerlo funcionar en el protoboard ...
18/03/2016 #2
Moderador

Avatar de D@rkbytes

erdanis dijo: Ver Mensaje
¿Alguna idea de por qué los programadores lo pueden grabar pero no puedo hacerlo funcionar en el protoboard?
Porque debes tener algo mal conectado o algo sin conectar.
Ese programa aunque con configuraciones innecesarias para tan sólo prender un LED por RA0, debe funcionar físicamente.

Revisa bien tus conexiones.

PD: A la instrucción "output_low(PIN_A0)" le hace falta el punto y coma final ";"
Ese no es el problema porque no se podría compilar el programa.

Resumiendo el programa:
Código:
#include <16f877a.h>
#use     delay(crystal = 4MHz)

void main (void)
{
   while (true)
   {
      output_toggle(PIN_A0);
      delay_ms(1000);
   }
}
Este código también hará lo mismo.
18/03/2016 #3


D@rkbytes gracias por la respuesta, probaré de nuevo con tu codigo, sin embargo estoy seguro que no hay nada mal conectado, ya que pruebo en el mismo lugar el pic 16f877 y funciona sin problemas, pero este no

---------- Actualizado después de 4 minutos ----------

probe tu codigo simplificado, pero igual me sigue dando problemas no hace nada de nada. =(
18/03/2016 #4
Moderador

Avatar de D@rkbytes

Prueba con otro pin, a veces se dañan.
Incluso puedes activar todo un puerto o varios.
Y si no funciona, sube una foto del montaje en el protoboard.

Te recuerdo que no es problema de software.
18/03/2016 #5


ok intentare activar el Puerto B y subiere una imagen del montaje


---------- Actualizado después de 15 minutos ----------

Probe activar todo el puerto B asi

#include <16f877a.h>
#use delay(crystal = 4MHz)

void main (void)
{
while (true)
{
output_b(0b11111111);
}
}
probe el LED aparte para saber si funciona, luego en cada salida del Puerto B nada no hay voltaje alto, los led no encienden, pareciera el pic no ejecutara el programa, y muestro imagenes del WINPIC800 tambien con el exito en lectura y programacion
Imágenes Adjuntas
Tipo de Archivo: jpg 03182016161.jpg (86,5 KB (Kilobytes), 16 visitas)
Tipo de Archivo: jpg Dibujo.jpg (50,5 KB (Kilobytes), 8 visitas)
Tipo de Archivo: jpg Dibujo2.jpg (54,8 KB (Kilobytes), 8 visitas)
Tipo de Archivo: jpg Dibujo3.jpg (123,4 KB (Kilobytes), 16 visitas)
18/03/2016 #6
Moderador

Avatar de D@rkbytes

OK. Se ve todo bien en las conexiones.
¿Con qué estás alimentando al microcontrolador?
18/03/2016 #7


utilizo una fuente de poder de PC. Atx cable rojo y negro, 5vdc constantes, funciona bien el pic 16f877 pero este nada que ver. tambien he intentado con el naranja que me arroja 3.33v.
18/03/2016 #8
Moderador

Avatar de D@rkbytes

OK. ¿Cuando lees el programa del PIC, éste corresponde con el que grabaste?
Si lo que lees es lo mismo que grabas, prueba quitando los capacitores del oscilador.
Existen cristales que los tienen internos y los externos afectan la oscilación.

Al ser un programa sencillo de prueba, debe funcionar sin problemas.
Y como en otro PIC similar si funciona el programa, ese PIC puede estar dañado.
El LF debe funcionar de la misma forma pero puede operar a 3.3 V.
Y esto es algo relativo, porque otros PIC de serie normal también funcionan a 3.3 V.
18/03/2016 #9


si efectivamente cuando presiono leer en todos los casos responde bien, y muestra la config efectiva del ultimo programa, sin embargo no da señales de vida cuando esta energizado.

tambien he probado quitarle los capacitores, ya como que debo desistir y dejar botado el pic.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.