Problemas con PIC16F877A

Hola a todos!!!

Tengo problemas con unos pic 16f877a que he comprado...uno de ellos es que tengo que realizar el grabado del pic varias veces ya que siempre presenta problemas en alguna posición de la memoria...se que no es el programador porque otro pic que si funciona bien se graba sin ningún problema...y finalmente cuando logro grabarlo correctamente no funciona!!!! lo monto en el circuito y no hace NADA!!!!! como puedo saber que daño tiene el PIC???

Otro de los pic no se quiere grabar....siempre me aparece en blanco...

Agradeceria cualquier ayuda.... :D
 
leydi25, es dificil determinar el error con la poca información que nos brindas. Seria prudente que muestres el diagrama de tu circuito y el programa del pic, para ir descartando las fallas. Por los datos que dejas, a simple intuicion, la unica solucion es reemplazar el PIC. Habria que ver que programador estas usando y las condiciones del mismo, quizas estes sobrepasando el limite de tolerancia de VPP.

Saludos
 
leydi25, a mi modo de verlo, la única forma que podrás averiguar la cual es tu problema es usando otro programador.

De esa forma, sabrás si se realmente el programador o el pic.

Saludos

PD: de todas formas, por los síntomas que mencionas, pareciera ser que el problema es el programador.
 
El circuito programador que estoy usando es el PIPO2 y lo descargue de la pagina http://docs.ajo.es/acuarios/213.97....F/rev_pipo2.pdf, use el programador JDM pero nunca me funciono...siempre me salio el famoso error 000h...igual no creo que sea el circuito programador... volvi a montar el programador en un protoboard y me dejaron de salir los errores, pude solucionar el problema de la grabación usando el mismo circuito que tenia y el IC-PROG...
Sin embargo tengo 4 pics para probarlos les grabe un programa que funciona correctamente...tres de mis pics ejecutan el programa sin problema y el otro no hace nada aunque se grabo correctamente...
Si tienen alguna observacion les agradeceria...
 
Si el programa funciona correctemente compraría otro pic.

Esto... repasa los flag del oscilador y esas cositas que hay veces que no se configuran correctamente y hacen que no funcione ( confundir el oscil de resistencia con el de cristal por ejemplo) Es curiosa esta equivocación ya que funciona al acercar el dedo al cristal.
Saludos y paciencia
 
puedes bajar la version más actual del software que empleaste para programar el PIC; porque yo tuve un problema similar y lo solucione de esta forma.

Despues; cuando por fin pude grabarlo; no hacia nada; y esto era por el oscilador;(el PIC16F877A, solo me funciono cuando conecte los 2 capacitores del oscilador a tierra)(el PIC16F877 solo me funciono cuando retire los 2 capacitores del oscilador). Para reducir todo tipo de problemas te recomiendo cambiar al PIC16F877-20 o PIC16F877-4.

Otra cosa; debes tener cuidado con el tipo de oscilador que configuras; yo siempre programo el tipo XT, y tampoco he tenido problema; cuida que LVP este deshabillitado; porque podría ocasionarte fallas en el programa grabado en el PIC.
 
Gracias RAM G JES, tenía un problema similar al de leydi, y lo solucione desahabilitando el LVP que dijiste, lo que no me queda claro es porque en proteus funcionaba perfectamente y como puedo modificar directamente en el codigo fuente esta bandera. De nuevo gracias
 
Puedes deshabilitar el LVP con los fuses del micro, para ello puedes:

1. Importar el hex con MPLAB y modificar el fuse y luego exportar.

o bien
2. Modificar el código fuente y luego recompilar.

En ambos casos se debe reprogramar el pic.
 
diculpen, tengo un problema similar porque el pic no hace nada despues de quemarlo, le configure el cristal hs y uso un cristal de dos pines con 2 capacitores a tierra, pero en el quemador uso un cristal cuadrado, ambos cristales son de 20Mhz, lo raro es que uno me funcionaba en una targeta de mikroelektronika pero al probarlo solo con unos leds no me funciono,

todaslas patitas tienen un voltaje de mas o menos .40 voltios, tengo la resistencio de pull up en el master clear y conectada Vdd y Vss a la fuente de 5 voltios, si me podrian alludar les agradezco, tengo que entregar proyecto y el pic no da señales de estar trabajando.
 
una pegunta... yo estoy haciendo un cto que controla una alarma atravez de una clave, con un teclado y un lcd. Mi principal problema es que todo lo que simulo en proteus me sale al reves en el protoboard. por ejemplo si yo he dicho por programa que al concetar uno logico al pic ra6 la alarma se debe prender, esta se prende conectandole un cero logico. Cualquier ayuda bien recibida gracias.
 
compadres tengo un problema con el pic 16f877a... al montarlo en el programador me aparece todo ok..
pero cuando voy ala cto no me funciona nada... he revisado el cto varias vexes, con varios micros lo vuelvo a programar y nada.. pero cuando programao el 16f628 funciona ala perfeccion..
lo probe con 2 programadores y nada.. no funciona
el programa es pickit 2.6
agradesco su colaboracio
gracias
 
Buenas, Soy un estudiante de electronica y es primera ves que utilizo los pics, ya vi la teoria y una ves compiladas las instrucciones en MPLAB en lenguaje Asm, y probado el codigo ( Todo funciona perfecto en el simulador ) me dirijo a grabarlo, con unos tutoriales aprendi a grabarlo, pero a pesar de que me dice que fue programado exitosamente, y que al verificarlo me dice que todo esta bien ( por puerto serial ) al colocarlo en la protoboard no hace nada, ni enciende, tengo el MCLR en alto, ambas alimentaciones bien, y mis leds conectados a los puertos que son, los puertos A y E estan como analogicos, no los utilicé, muchas gracias de antemano. aprecio cualquier ayuda. Solo quiero que funcione, ya lo revise por el programador y no esta quemado ni dañado segun el mplab.
 
¿Agregaste la palabra de configuración en el código?
Algo así como esto...
Código:
    include    <p16f877a.inc>
    __Config    _XT_OSC & _PWRTE_ON & _WDTE_OFF & _LVP_OFF
Es importante que lo hagas, ya que el PIC puede ser grabado con una configuración no adecuada.
 
Hola amigos del Foros de electrónica, tengo un inconveniente con la configuración de un código para grabar mi pic.
La vez pasada hicimos con un amigo un contador de 4 dígitos en displays de 7 segmentos y a la hora que grabamos el pic y encendíamos el contador (en físico osea en plaquita) nos salia la cuenta en 255, y recuerdo que grabamos el pic cambiando el estado de estos dígitos FFF en winpic x 00 00 (código) para que cuando encendamos el contador nos salga en 00, pero ahora tengo el mismo problema con una programación con pic 16f877a, mis variables son:

fase_1 var byte
fase_2 var byte

fase_1=0
fase_2=0

y cuando grabo mi pic a la hora de probarlo en la pantalla de lcd me sale 255, la verdad es que no se porque mi amigo que ya no lo veo dicho sea de paso, cambiaba las FF FF x 00 00,

amigos del Foro la verdad deseo que me orientaran un poco y si es posible enviarme a una pagina o dame infomacion para poder amparme un poco mas de este secreto, le agradezco de antemano.

Ah si pudieran enviarme un material sobre interrpciones; Incont, adcon, tmo, option_reg, en pic basic pro, poruqe eh buscado mucho en este foro pero no eh encontrado mucho.

Muchas Gracias
 

Adjuntos

  • imagen.rar
    1.5 MB · Visitas: 14
La vez pasada hicimos con un amigo un contador de 4 dígitos en displays de 7 segmentos y a la hora que grabamos el pic y encendíamos el contador (en físico osea en plaquita) nos salia la cuenta en 255, y recuerdo que grabamos el pic cambiando el estado de estos dígitos FFF en winpic x 00 00 (código) para que cuando encendamos el contador nos salga en 00, pero ahora tengo el mismo problema con una programación con pic 16f877a
Lo mejor es que adjuntes el programa, ya que no es necesario que tengas que modificar el código hexadecimal.
Ah, si pudieran enviarme un material sobre interrupciones; Intcon, adcon, tmr0, option_reg, en pic basic pro, porque he buscado mucho en este foro pero no he encontrado mucho.
Es complicado sugerirte algo, porque su uso no es genérico.

Saludos.
 
Hola a todo acudo a ustedes ya que e leído unos manuales de manejo de los pines por separados en un pic, por ejemplo el 16f877a y al pareces no comprendo su funcionamiento
Ejemplo yo estoy usando el puerto B para el manejo de un LCD 16x2 que hasta ahora funciona todo bien pero el pin B0(cero) esta sin usar ,entonses quiero usar ese pin B0 para encender un led cuando se cumple un candicion dentro del programa. Pero el pinB0 hace lo que le da la gana yo le digo output_high(PINB0) y no responde a esta intención,le e manejado la dirección según los manuales con el TRISB y no e podido.
Yo estoy editando en C CCS y les agradesco que me aclaren como manejar este aunto de pines por separado
 
el pinB0 hace lo que le da la gana, yo le digo output_high(PINB0) y no responde a esta intención, le he manejado la dirección según los manuales con el TRISB y no he podido.
Yo estoy editando en C CCS y les agradezco que me aclaren como manejar este asunto de pines por separado
Pues no debes tener problema, el pin RB0 no es un pin con ADC y que esa pudiera ser la causa de que no responda, ese pin es el de interrupción, y por defecto se encuentra deshabilitada la interrupción por RB0.
Al usar la instrucción output_high(PIN_B0); no se necesita configurar ese pin como salida, esa instrucción lo hace automáticamente aunque por defecto los pines estén configurados como entradas y convierte al pin como salida estableciendo un 1 lógico.

Debes tener algún problema de montaje o configuración y es mejor que muestres tu programa para poder determinar la causa del problema.

Saludos.
 
Hola D@rkbytes tengo que comentarte que me confundí y dije que el puerto en este caso B era usado por un LDC mas no es así, esta siendo usada por un teclado, como lo muestra la imagen.
Este puerto (B) está configurado como lo dice la librería de C CCS para manejar un teclado.
Como bien me indicas el puerto queda deshabilitado pero cuando trato de ponerlo en High el pin (B0) no lo mantiene. Me di cuenta que por ejemplo si yo pongo la intrusión Output_high(Pin_B0); y después le pongo un delay_ms(5000); se mantiene por ese tiempo y luego se deshabilita
Lo que yo quiero hacer con el pin (B0) que puse como ejemplo, es poderlo manejar en alto o bajo a mi parecer y por eso busque manuales que me ayuden con la direcciones TRISX que es donde pienso que estoy fallando. Y es por eso que acudo a ustedes para que me aclaren este punto o de no ser este el punto que afecta me ayuden a aclara el misterio.

configuración en el programa
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
set_tris_a(0x1F);
setup_psp(PSP_DISABLED);
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_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
port_b_pullups(true);
lcd_init();
kbd_init();
//////////////////////////////////
librerías

#include <LCD.C>
#include <KBD.C>
#include <string.h>
#use fast_io(a)
libreria confi.png
Pin_b.png
 
Atrás
Arriba