Funciona en el simulador, pero al pasarlo al PIC16F873A no. ¿Qué puede ser?

#1
Buen dia

Veran estoy intentando desarrollar un proyecto con un pic para este caso el PIC16F873A, y he simulado un programita sencillo en el mplab, solamente para hacer destellar un led conectado B0, y en mplab no hay ningun problema, pero cuando lo llevo a lo real, el circuito sólo funciona si tengo mi mano cerca, es como si le hiciera falta una tierra.

Pero me parece que el plano esta bien, les agradezco cualquier colaboracion, para ver si puedo solucionar este problema, adjunto el plano de como lo estoy conectando.

MUCHAS GRACIAS
 

Adjuntos

#2
Asegúrate que la resistencia entre V+ y el MCLR del pic esté bien, revisa que la pata del MCLR reciba V+; lo mismo va para el cristal y los capacitores, revisa que todo esté bien conectado.
Luego de eso, continua el problema?... sube tu código para ver como está.

saludos.
 
#3
Hola, he revisado todo lo que me has sugerido y todo esta correctamente, por eso adjunto el codigo que estoy usando, del que a proposito me gustaria mejorar la manera en la que se hace la espera usando un temporizador o algo asi por si alguno tiene una sugerencia se lo agradeceria mucho.

Dejo pues adjunto mi codigo, y muchas gracias a todos.
 

Adjuntos

#4
El código y configuración van bien, dime de que velocidad es tu cristal? ya que el destello del LED oscila entre 6.8ms (milisegundos) aproximadamente; e usado uno de 4Mhz y me da ese valor.
Sigo creyendo que es algo del hardware que usas.

Para generar tiempos largos tienes que saber a que velocidad se ejecuta la instrucción y de alli hacer los bucles, una herramienta para eso es el PicDel: Retardo básico para PIC, PicDel.
Sobre los timer de los PIC, hay info en el foro: Usar el TIMER del PIC

saludos
 
#5
Hola tengo una pregunta de GLCD, yo estoy usando elGLCD jhd12864e, y con el pic 16f877a me funciona de maravilla sea de 4Mhz o 20 Mhz el cristal, pero cuando uso el 18f452 a 20mhz la imagen me aparece comida, como si algunos pixeles no se activan, pero esto no sucede a 4 Mhz, por favor expliquenme lo que esta pasando, mi programacion es en CCS
 
#6
Hola tengo una pregunta de GLCD, yo estoy usando elGLCD jhd12864e, y con el pic 16f877a me funciona de maravilla sea de 4Mhz o 20 Mhz el cristal, pero cuando uso el 18f452 a 20mhz la imagen me aparece comida, como si algunos pixeles no se activan, pero esto no sucede a 4 Mhz, por favor expliquenme lo que esta pasando, mi programacion es en CCS
Al migrar el código de un PIC a otro es necesario configurar bien los Fuses (especialmente el tipo de oscilador), algunos registros de configuración y tomar en cuenta los pines de I/O... en caso de los 18F estos tienen TRISx, PORTx y LATx para controlar los pines.
Igual, seria bueno que des más detalles de tu problema.

saludos.
 

Cacho

Antiguo tableador
#7
Me traje el tema para "Microcontroladores..." y le cambié el título.
Por favor, usá títuilos descriptivos, que el que tenía era más que muy pobre.

Gracias y saludos.
 
#8
Hola @ecj.
El problema que tienes es de ruido eléctrico.
Para solucionar esto, cambia el condensador de 100uF por uno de 100nF y colócalo lo más cerca de PIC.
Otro item puede ser la fuente usada. Si tiene mucho riple, el PIC se ve afectado. Pon un par de condensadores de 100uF y de 100nF en la salida de la fuente para reducir el riple.

Controla que la masa de los condensadores sea buena y que los mismos condensadores estén en buen estado.
 
#9
Gracias por sus respuestas, ya lo intente y funciono, ahora les quisiera preguntar por otra duda que no se como hacer.

Estuve investigando sobre como se maneja el glcd de controlador ks0108, y se como poner texto con la instruccion glcd_text57(x,y,textptr,size,color), pero esta solo permite poner texto fijo. Lo que necesito colocar la variable de una conversion adc, que varie con el voltaje, pero mo logro mostrar nada, si alguien sabe como mostrar texto cambiante, por favor ayudenme.

Es programa hecho es:

#include <16f877a.h>
#device adc=10
#use delay(clock = 4000000)
#fuses xt,nowdt
#include <hdm64gs12.c>
#include <graphics.c>
#include <stdio.h>
void main(){
int16 q;
char p;
char m1[] = "ADC = ";
char m2[] = "voltaje = ";
char cadena_rpm;

setup_adc_ports(an0_an1_an3);
setup_adc(adc_clock_internal);
for(;;){
set_adc_channel(0);
delay_ms (400);
q = read_adc(); //Lectura de canal 0
p = 5.0 * q /1024.0; //Conversion a Tension
glcd_init(on);
No se que poner aqui, para mostrar p
delay_ms(400);
}
}

Aqui les pongo las includes, por si las necesitan, y gracias por su ayuda.

David Nunez.
 

Adjuntos

#10
Tengo el mismo problema pero no se qUE hacer , al gual qUE no puedo sacar imagenes en el lcd ppr ahora estoy usando el pic 18f4550, la verdad es qUE no se como ni qUE hacer si alguien podria ayudarme en esto. le estaria muy agradecido, porqUE ya estuve varias semanas en Esto....


Les agradezco dE antemano....
 
Última edición por un moderador:

Cacho

Antiguo tableador
#11
Escribí en el foro como escribís al programar, cuidándote de poner todas las letras.

Y revisá si no hiciste lo mismo en el programa, porque si te comés las vocales ahí también, no anda nada.

Saludos
 
Arriba