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

Temas similares

24/06/2012 #1


Problemas al encender 1 led con el 18F2550
Buenas amigos les comento q me estoy iniciando con los micros y pues haciendo mi primer programita parpadeo de un led con el 18F2550 ya tuve un problema, como veran estoy tratando de hacer parpadear el led cada medio segundo, en la simulacion en proteus funciona todo bien pero cuando lo programo en el pic y hago funcionar el tiempo ya no es de medio segundo si no mas bien parece que es como de 6seg, me parece raro que en la simulacion funcione bien y cuando lo pruevo no funciona como deberia.
Aca les muestro el programa hecho en c:

Ahh por cierto es necesario colocar el capacitor de 100nF entre Vcc y GND y el otro capacitor de 470nF entre el pin 14 y GND?

#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN
#use delay(clock=20000000)
void main()
{
do
{
output_high(PIN_B0);
delay_ms(500);
output_low(PIN_B0);
delay_ms(500);
}
while (TRUE);
}
25/06/2012 #2


hola, se me ocurren 2 cosas... primero el fuse "CPUDIV1" se escribe todo pegado, sin el espacio en medio, y segundo, es posible que el cristal que estas usando no sea del valor adecuado, revisaste bien que fuera de 20MHz??

---------- Actualizado después de 6 minutos ----------

y si deberías poner los capacitores de las patas 13 y 14 a tierra...
25/06/2012 #3


Gracias por tu observación de "CPUDIV1", pero eso no es el error ya que en el PCWHD esta bien escrito, y acerca del cristal que estoy usando efectivamente es de 20 MHz, vaya esto si esta raro :S

Si alguien tiene alguna sugerencia soy todo oidos.
26/06/2012 #4


amigo el problema es bien sencillo ...lo que pasa es que la instruccion que tu pones delay_ms(250) realiza la demora basandose en la directiva #use delay(clock=20000000) que es la frecuencia de trabajo del CPU.....y realmente tu CPU esta trabajando a 48Mhz (la salida del PLL dividido entre 2)....deberias poner en vez de ""#use delay(clock=20000000)"" esto "#use delay(clock=20000000)"....y veras que funciona el tiempo.....

---------- Actualizado después de 12 minutos ----------

disculpa la instruccion es #use delay(clock=48000000)"
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.